标 题:ASProtect V1.2之脫殼簡述--C-pen (1千字)
发信人:1212
时 间:2001-2-13 9:52:09
详细信息:
ASProtect V1.2和V1.1C其實大同小異.我們來脫它.以下我只列重點,相信大家均能手動脫殼.
(1)Import Table:使用最新版的Imp_list V.1.13(2001/01/06)來重建,
不過你如果選Auto-detect
Import是無法重建的,估計
ASProtect做了修正去妨它,沒關係它妨新版卻不妨舊版
用舊版去重建的目的,主要是去找.idata
Section它得
出的Import Table並不能用,那是因為ASProtect
V1.2
對Import Table又做了新的處理,只能用Imp_list
1.13來重建,當然你也可以自己去程式中找.idata
Section,反正ASProtect的Import
Table編碼處都長
的一樣.在Imp_list V1.13中不選Auto-detect
Import,RVA=66000,SIZE=2000,Level=1,如此即能重
建,再不然進入程式跟到編碼結束時下a
eip/jmp eip
再用Imp_list來重建.
(2)Hook:脫殼後的程式還是不能用因為ASProtect有留下Hook,如何移除它
呢?那你得感謝ASProtect,因為它完善的SEH系統會告訴你,重開
始的SEH MessageBox中得知它留下的Hook位址為00C1C6D8,用
HexWorkshop打開已脫殼的文件,查找D8C6C100你會發現在RVA
64FAC,64FB0中各有一個,用W32Dasm去反組譯,查找0064FAC,你會
發現有如下的程式
CALL [0064FAC]
等價於
CALL 00C1C6D8 <-- 在我們已脫殼的文件中是不會有這個位址
的程式碼
比較原程式發現原來00C1C6D8只是一個RET,真是無聊!好了!那你
應該知道如何移除這個Hook吧!我的方法是找個位址放RET,再將
RVA 64FAC,64FB0指向這個位址,我選在隔壁即RVA 64FB4改:
RVA 64FAC 00C1C6D8 --> 00464FB4
RVA 64FB0 00C1C6D8 --> 00464FB4
RVA 64FB4 00 --> C3
(註:我標示的是用RVA而不是OffSet,那是因為我是用ICEdump去脫
故我需令OffSet=RVA,若你是用Procdump去脫.則OffSet並不
一定等於RVA端視你的操作選項而定)
JOHNSON 2001/02/13
标 题:補充-- C-pen (916字)
发信人:1212
时 间:2001-2-14 12:53:57
详细信息:
有關我說的重建Import Table的部份,證實第一種是無法重建的,因為ASProtect會干擾Imp_list的運作,所以只能用第二種方法,本來想讓大家方便,沒想到變成隨便,Sorry!!
事實上我是用第二種方法去重建,第一種是推論,沒想到是錯誤!!故此方法必定可行,若你操作正確的話.
ASProtect的對Import table編碼處在:
:00C1F752 PUSHAD
:00C1F753 CLD
:00C1F754 MOV ESI,[EBP-04]
:00C1F757 LODSD
:00C1F758 OR EAX,EAX
.
.
:00C1F79E CALL 00C1F454
:00C1F7A3 POP EBX
:00C1F7A4 JMP 00C1F774
:00C1F7A6 POPAD <--走到這編碼已完成
.
.
:00C1F7C4 JMP 00C1F7E0
在:00C1F7C4下a eip/jmp eip
按F5離開Soft-ICE再使用Imp_list即能重建Import Table(別忘了RVA=66000,SIZE=2000)
至於hying所說的還有其他的Hook,能否具體說明,因我移除這兩個Hook
後程式運行的很正常.
最後更正上文的兩個錯誤:
1.查找0064FAC --> 00464FAC
2.CALL [0064FAC] --> CALL [00464FAC]
真的老了,錯誤百出,還望海涵.
JOHNSON 2001/02/14