⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 db10.htm

📁 debug编程的教程
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0050)file://\\Server\pub\Hacker\Documents\JM\jm1-01.txt -->
<HTML><HEAD>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2614.3500" name=GENERATOR></HEAD>
<BODY><XMP>STEP 1:
        用 DEBUG 或 SYMDEB 载入 XPREAD.EXE

C:\XPRESS>DEBUG XPREAD.EXE
-U
241C:0012 06            PUSH    ES   <-- LZEXE 的开头
241C:0013 0E            PUSH    CS
241C:0014 1F            POP     DS
241C:0015 8B0E0C00      MOV     CX,[000C]
241C:0019 8BF1          MOV     SI,CX
241C:001B 4E            DEC     SI
241C:001C 89F7          MOV     DI,SI
241C:001E 8CDB          MOV     BX,DS
241C:0020 031E0A00      ADD     BX,[000A]
241C:0024 8EC3          MOV     ES,BX
241C:0026 B400          MOV     AH,00
241C:0028 31ED          XOR     BP,BP
241C:002A FD            STD
241C:002B AC            LODSB
241C:002C 01C5          ADD     BP,AX
241C:002E AA            STOSB
241C:002F E2FA          LOOP    002B
241C:0031 8B160E00      MOV     DX,[000E]
-U
241C:0035 8AC2          MOV     AL,DL
241C:0037 29C5          SUB     BP,AX
241C:0039 8AC6          MOV     AL,DH
241C:003B 29C5          SUB     BP,AX
241C:003D 39D5          CMP     BP,DX   <--- 检查 CRC, 用意在防止追踪
241C:003F 740C          JZ      004D
241C:0041 BA9101        MOV     DX,0191
241C:0044 B409          MOV     AH,09
241C:0046 CD21          INT     21241C:0048 B8FF4C        MOV     AX,4CFF
241C:004B CD21          INT     21
241C:004D 53            PUSH    BX
241C:004E B85300        MOV     AX,0053
241C:0051 50            PUSH    AX
241C:0052 CB            RETF            <--- 解压缩程式进入点
241C:0053 2E            CS:
241C:0054 8B2E0800      MOV     BP,[0008]
-G3F

AX=00FE  BX=3C50  CX=0000  DX=FE0D  SP=007E  BP=FE65  SI=FFFF  DI=FFFF
DS=241C  ES=3C50  SS=3E62  CS=241C  IP=003F   NV DN EI PL NZ AC PO NC
241C:003F 740C          JZ      004D
-RF
NV DN EI PL NZ AC PO NC  -ZR
-G52

AX=0053  BX=3C50  CX=0000  DX=FE0D  SP=007A  BP=FE65  SI=FFFF  DI=FFFF
DS=241C  ES=3C50  SS=3E62  CS=241C  IP=0052   NV DN EI PL ZR AC PO NC
241C:0052 CB            RETF
-T

AX=0053  BX=3C50  CX=0000  DX=FE0D  SP=007E  BP=FE65  SI=FFFF  DI=FFFF
DS=241C  ES=3C50  SS=3E62  CS=3C50  IP=0053   NV DN EI PL ZR AC PO NC
3C50:0053 2E            CS:
3C50:0054 8B2E0800      MOV     BP,[0008]
CS:0008=17C7
-U16F
3C50:016F 8BC3          MOV     AX,BX
3C50:0171 8B3E0400      MOV     DI,[0004]
3C50:0175 8B360600      MOV     SI,[0006]
3C50:0179 01C6          ADD     SI,AX
3C50:017B 01060200      ADD     [0002],AX
3C50:017F 2D1000        SUB     AX,0010
3C50:0182 8ED8          MOV     DS,AX
3C50:0184 8EC0          MOV     ES,AX
3C50:0186 31DB          XOR     BX,BX
3C50:0188 FA            CLI
3C50:0189 8ED6          MOV     SS,SI
3C50:018B 8BE7          MOV     SP,DI
3C50:018D FB            STI
3C50:018E 2E            CS:                 <--- 解压缩完毕, 准备跳到原始程式
3C50:018F FF2F          JMP     FAR [BX]         开头.
-G18E

