主題: 怎樣脫用 Aspack2.12 加的殼(適合初學者)
時間:2002/01/12 10:09pm
作者:一塊三毛錢
今天上網下載了個 Aspack2.12,不知它的加殼有沒有變化,讓我們來看看。
試驗物件是 Windows 自帶的記事本程式,壓縮前 52KB,壓縮後 32.5KB。好,開工了。
先用 fi 檢查殼的型別,報告顯示 PE Win GUI *UNKNOWN*,沒關係,自己加的殼還用懷疑嗎。
接著用 Trw2000 載入程式,Load,程式被中斷在如下程式碼處
0167:0040D001 60 PUSHAD
0167:0040D002 E803000000 CALL 0040D00A
按 F8 跟進去(這時如果按 F10 的話程式會直接執行)
0167:0040D00A 5D POP
EBP
0167:0040D00B 45 INC
EBP
0167:0040D00C 55 PUSH
EBP
0167:0040D00D C3 RET
按一下 F10 看到下面的程式碼
0167:0040D008 EB04 JMP
0040D00E
按一下 F10 看到下面的程式碼
0167:0040D00E E801000000 CALL 0040D014
按 F8 跟進去,來到下面
0167:0040D014 5D POP
EBP
0167:0040D015 BBEDFFFFFF MOV EBX,FFFFFFED
0167:0040D01A 03DD ADD
EBX,EBP
0167:0040D01C 81EB00D00000 SUB EBX,0000D000
0167:0040D022 83BD2204000000 CMP DWord Ptr [EBP+00000422],00000000
0167:0040D029 899D22040000 MOV [EBP+00000422],EBX
0167:0040D02F 0F8565030000 JNZ 0040D39A
(NO JUMP) <--- 注意,下斷點 bpx 0040D39A
0167:0040D035 8D852E040000 LEA EAX,[EBP+0000042E]
0167:0040D03B 50 PUSH
EAX
0167:0040D03C FF954D0F0000 CALL Near [`KERNEL32!GetModuleHandleA`]
0167:0040D042 898526040000 MOV [EBP+00000426],EAX
0167:0040D048 8BF8 MOV
EDI,EAX
0167:0040D04A 8D5D5E LEA
EBX,[EBP+5E]
0167:0040D04D 53 PUSH
EBX
0167:0040D04E 50 PUSH
EAX
0167:0040D04F FF95490F0000 CALL Near [`KERNEL32!GetProcAddress`]
下斷點後,按 F5,程式來到下面的程式碼處
0167:0040D39A B8CC100000 MOV EAX,000010CC
0167:0040D39F 50 PUSH
EAX
0167:0040D3A0 038522040000 ADD EAX,[EBP+00000422]
0167:0040D3A6 59 POP
ECX
0167:0040D3A7 0BC9 OR
ECX,ECX
0167:0040D3A9 8985A8030000 MOV [EBP+000003A8],EAX
0167:0040D3AF 61 POPAD
<--- 關鍵字,入口點就在附近
0167:0040D3B0 7508 JNZ
0040D3BA
0167:0040D3B2 B801000000 MOV EAX,00000001
0167:0040D3B7 C20C00 RET
000C
0167:0040D3BA 6800000000 PUSH 00000000
0167:0040D3BF C3 RET
<--- 從這返回後我們就來到程式的真正入口點
下面就是程式的真正入口點
0167:004010CC 55 PUSH
EBP
0167:004010CD 8BEC MOV
EBP,ESP
0167:004010CF 83EC44 SUB
ESP,00000044
0167:004010D2 56 PUSH
ESI
0167:004010D3 FF15E4634000 CALL Near [`KERNEL32!GetCommandLineA`]
返回到真正入口點後,下指令 suspend 掛起偵錯程式,開啟 PEditor,按下 tasks 按鈕,在列表中選中
你的程式,點右鍵,選擇選單命令 dump(full) 把程式儲存到檔案中,儲存後殺掉程式。
上面的方法對其它的程式也一樣適用(我測試了好幾個程式,它們在偵錯程式所顯示的程式碼形式都差不多
),用這種方法脫殼後的程式可以直接執行。
附上 Procdump 的 Script:
[Aspack2.12]
L1=OBJR
L2=LOOK 61,75
L3=BP
L4=STEP
OPTL1=00000000
OPTL2=01010001
OPTL3=01010001
OPTL4=00030000
OPTL5=00000000
感謝你閱讀這篇文章
2001.1.12 一塊三毛錢