ASPack 2.12 壓縮殼脫殼


前言:ASPack 2.12 脫殼筆記

首先先查殼,如下圖所示,可以看到的是ASPack 2.12

載入調試器中可以看到開頭為PUSHAD,首先直接用ESP定律來進行嘗試來到OEP的位置

通過ESP定律來到如下的位置,堆棧觀察起始一樣,那么這里大概率就是OEP了

接着將OEP為起始位置,將程序進行轉儲出來,嘗試運行可以發現報錯0xC0000005,看到C05的話,大概率就是IAT表或者重定位表的問題了

因為在XP這里就直接忽略重定位的問題了,這里來看下IAT表的情況,如下圖所示,可以確定是IAT表的問題,地址都直接被寫成了函數地址,那肯定就會導致程序加載,操作系統無法填充IAT表了

這里來進行修復,將殼程序(來到OEP的狀態下),用importREC來進行修復,首先先定位當前的IAT表中的函數地址,如下圖所示

這里會看到奇怪的部分,你會發現這個IAT表其中一部分不是填充的函數的地址

引發上面的就如下幾種情況,但是還是得具體問題具體分析

1、一種是殼程序故意進行破壞來干擾你,但這些其實就是沒用的數據,這里的話可以直接來進行修復先,將沒用的數據直接進行剔除即可

2、一種是殼程序原來部分的IAT表進行了重定向,這個時候就需要進行尋找修改重定向的位置讓其取消修改,這樣就能保證IAT的無損修復

3、還有一種的話就是本身就這樣子,這里的話可以直接來進行修復先,將沒用的數據直接進行剔除即可

第一個加載的DLL為user32.dll,所以這里可以確定第一個導入表就是user32.dll,起始地址為0040119C

結束地址為0x401218

那么其中IAT表的大小就是401218-40119C=7C,如下圖所示

這里先將其中間的數據當前干擾數據直接進行剔除,然后進行修復IAT表

接着就是進行修正轉儲

但是你運行該程序會發現還是有問題,如下圖所示,你會發現0x00804000這個地址就是不存在的

后面發現是importREC中OEP填錯了,應該是00004000才對,然后重新修復下,重新運行,現在可以了,如下圖所示


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM