文章標題:PicturesToExe3.51的脫殼
加殼軟體:Asprotect1.2以上(本人估計,不一定準確)
文章重點:輸入表的修復(關於如何尋找入口點等可參考其他脫殼文章)
使用軟體:Trw2000、Import REConstructor v1.2 beta2、procdump162、Uedit32
參考文章:BestFont《用Import REConstructor v1.2 beta2 修復輸入表》
PicturesToExe3.51用Asprotect加的殼,估計是1.2以上版本,用caspr1.012無法脫殼,只能手動。
先用衝擊波2000找入口點,竟然沒有找到,看樣子得全手動了。祭起Trw2000,經過若干小時的艱苦奮戰(有點誇張),終於找到入口點為51133C,停下後用procdump162選“使用實際輸入表”然後dump(full),再修改入口為51133C,到此第一場戰役勝利結束。
接下來就該修復輸入表了,按照《用Import REConstructor v1.2 beta2 修復輸入表》的方法修復,最後發現還有幾個無法解決,分別如下:
偏移 值
1161F8 E3C86C
116320 E3C874
116364 E3C834
1163B4 E3C864
1163BC E3C87C
那麼這些值所指向的地址到底有什麼呢?我們看一下:
0167:00E3C834 MOV EAX,[00E435D8]
0167:00E3C839 RET
(呼叫:00407824 FF2564635100 jmp dword
ptr [00516364])
0167:00E3C864 MOV EAX,[00E435E0]
0167:00E3C869 RET
(呼叫:00407784 FF25B4635100 jmp dword
ptr [005163B4])
0167:00E3C86C MOV EAX,[00E43678]
0167:00E3C871 RET
(呼叫:004012C0 FF25F8615100 jmp dword
ptr [005161F8])
0167:00E3C874 PUSH EBP \
0167:00E3C875 MOV EBP,ESP
|實際什麼都沒幹,
0167:00E3C877 POP EBP
|相當於 ret 04
0167:00E3C878 RET 04 /
(呼叫:004078AC FF2520635100 jmp dword
ptr [00516320])
0167:00E3C87C PUSH EBP \
0167:00E3C87D MOV EBP,ESP
|同上
0167:00E3C87F POP EBP
|
0167:00E3C880 RET 04 /
(呼叫:00407774 FF25BC635100 jmp dword
ptr [005163BC])
先解決最後兩個,我們找到:0040402A C20400 ret 0004,所以只要將上面兩個呼叫處改為:
0167:004078AC E979C7FFFF jmp 0040402A
0167:00407774 E9B1C8FFFF jmp 0040402A
就行了。
再來看前面三個,發現:
[00E435D8]=C000A004
[00E435E0]=FFF9CAB3
[00E43678]=816CD848
而且都是固定不變的,所以可以這樣改:
00407824 B804A000C0 mov eax,
C000A004
00407829 C3
ret
00407784 B8B3CAF9FF mov eax,
FFF9CAB3
00407789 C3
ret
004012C0 B848D86C81 mov eax,
816CD848
004012C5 C3
ret
現在輸入表裡那些無用的垃圾就都沒用了,你可以隨便選一個函式填上去。然後將脫下來的原始檔案先修改一下,再修復輸入表,都做好以後就可以執行了。