Thebat!139脫殼詳情及對Asprotect加殼保護的一點小結 (4千字)

看雪資料發表於2000-03-27

Thebat!139脫殼詳情及對Asprotect加殼保護的一點小結

小弟本想脫thebat141的殼的,但小弟下載的thebat141卻沒有加殼,沒辦法,還是拿thebat139開刀了。

如果小弟下面的內容有錯漏的地方,請給小弟指正。

小弟的脫殼方法和冰毒的不同,他的方法我用不了,我用Procdump32脫不了thebat的殼。

廢話少說,let's go!

所用工具:soft-ice405、icedump6015、procdump1.6.2、ultraedit5.0。

首先載入softice,再載入icedump。執行procdump32,點選PE Editor,選擇thebat.exe

檔案,我們要記一下資料了:size of image:00314000  image base:00400000,

點選sections,記下.idata的資料:virtual siza:00003000  virtual offset:0022E000 ,這樣我們

可以知道.idata在記憶體中的地址為:0062E000,長度為:3000

啟動Symbol Loader,載入thebat.exe(載入過icedump後,softice可以成功攔截thebat),點選一下Load,

馬上被攔截,如下:

XXX:006FF001    PUSHAD  **第一個PUSHAD指令**

XXX:006FF002    CALL  006FF008  按F8進入

XXX:006FF007    NOP

XXX:006FF008    POP  EBP 按F10一直來到:

XXX:006FF0D6    CALL  006FF0DE  按F8進入

在這之後的一段程式要走的小心一點,我建議用F8,如果離開了thebat的就按一下F12,然後再按F8,

一直來到:               

XXX:006FFA3B    PUSHAD  **第二個PUSHAD指令**    改按F10一直來到:

XXX:006FFB6C    POPAD    **和第二個PUSHAD指令是一對**

XXX:006FFB6D    POP EBP

XXX:006FFB6E    RET  0008  這個CALL走完了,來到:

XXX:006FF09F    MOV  ECX,EAX  按F10來到:

XXX:006FF0D6    CALL  006FF0DE  按F8進入,然後一直按F10來到:                     

XXX:006FFA3B    PUSHAD  **第三個PUSHAD指令** (難道又回去了?當然不是。)按F10直到:             

XXX:006FFB6C    POPAD    **和第三個PUSHAD指令是一對**

XXX:006FFB6D    POP  EBP

XXX:006FFB6E    RET  0008 走完這個CALL來到:

XXX:006FF1D3    PUSH  04

XXX:006FF1D5    PUSH  00001000  按F10一直到:

XXX:006FF218    CALL  006FF220  按F8進入,之後按F10一直到:

XXX:006FF2A2    CALL  006FF2AA  這裡開始一直按F8,如果離開了thebat,就按一下F12,再按F8來到:

XXX:0099E001    PUSHAD  **第四個PUSHAD指令** F10一直來到:

XXX:0099E5C5    POPAD    **和第四個PUSHAD指令是一對**

XXX:0099E5C6    JNP  009E5D0

XXX:0099E5C8    MOV  EAX,00000001

XXX:0099E5CD    RET  000C

XXX:0099E5D0    PUSH  00990B60

XXX:0099E5D5    RET  終於走完了這個CALL,來到這裡:

XXX:00990B60    PUSH  EBP 按F10來到:

XXX:00990B8A    CALL  00983DC4  F8進入,F10來到:

XXX:00990956    CALL  009904F4  F8進入,F10來到:

XXX:00990A11    CALL  00990110

XXX:00990A16    XOR  EAX,EAX    (這裡和冰毒一樣,我可省了不少時間:-))

這裡下: PAGEIN D 62E000 3000 D:\IDATA.BIN    得到完整的.idata部分

繼續F10來到:         

XXX:00990B43    CALL  009904C8  F8進入,來到這裡:

XXX:009904D5    POPAD  **和第一個PUSHAD指令是一對**

XXX:009904D6    PUSH  EAX

XXX:009904D7    RET  (這裡冰毒用Procdump32脫殼。可以嗎?我怎麼不行?誰可以就教教我。)

走完這裡來到:     

XXX:0061C528  PUSH  EBP

來到這裡後Soft-Ice中顯示著‘THEBAT!CODE+0021B526’,有‘CODE’的字樣,我們可以知道thebat是

用Broland寫,成的,而且我們已經進入了主程式,可以脫殼了。

下: PAGEIN D 400000 314000 D:\THEBAT.EXE  得到脫殼後的thebat.exe檔案 

用ultraedit5.0開啟thebat.exe及idata.bin,將idata.bin的內容替換到thebat.exe的22E000--230FFF中。

這樣得到的程式還不能用,啟動Procdump32修改檔案Sections。

將每一項Section的 Raw Size ==> Virtual Size  ; Raw Offset ==> Virtual Offset

將程式入口改成:0021C528(61C528-400000=21C528)

我記得冰毒說這樣脫殼的程式不行,當然了!因為他漏了最重要的一步(趁冰毒不在,說了他不少壞話,

大家可不要告訴他呦:-D):

點選Procdump32中的 PE Editor-->Directory,將 Import Table 的值改成:0022E000

自此程式已脫殼成功,我們來小結一下:

小弟透過對幾個用Asprotect加殼的軟體脫殼,對Asprotect加的殼有的一定了解,發現了一點共有的特徵,

用Asprotect加殼的軟體會出現3到4對‘PUSHAD--POPAD’指令(用Aspack或Upx加殼的軟體只會出現一對)

在走完這幾對‘PUSHAD--POPAD’指令後,我們便進入到主程式了,可以開始脫殼。脫殼後的檔案還要還

原PE檔案頭,要將完整的‘.idata’或‘.rdata’替換到脫殼後的檔案中,至於到底是‘.idata’還是

‘.rdata’就要大家自己去判斷了,最後修改檔案的Sections、Entry Point、Import Table各項。這樣也

就脫殼成功了。

 

baoleigz(暴雷)

相關文章