手动脱Mole Box壳实战总结
作者:Fly2015
這個程序是吾愛破解脫殼練習第8期的加殼程序,該程序的殼是MoleBox?V2.6.5殼,這些都是廣告,能夠直接無視了。前面的博客手動脫Mole?Box?V2.6.5殼實戰(zhàn)中已經(jīng)給出了一種比較笨的脫殼的方法。在進行脫殼程序的IAT表的修復的時,採用的是手動記錄系統(tǒng)API的地址然后手動的去恢復被加密的系統(tǒng)API的方法,非常挫。
以下就來講一講略微好點的修復IAT表的方法。
?
回想一下前面找加殼程序原OEP的步驟。
使用ESP定律進行該加殼程序的脫殼,在硬件寫入斷點斷下來以后,單步F7到地址0046997B3處,發(fā)現(xiàn)Call?eax指令中的EAX保存是加殼程序真實OEP的VA地址0045159C。
被加殼程序的真實OEP被找到了。可是使用OD的插件OllyDump或者Load?PE+ImportREC或者是Scylla_x86進行程序的脫殼,然后執(zhí)行程序。發(fā)現(xiàn)脫殼后的程序執(zhí)行出錯。
隨后找到原因,原來是有部分函數(shù)的API地址被加密處理了,詳細的被加密的函數(shù)如圖所看到的。
非常顯然,地址00455170處保存的系統(tǒng)API的函數(shù)地址是第一個被加密處理(詳細的怎么找IAT表的方法,看前面的博客)。
Ctrl+F2再次動態(tài)調試分析程序。為要找到IAT表中的函數(shù)是怎么被加密處理的,須要在地址00455170處下Dword型的硬件寫入斷點,4次F9后地址00455170處被加密的系統(tǒng)API的函數(shù)的地址顯示出來了,如圖。通過調用GetProcAddress函數(shù)獲取到的系統(tǒng)API函數(shù)的地址保存到了ds:[ECX]中,值得注意。
F8單步調試程序走幾步,發(fā)現(xiàn)地址00470F42處調用的函數(shù)00471620使用來給IAT表中系統(tǒng)API進行加密處理的。
F7單步跟進函數(shù)00471620進行分析發(fā)現(xiàn)。通過置換的方式將ds:[ECX]處的函數(shù)地址給改動了。
OK,程序在調用被加密處理的IAT表中函數(shù)時,終于函數(shù)調用的還是系統(tǒng)的API也就是說僅僅是給系統(tǒng)的API添加了調用的代理函數(shù)。
既然是這樣,那就將改動IAT表中系統(tǒng)API函數(shù)的代碼給path掉也就是NOP掉。
將改動IAT表中函數(shù)調用地址的匯編代碼mov?dword?ptr?ds:[ecx],?eax改動為兩條nop指令,然后F8單步執(zhí)行程序,沒什么問題。
F9執(zhí)行程序,因為依據(jù)ESP定律下的硬件寫入斷點還在。因此程序會斷在設置的硬件寫入斷點處。F8單步幾步就可以找到程序真實OEP,如圖。
非常顯然,加殼程序的真實OEP的VA地址為0045159C。F7跟進到OEP處。工具搞起。使用Load?PE結合ImportREC或者Scylla_x86(剪切掉無效的函數(shù)指針)對加殼程序進行完美的脫殼。
執(zhí)行一下脫殼后的程序。驗證脫殼成功。
手動脫Mole Box殼總結文檔和脫殼程序的下載地址:http://download.csdn.net/detail/qq1084283172/8908073
《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的手动脱Mole Box壳实战总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IntelliJ IDEA 中,英官网
- 下一篇: MairaDB 函数(二)