查看單個文章
舊 2006-03-10, 06:42 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 脫殼的各種方法

脫殼的各種方法

我也是最近一個月才接觸殼這樣東西,雖然我是個新手,不過我很努力,也會脫很多軟體的殼。
下面就讓我介紹一下我所知道的各種脫殼方法!
先介紹一下脫殼的基本知識吧!
一般脫殼知識:1.PUSHAD (壓入推疊) 代表程序的入口點
2.POPAD (出棧) 代表程序的出口點,與PUSHAD想對應,一般找到這個OEP就在附近拉!
3.OEP:程序的入口點,軟體加殼就是隱藏了OEP(或者用了假的OEP),
只要我們找到程序真正的OEP,就可以立刻脫殼。

開始正式介紹方法啦!!
方法一:
1.用OD載入,不分析程式碼!
2.單步向下跟蹤F8,是向下跳的讓它實現
3.遇到程序往回跳的(包括循環),我們在下一句程式碼處按F4(或者右健按下程式碼,選項斷點——執行到所選)
4.綠色線條表示跳轉沒實現,不用理會,紅色線條表示跳轉已經實現!
5.如果剛載入程序,在附近就有一個CALL的,我們就F7跟進去,這樣很快就能到程序的OEP
6.在跟蹤的時候,如果執行到某個CALL程序就執行的,就在這個CALL中F7進入
7.一般有很大的跳轉,比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETE的一般很快就會到程序的OEP。

方法二:
ESP定理脫殼(ESP在OD的暫存器中,我們只要在指令行下ESP的硬體訪問斷點,就會一下來到程序的OEP了!)
1.開始就點F8,注意觀察OD右上角的暫存器中ESP有沒出現。
2.在指令行下:dd 0012FFA4(指在當前程式碼中的ESP位址),按Enter鍵!
3.選種下斷的位址,下硬體訪問WORD斷點。
4.按一下F9執行程序,直接來到了跳轉處,按下F8,到達程序OEP,脫殼

方法三:
記憶體跟蹤:
1:用OD開啟軟體!
2:點擊選項——偵錯選項——異常,把裡面的忽略全部√上!CTRL+F2重載下程序!
3:按ALT+M,DA 開啟記憶體鏡象,找到第一個.rsrc.按F2下斷點,
然後按SHIFT+F9執行到斷點,接著再按ALT+M,DA 開啟記憶體鏡象,找到.RSRC上面的CODE,按
F2下斷點!然後按SHIFT+F9,直接到達程序OEP,脫殼!


方法四:
一步到達OEP(前輩們總結的經驗)
1.開始按Ctrl+F,輸入:popad(只適合少數殼,包括ASPACK殼),然後按下F2,F9執行到此處
2.來到大跳轉處,點下F8,脫殼之!

方法五:
1:用OD開啟軟體!
2:點擊選項——偵錯選項——異常,把裡面的√全部去掉!CTRL+F2重載下程序!
3:一開是程序就是一個跳轉,在這裡我們按SHIFT+F9,直到程序執行,記下從開始按F9到程序
執行的次數!
4:CTRL+F2重載程序,按SHIFT+F9(次數為程序執行的次數-1次
5:在OD的右下角我們看見有一個SE 關鍵句,這時我們按CTRL+G,輸入SE 關鍵句前的位址!
6:按F2下斷點!然後按SHIFT+F9來到斷點處!
7:去掉斷點,按F8慢慢向下走!
8:到達程序的OEP,脫殼!
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次