一种奇怪的使用debug方式,写到最后觉得后果很可怕[bsnhk原创]

来源:互联网 发布:淘宝销售属性 编辑:程序博客网 时间:2024/04/30 06:36

一种奇怪的使用debug方式,写到最后觉得后果很可怕
2010-8-6   22:21     bsnhk原创

 

      一、为了实验方便,在系统盘的根目录创建一个空白的文本文件,并命名为t.txt。
      二、打开DOS命令行,进行如下操作:
      cd /     (跳到根目录)
      debug < t.txt
      三、上面最后一个命令执行后,会打开一个debug,但你会发现它对键盘输入没有任何反应。不要担心,
这个debug还没死掉,只是它的输入“设备”被定向到文件文件t.txt了。这里将一个文件称为“设备”可能有很多人不习惯不理解,其实在DOS时代,“设备”可以是打印机、显示器、文件,而定向符“<”是输入,“>”是输出。
      将debug的输入定向到t.txt后,我们就只能在t.txt中输入了,每一次输入结束后都要保存,这样,所输
入的内容才真正输入到debug中;要回车,在t.txt回车后也要保存才在debug中生效。
      注意:在t.txt中输入的内容如果已经保存过,就不要删除它,你可以将t.txt想象成一个DOS命令行或
debug环境,前面已执行过的命令你删除不了。如果是在t.txt中删除之前保存过的内容,那文件指针会向前移,所移过的位置重新输入的内容,debug都不接受。这里讲得不好,下面来个例子说明:
      在t.txt中输入如下三个命令:
      d
      d
      d
      (最后一个回车)
      然后保存以上输入,一保存,立即可在debug窗口中看到效果,显示三栏内存信息。
      现在在t.txt中将以上三个d中的最后两个删除(保留第一个d后的回车):
      d
      (第一个d后的回车)
      然后保存,我们在debug窗口中看不到任何效果,现在输一个r然后回车:
      d
      r
      (输入r后的回车)
      然后保存,在debug窗口中仍看不到有任何动静,再输入一个r然后回车:
      d
      r
      r
      (第二个r后的回车)
      然后保存,还是看不到任何动静,再输入一个r然后回车:
      d
      r
      r
      r
      (第三个r后的回车)
      然后保存,这次终于看到动静了。
      理解了吧,在t.txt中保存过的内容都不要删除,你就将它当做一个命令行来使用,一行一行地输入,要
执行命令就敲回车,不要忘记保存,不保存不会生效了。
      四、你可以用这种方式来使用debug中任何功能,包括直接在内存中输入机器码程序并运行它,也可以进
入a命令汇编出你的程序并执行它。
      五、如果你要退出这个debug,在t.txt中输入一个q然后回车,然后保存就可以了。
      六、最后要提到的是,用这种方式执行你的程序,杀毒软件是不会启动检查机制的,因为t.txt本身是文
本文件,你在t.txt中输入的内容是字符串而不是机器码(只不过是机器码的字面字符形式,),杀毒软件无法处理字符串的内容。
      如果你有一个exe文件,你可以先用debug将它导入到内存中,然后复制出它在内存中的内容(十六进制的
字面字符形式)到一个文本文件中,经过精心的安排,用上面的方法来执行它,那么是不会触动杀毒软件的检查的。