要脫掉VMP3.1的殼子需要掌握哪些知識?

原因:題主學校用的是創翼(neetkeeper4.0)據之前學長說是VMP3.1殼子,之前版本是2.X的時代ppoe撥號的加密字串是之前的人分析出來了,但是新版的目前還沒人能分析出來,所以自己想試一下

目前情況:IDA分析出來是殼子的虛擬代碼

ollydbg是這樣的

而且下斷點就會提示運行環境破壞所以想知道如果想要分析neetkeeper4.0的ppoe撥號加密的話需要掌握哪些知識才能完成


脫殼不如打補丁,對於VMP3.1的殼子只要需要 恢復 ZwProtectVirtualMemory 就可以進行補丁了。

脫殼的很麻煩很麻煩:我幫你理了下步驟

1.首先你得修復 VMP的堆棧 HeapCreate ,

2.修復SaveHook,他會Hook資源函數,LoadString,LdrFindResource_U,你得脫殼後還原會去

3.接下來就是修復 IAT了,你得在VM裡面找到他解密IAT的點,然後全部跳到自己申請的內存裡面取修復下IAT

4.修復CPUID,VMP調用了CPUID獲取了機器處理器唯一標識符,他會利用這個值計算一個 magic number的值,且演算法在VM裡面,你得逆向出來演算法。 Patch CPUID方式已經不行了,因為VMP3的架構問題,會有很多處調用cpuid

5.修復隨機校驗,在VMP3中的VM代碼裡面,會有隨機的CRC校驗代碼是否被修改。還有還原PE頭啊,Hook VirtualQuery 處理殼段CRC。

請參考別人已經脫殼好的成品:
VMProtect 3.0.9 UnpackMe

對於3.0.9來說,VMP3.1改變了反調試部分,直接模擬系統特權指令 sysenter 和 syscall來進行調用nt函數反調試。 其脫殼方法還是一樣。

good luck.


推薦閱讀:

閑扯ARM指令集一
自動化二進位文件分析框架:angr
那些年病毒用過的損招——攻擊調試器
安卓逆向入門(一)
演算法逆向1——簡單演算法逆向

TAG:逆向工程 | 信息安全 | 軟體逆向工程 |