記一次手動脫殼

以前一直都是用脫殼工具直接脫殼,最近學了手動脫殼的一些知識,就嘗試了一次簡單的手動脫殼。
我使用吾愛破解版的OD來脫殼,因爲上面自帶了插件OllyDump。不得不說這個功能十分強大,原以爲脫殼出來還要重建修復表的,結果發現居然不用,完成了以後一臉懵逼,完全不敢相信成功了。
首先,遇到了這個的話,都選否。
這裏寫圖片描述
原來的OD似乎是要先執行一段代碼,再開始執行殼的(從pushad那裏開始)如下圖:
這裏寫圖片描述
執行那個call函數以後,纔開始執行殼:
這裏寫圖片描述
而吾愛破解版的有所不同,上來就是殼的代碼:
這裏寫圖片描述
這裏採用PUSHAD—POPAD法:殼開始是PUSHAD,那麼結尾一定在POPAD附近。
直接Ctrl+F,搜索popad,去掉“整個塊”上的鉤
這裏寫圖片描述
在那裏f2設上斷點,f9運行到,或者直接在那條指令上按F4(運行到此處停止)
這裏寫圖片描述
接下來的3條語句循環應該是平衡棧,直接設斷點f9跳過,然後到了那個jump那裏,執行跳轉,到的就是OEP(程序原入口點)。
這裏寫圖片描述
這裏普及一下OEP的判斷,關於調用main前被調用的函數:
這裏寫圖片描述
關於起始的彙編語句:
這裏寫圖片描述
可以對比一下,基本一致。
各語言的OEP開始幾行代碼參考:
http://blog.csdn.net/pxm2525/article/details/39968381
調試運行到了OEP後,插件-OllyDump-脫殼在當前調試的進程。
這裏寫圖片描述
點擊脫殼就行了。可以看到起始地址由0x40f8d0改爲了0x40131e。
脫殼後程序可以用IDA分析了(不過分析時還是會有提示說有殼)。
這裏寫圖片描述
關於手動脫殼的其他方法,可以參考
http://www.docin.com/p-1602586172.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章