【原创】16位的debug调试32位程序的五里雾
;************************************************************************************************************************;作者:zklhp
;Email:zklhp@
;QQ:493165744
;2012.5.8
;版权所有 转载请保持完整
;************************************************************************************************************************
性好道术,能作五里雾 ——后汉书·张楷传
16位调试器 比如debug 是不能调试32位程序的 这个是常识
可是 真的不能调试么
呵呵 不要忘了 32位程序首先是一个16位程序 虽然这个程序的功能比较简单 只不过输出了几句话然后退出 但确实是货真价实的16位程序
所以。。。。
0C67:0000 0E PUSH CS
0C67:0001 1F POP DS
0C67:0002 BA0E00 MOV DX,000E
0C67:0005 B409 MOV AH,09
0C67:0007 CD21 INT 21
0C67:0009 B8014C MOV AX,4C01
0C67:000C CD21 INT 21
0C67:000E 54 PUSH SP
0C67:000F 68 DB 68
0C67:0010 69 DB 69
0C67:0011 7320 JNB 0033
0C67:0013 7072 JO 0087
0C67:0015 6F DB 6F
0C67:0016 67 DB 67
0C67:0017 7261 JB 007A
0C67:0019 6D DB 6D
0C67:001A 206361 AND [BP+DI+61],AH
0C67:001D 6E DB 6E
0C67:001E 6E DB 6E
0C67:001F 6F DB 6F
这样的代码 可不仅仅是输出两句话就结束了这么简单 因为这根本不是16位程序 只不过是一个32位程序的开头
这样看或许明白一点
0C67:0000 0E 1F BA 0E 00 B4 09 CD-21 B8 01 4C CD 21 54 68 ........!..L.!Th
0C67:0010 69 73 20 70 72 6F 67 72-61 6D 20 63 61 6E 6E 6F is program canno
0C67:0020 74 20 62 65 20 72 75 6E-20 69 6E 20 44 4F 53 20 t be run in DOS
0C67:0030 6D 6F 64 65 2E 0D 0D 0A-24 00 00 00 00 00 00 00 mode....$.......
0C67:0040 1D ED D5 EA 59 8C BB B9-59 8C BB B9 59 8C BB B9 ....Y...Y...Y...
0C67:0050 9A 83 B4 B9 5F 8C BB B9-59 8C BA B9 80 8C BB B9 ...._...Y.......
0C67:0060 9A 83 E6 B9 5E 8C BB B9-E6 83 DB B9 5B 8C BB B9 ....^.......[...
0C67:0070 9A 83 E5 B9 58 8C BB B9-9A 83 E4 B9 6D 8C BB B9 ....X.......m...
可惜啊 一上来我也没看明白 这就是五里雾罢。。
zklhp
2012 5 8