|
原帖由 dvd008 于 2012-2-20 07:53 发表
已经测试.
现在,想问一个关于指定扇区写入(清除)的功能, 可能已经有了,我不知道.
1. 清除保留扇区(就是写入0) ,通常是MBR后面, 第一分区前面. 默认63扇区前面, 或者1M前面.
个别病毒(鬼影病毒) 隐藏这里 ...
现在,想问一个关于指定扇区写入(清除)的功能, 可能已经有了,我不知道.
Q1. 清除保留扇区(就是写入0) ,通常是MBR后面, 第一分区前面. 默认63扇区前面, 或者1M前面.
个别病毒(鬼影病毒) 隐藏这里,清除后,重写MBR ,即可恢复
另外,一些还原类工具,也有数据在这里.
这个既不破坏MBR,分区表,也不破坏各分区数据.
A:
ENVI ZERO=0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
ENVI ZERO=%ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO%
ENVI ZERO=%ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO%
//512 0x00
//磁盘0 写1-62扇区 //编号从0开始!!!
ENVI I=1
LOOP #%I%<=62, TEAM PUTF \\.\PhysicalDrive0,%I%S,%ZERO%| CALC I=%I% + 1
//磁盘1 写1-62扇区
ENVI I=1
LOOP #%I%<=62, TEAM PUTF \\.\PhysicalDrive1,%I%S,%ZERO%| CALC I=%I% + 1
Q2. 指定扇区填0, 如: 35 扇区(仅35扇区), 或者35---79 扇区(包括35,79, 和其间的扇区)
这个功能,如果麻烦,可以不要.
A:
ENVI ZERO=0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
ENVI ZERO=%ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO%
ENVI ZERO=%ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO%
//512 0x00
//磁盘0 写35---79 扇区 //编号从0开始!!!
ENVI I=35
LOOP #%I%<=79, TEAM PUTF \\.\PhysicalDrive0,%I%S,%ZERO%| CALC I=%I% + 1
单个扇区: 磁盘0 35 扇区(仅35扇区), //编号从0开始!!! 否则 CALC I=35 - 1
PUTF \\.\PhysicalDrive0,35S,%ZERO%
// 些成函数调用。
// 参数1: 无
_SUB INITZERO
ENVI ZERO=0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
ENVI ZERO=%ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO%
ENVI ZERO=%ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO% %ZERO%
//512 0x00
_END
// 参数1: 扇区号(编号从1开始)
// 参数2: 磁盘号 ,默认0
// 需要初始化 ZERO. CALL INITZERO
_SUB CLEAR_SECT
ENVI isect=%1
ENVI idisk=%2
FIND $%isect%=,!
{
FIND $%idisk%=, ENVI idisk=0 //默认磁盘0
CALC isect=%isect% - 1 //0-BASE
PUTF \\.\PhysicalDrive%idisk%,%isect%S,%ZERO%
}
_END
[ 本帖最后由 2012abc19701 于 2012-2-20 12:59 编辑 ] |
|