脫殼第一講,手工脫殼ASPack2.12的殼.ESP定律
一丶什么是ESP定律
首先我們要明白什么是殼.殼的作用就是加密PE的.
而ESP定律就是殼在加密之前,肯定會保存所有寄存器環境,而出來的時候,則會恢復所有寄存器的環境.
這個就成為ESP定律.(當然我個人理解.可能有更好的理解,請下方評論,我會更改)
pushad的時候,肯定所有寄存器入棧.
二丶利用工具脫掉ASPACK2.12的殼
首先,我們找一個帶殼的工具,利用PEID查殼.查看是什么殼.
OD附加進程.
可以看出,一開始就已經pushad (保存所有寄存器環境)了,那么只需要找到popad的位置即可.
思路:
因為pushad的時候,所有寄存器傳參,當popad的時候,肯定會修改寄存器的值
所以在棧中下硬件訪問或者硬件寫入斷點.
先F8走一步,看棧
看得出,所有寄存器已經入棧了.所以我們在數據窗口中,輸入棧地址.(保存寄存器的棧地址,隨便哪個都可以)然后下硬件訪問斷點.
我是定位到棧頂的位置,12ffa8的位置,當然也可以是下邊的.
下硬件訪問或者硬件寫入斷點.
然后F9運行起來.發現會斷下來.
這個地方則是出來的地方,那么ASPack的殼有一個特征,就是出來之后會跳轉,然后有兩個ret
因為程序是32位程序,所以我們要放到32位的虛擬機里面去脫殼.
然后我們繼續F8跟隨.一直跟隨到一個JMP位置,這個地方就是OEP了.
然后我們使用OD的插件去脫殼, 這個插件是修復PE的導入表的.可以直接利用.
然后點擊脫殼即可,如果沒有這個工具,你需要自己手動解析PE,然后重建導入表才可以.
默認選擇方式1
脫殼之后,查看是否還有加密.
沒有pushad保存寄存器環境了,已經成功脫殼.
課堂代碼資料: 鏈接:http://pan.baidu.com/s/1skKYA5n 密碼:2di6
作者:IBinary
出處:http://www.cnblogs.com/iBinary/
版權所有,歡迎保留原文鏈接進行轉載:)
注意,一定是在32位系統下脫殼.