要脫掉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——簡單演算法逆向