我想修改debug.exe但是为什么没有成功?

flyingghost 2002-05-29 09:04:32
本菜鸟刚刚学汇编,遇到了问题,高手指点一下迷津!^_^

debug学汇编很有用。但是比较麻烦的是它会检测dos版本号。如果不符合就会提示版本不对,然后退出。所以我想改改它让它在任何dos下都可以使用。我用的是98下带的debug.exe。
我的思路是这样的:
首先,它应该是用int21的30h功能读到dos版本号。于是我把debug.exe反汇编。找到如下代码段:
B4 30 MOV AH,30H
CD 21 INT 21H
3D070A CMP AX,0A07
74 18 JZ 0121
那么它是把AX和0A07比较(98的dos版本号是7),如果相等就跳转。
然后我把
74 18 JZ 0121
改成
EB 18 JMP 0121
无论比较结果如何,直接跳转。

但是似乎不成功。修改后的debug.exe无法正常运行,没有任何提示就退出了!

高手指点一下这是为什么呢?是不是我哪里搞错了?Help Me!
...全文
30 点赞 收藏 20
写回复
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
紫郢剑侠 2002-07-29
DEBUG.EXE都是用EXEPACK 3.69压缩过的.

在<软件报>98年合订本附录中有修改DEBUG.EXE的详细说明.

另外, 微软已前曾经出过一个SYMDEB.EXE, 是专门用来调试程序的,兼容DEBUG命令并有许多扩展, 而且没有对操作系统版本的限制,不论DOS6.X还是WINDOWS 95都能用, 我一直在用它.
回复
jtg98g3 2002-07-28
to xuxiangood(快遍):不可思议,debug里有一条跳转指令,它跳到了堆栈的开头。不知到是怎么回事!?




to neocosmic(不顾一切) :你能不能将那个EXEPACK 3.69发给我!解压缩后的文件还是exe文件吗 ?
回复
nikitar 2002-07-23
d
回复
neocosmic 2002-07-23
另外95/98/2K的DEBUG.EXE的源代码我也有,全是用ASM写的,注释比代码还多
回复
neocosmic 2002-07-23
我来告诉你们原因吧,因为95/98/2K的DEBUG.EXE都是用EXEPACK 3.69压缩过的,所以要解压缩之后才能修改BIN代码,这个东西我在3年前就用过和你同样的想法,并修改成功了,很简单的
回复
xuxiangood 2002-07-23
0000是程序的内部堆栈段
回复
jtg98g3 2002-07-22
是不是debug.exe有一个shell?
我的到的代码开头部分是:
17CA:0100 FB STI
17CA:0101 8BC5 MOV AX,BP
17CA:0103 2E CS:
17CA:0104 FF2F JMP FAR [BX]
17CA:0106 B440 MOV AH,40
17CA:0108 BB0200 MOV BX,0002
17CA:010B B91600 MOV CX,0016
17CA:010E 8CCA MOV DX,CS
17CA:0110 8EDA MOV DS,DX
17CA:0112 BA1C01 MOV DX,011C
17CA:0115 CD21 INT 21
好象没有什么shell啊!
不知到这个shell的入口在什么地方?
回复
jtg98g3 2002-07-22
to flyingghost (游魂) :
我在win98下反汇编debug是得到的代码有很多为:0000的;
这是为什么,?
如下:
17CA:0185 5D POP BP
17CA:0186 1A5D25 SBB BL,[DI+25]
17CA:0189 5D POP BP
17CA:018A 305D00 XOR [DI+00],BL
17CA:018D 0000 ADD [BX+SI],AL
17CA:018F 0000 ADD [BX+SI],AL
17CA:0191 0000 ADD [BX+SI],AL
17CA:0193 0000 ADD [BX+SI],AL
17CA:0195 0000 ADD [BX+SI],AL
17CA:0197 0000 ADD [BX+SI],AL
17CA:0199 0000 ADD [BX+SI],AL
17CA:019B 0000 ADD [BX+SI],AL
17CA:019D 0000 ADD [BX+SI],AL
17CA:019F 0000 ADD [BX+SI],AL
17CA:01A1 0000 ADD [BX+SI],AL
17CA:01A3 0000 ADD [BX+SI],AL
17CA:01A5 0000 ADD [BX+SI],AL
17CA:01A7 0000 ADD [BX+SI],AL
17CA:01A9 0001 ADD [BX+DI],AL
17CA:01AB 298803F7 SUB [BX+SI+F703],CX
17CA:01AF 57 PUSH DI
回复
huzhangyou 2002-07-18
好东西
呵呵
要是该成功了
把代码贴出来大家看看哦
回复
daehappy 2002-07-07
up!gz!
回复
FranklinBHU 2002-06-15
哦,这个值得up一下。
回复
little_sheep 2002-06-14
我直接修改了XP下的DEBUG.EXE,先把它COPY一份,扩展名不用EXE就可以,再用DEBUG.EXE修改它,不过它不是正确跳转,而是错误跳转,我用了两个NOP(90H)换了JNZ指令。XP下可以用,其它系统下没用过,不知效果。
回复
flyingghost 2002-06-01
呵呵,多谢大家了。
我修改后的debug在dos、95、98下都可以使用(原材料用的是98se下的)。但是win2000和xp下的不行。没有提示就退出了。
TO: little_sheep(小羊)
我反编译用debug,被修改的是debug1.exe(备份),而且修改时用的是Ultraedit啊!

回复
wowocock 2002-05-31
当然不行,你这样把程序都破坏了,JNZ和JMP指令机器码长短不用,修改以后该处以后的指令就都不对了,建议你用HIEW修改,然后自己对齐相关的地址。
回复
You can using this software by follow address:
http://www.csdn.net/cnshare/soft/11/11943.shtm
回复
ljl_7880 2002-05-31
GZ。
UP。
回复
awinder 2002-05-31
用16进制编辑器修改。
回复
little_sheep 2002-05-31
先将debug.exe改名为debug,然后对debug文件进行改写,即查找b4 30 cd 21,找到后看一下是不是要改的指令,改好后重命名为debug.exe,就应该没问题了。
你如果不改名用debug.exe修改的话,可能它把前100H个字节的PSP丢掉了!
回复
XIAOBUDIAN2 2002-05-30
hi:
好的想法,我支持你的,我也遇到过你的问题,我可以和你好好的谈谈:
我也可以试试写一下!然后请教!
小树

xuntree008@163.com

回复
ckc 2002-05-30
也许它还有其它的地方判断版本。
我不知道你为什么要改debug。每个版本的dos都有自己的debug,而且用法都差不太多。
回复
发动态
发帖子
汇编语言
创建于2007-08-27

2.0w+

社区成员

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
申请成为版主
社区公告
暂无公告