Chap 13 ExeWrite 簡介 (續1)
---------------------------------------------------------------------
以下是Crazy Club Key追蹤過程
---------------------------------------------------------------------
c:\>symdeb opwolf.exe (用修改過的SYMDEB載入保護程式主檔)
Microsoft (R) Symbolic Debug Utility Version 4.00
Copyright (C) Microsoft Corp 1984, 1985. All rights reserved.
Processor is [80286]
-g 5b9
AX=263E BX=0000 CX=0440 DX=0000 SP=0202 BP=0183 SI=0000 DI=0000
DS=3E6E ES=3E6E SS=459E CS=459E IP=05B9 NV UP EI PL NZ NA PO NC
459E:05B9 03467F ADD AX,[BP+ 7F ] ;
-u ; 將 SS:202 到 SS:642
459E:05BC 45 INC BP ; 的程式碼相加 ,結果放
459E:05BD E2FA LOOP 05B9 ; 到 AX (CHKSUM)
-g 5bf
AX=C8B4 BX=0000 CX=0000 DX=0000 SP=0202 BP= 05C 3 SI=0000 DI=0000
DS= 23A 4 ES= 23A 4 SS=2AD4 CS=2AD4 IP=05BF NV UP EI PL NZ NA PE NC
2AD4:05BF FA CLI
┌───────────────────┐
-rax │因為除錯程式會在中斷點寫下 "CC" 碼 , │
AX C8B4 │所以會造成CHKSUM不正確 ,我們要改回來 │
:f6e2 └───────────────────┘
-d 0: 0 f
0000:0000 8A 10 16 01 F 4 06 70 00-16 00 F 6 09 AB 2C A3 1A ....t.p...v.+,#.
-e 0:204 ab 2c a3 1a ; 將INT_3拷貝一份至INT_81
-u 5ae
2AD4:05AE 06 PUSH ES
2AD4:05AF 55 PUSH BP
2AD4:05B0 CF IRET
-a 5ae
2AD4:05AE int 81 ; 修改程式以變取得控制權
-g
AX=6869 BX= 000C CX=0000 DX=0046 SP=0208 BP=05D6 SI=0000 DI=0597
DS=0000 ES=2AD4 SS=2AD4 CS=2AD4 IP=05AF NV UP EI PL NZ NA PO NC
2AD4:05AF 81CF5D 8C OR DI, 8C 5D
-rip ip-1
-a ip
2AD4:05AE push es
2AD4:05AF push bp
-g 5b0
AX=6869 BX= 000C CX=0000 DX=0046 SP=0204 BP=05D6 SI=0000 DI=0597
DS=0000 ES=2AD4 SS=2AD4 CS=2AD4 IP=05B0 NV UP EI PL NZ NA PO NC
2AD4:05B0 CF IRET ; 返回程式 ,並偷偷打開"T"旗標
; 以後每執行一個指令都會觸動
; 一次 INT_01 中斷
-d ss:sp
2AD4:0200 D6 05 D4 2A -00 01 AB 2C A3 1A 8A 10 V.T*..+,#...
^^^^^返回旗標是開啟"T"旗標
-u 403 (INT_01的解碼程式)
2AD4:0403 FB STI
2AD4:0404 2E8706E903 XCHG AX,CS:[03E9]
2AD4:0409 95 XCHG AX,BP
2AD4: 040A 8B46FE MOV AX,[BP-02]
2AD4:040D D 1C 8 ROR AX,1
2AD4: 040F 314600 XOR [BP+00],AX
2AD4:0412 2BC5 SUB AX,BP
2AD4:0414 314602 XOR [BP+02],AX
2AD4:0417 2E8B2E0402 MOV BP,CS:[0204]
2AD4: 041C 8B46FE MOV AX,[BP-02]
2AD4: 041F D 1C 8 ROR AX,1
2AD4:0421 314600 XOR [BP+00],AX
2AD4:0424 2BC5 SUB AX,BP
2AD4:0426 314602 XOR [BP+02],AX
2AD4:0429 8B4600 MOV AX,[BP+00]
2AD4: 042C 3CCA CMP AL,CA
2AD4:042E 95 XCHG AX,BP
2AD4: 042F 2E8706E903 XCHG AX,CS:[03E9]
2AD4:0434 74C 6 JZ 03FC
2AD4:0436 CF IRET
-d 0: 0 f
0000:0000 16 02 D4 2A 03 04 D4 2A -16 00 F 6 09 AB 2C A3 1A ..T*..T*..v.+,#.
-a 434 ┐
2AD4:0434 jmp 9000 │將解碼程式最後一行指向除錯程式的INT_1
│
-a 9000 │
2AD4:9000 jz 9005 │
2AD4:9002 jmp 1aa3:2cbc │JMP DEBUG INT_01
2AD4:9007 jmp 3fc ┘
-r
AX=6869 BX= 000C CX=0000 DX=0046 SP=0204 BP=05D6 SI=0000 DI=0597
DS=0000 ES=2AD4 SS=2AD4 CS=2AD4 IP=05B0 NV UP EI PL NZ NA PO NC
2AD4:05B0 CF IRET
┌───────────────────────────┐
│上面已將INT_1指向除錯程式 ,所以你可以開始用"T"指令了 │
└───────────────────────────┘
-t
AX=6869 BX= 000C CX=0000 DX=0046 SP= 020A BP=05D6 SI=0000 DI=0597
DS=0000 ES=2AD4 SS=2AD4 CS=2AD4 IP=05D6 NV UP DI PL NZ NA PO NC
2AD4:05D6 FC CLD
-t
AX=6869 BX= 000C CX=0000 DX=0046 SP= 020A BP=89E9 SI=0000 DI=0597
DS=0000 ES=2AD4 SS=2AD4 CS=2AD4 IP=05D7 NV UP DI PL NZ NA PO NC
2AD4:05D7 E989FE