AX=0C45  BX=0000  CX=0000  DX=F000  SP=4E20  BP=0000  SI=3FCD  DI=4E20
DS=0C45  ES=0C45  SS=3FCD  CS=3C50  IP=018E   NV UP EI PL ZR NA PE NC
3C50:018E 2E            CS:
3C50:018F FF2F          JMP     FAR [BX]
CS:0000=0034
-T

AX=0C45  BX=0000  CX=0000  DX=F000  SP=4E20  BP=0000  SI=3FCD  DI=4E20
DS=0C45  ES=0C45  SS=3FCD  CS=0C55  IP=0034   NV UP EI PL ZR NA PE NC
0C55:0034 9A00006B36    CALL    366B:0000   <--- 原始程式开头
-U
0C55:0034 9A00006B36    CALL    366B:0000
0C55:0039 9A1A0BF033    CALL    33F0:0B1A
0C55:003E 9ABA066B31    CALL    316B:06BA
0C55:0043 9AC2010531    CALL    3105:01C2
0C55:0048 9A0D28332E    CALL    2E33:280D
8C55:004D 9A940A892D    CALL    2D89:0A94
0C55:0052 9AEE248824    CALL    2488:24EE
-R
AX=0C45  BX=0000  CX=0000  DX=F000  SP=4E20  BP=0000  SI=3FCD  DI=4E20
DS=0C45  ES=0C45  SS=3FCD  CS=0C55  IP=0034   NV UP EI PL ZR NA PE NC
0C55:0034 9A00006B36    CALL    366B:0000

追踪到程式解压缩之後, 以 (SS*10H+SP) - (DS*10H+100H) 算出档案长度或自己猜一个
较大的长度并存档, 并且记下 CS,IP,SS,SP,DS 等暂存器的值 !!
例如此程式:
             (3FCD*10H+4E20) - (0C45*10H+100H) = 385A0 (HEX)
                                                 ^^^^^ 此长度记下来, 等一下还
                                                       要用一次.
-RBX      <--- 将 HIGH WORD 填入 BX
BX 0000
:3

-RCX      <--- 将 LOW WORD  填入 CX
CX 0000
:85A0

-N PASS1  <--- EXE 档不能直接写入, 所以另更名为 PASS1

-W DS:100   <--- PSP 底部紧接著程式码, 此时 DS 指向 PSP 开头, PSP 占 100H
                 Bytes, 所以从 DS:100 开始写起

Writing 385A0 bytes  <--- 共写入的 Bytes

-Q   <--- 跳出 DEBUG

_____________________________________________________________________________
STEP 2:
        随便执行一个常驻程式(或是执行比 DEBUG 大的除错程式, 如 SYMDEB), 用意在
改变记忆体环境, 如此 EXESHAPE 才可找出相异之处, 再重覆 STEP 1, 但此次只须存档.
(Registered Only), 若您手中的 EXESHAPE 为 Non-Registered 则需再记下 CS 的值.

C:\XPRESS>PAGEMAKE   <--- 笔者写的画面辅助功*
, 可用於 BBS,
修改程式码等,您刚看
                          到的 DEBUG 画面就是它抓下来的, 它是一个常驻程式

C:\XPRESS>DEBUG XPREAD.EXE
-G3F
-RF
NV DN EI PL NZ AC PO NC  -ZR
-G52
-T
-G18E
-T
AX=0DF4  BX=0000  CX=0000  DX=F000  SP=4E20  BP=0000  SI=417C  DI=4E20
DS=0DF4  ES=0DF4  SS=417C  CS=0E04  IP=0034   NV UP EI PL ZR NA PE NC
0E04:0034 9A00001A38    CALL    381A:0000

此时将刚刚记下来的档案长度再填入 BX:CX, 若您的 EXESHAPE 为注册版就不需要
再记任何暂存器的值, 若为未注册版则需再记下 CS 的值.



</XMP></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -