Ollydbg手動脫殼得幾點小結

2021-06-18 23:36:44 字數 2545 閱讀 5900

ollydbg手動脫殼得幾點小結: 

一般認為手動脫殼的關鍵是找到軟體的真正入口oep,但是用ollydbg脫殼知道軟體的真正入口oep並不能解決問題,因為ollydbg的工作原理和softice、trw2000等的有所不同,在oep未解壓以前是不能在oep設斷上的,因此用ollydbg脫殼的關鍵是讓程式中斷在oep,一旦中斷在oep脫殼就告完成。當然能夠用衝擊波等軟體知道軟體的oep在用ollydbg脫殼中還是有一定幫助的。那麼如何讓程式中斷在oep呢?這裡小結幾種方法。 

方法一、用ollydbg引導程式,,第1個訊息框,點yes,第2個訊息框,點no,程式停在入口處ep(注意不是oep) ctrl+b  hex中輸入殼的入口特徵**(如upx  61 e9),回車 

popad 

看到入口點jmp ****** 

f2在此行設斷(或者將游標移動到這一行上按f4),f9,f8走1-2下,來到入口點,用ollydbg的外掛程式dump選中程式程序dump程式。但此法對於有些入口點附近**被壓縮的程式就無能為力了。對於這種程式有方法二。 

方法二、用ollydbg引導程式,,第1個訊息框,點yes,第2個訊息框,點no,ctrl+b  hex中輸入殼的入口特徵**(如upx  61 e9),回車,找不到 

popad 

jmp  ****** 

對於這種情況在用ollydbg引導程式,,第1個訊息框,點yes,第2個訊息框,點no時程式停在入口處ep(注意不是oep),先用f9,f8走幾下,使特徵**解壓縮再用上面的方法搜尋殼的特徵**。一般都能解決問題。對於那些不知到殼特徵**的那怎麼辦呢?於是有了方法三。 

方法三、用ollydbg引導程式,,第1個訊息框,點yes,第2個訊息框,點no,程式停在入口處ep(注意不是oep),一般**為pushad、  pushfd等。自己用眼睛向下搜尋與pushad 、 pushfd對應的popad、popfd 。f2在此行設斷(或者將游標移動到這一行上按f4),f9,f8走1-2下,來到入口點,用ollydbg的外掛程式dump選中程式程序dump程式。那麼怎麼知道找到的popad、popfd是與程式ep對應的popad、popfd呢?一般情況,對於保護不是非常強悍的殼向下找十幾行或幾十行看到的第乙個popad、popfd即為對應的popad、popfd。而且入口點附近popad往往在下面幾行還有指令ret。有些殼如pecompact它的入口處ep有  ******x    pushad 

******x    pushfd 

那麼當你看到            ******x    popfd 

******x    popad    就找到了。如果向下找十幾行或幾十行找不到的popad、popfd那該怎麼辦呢?於是有了方法四。 

對方法三的補充:有些殼如果在ollydbg中找popad是行不通的,因為用ollydbg載入脫殼物件時第1個訊息框,點yes,第2個訊息框,點no,ollydbg沒有中斷在pushad上,我曾碰到過用ollydbg載入脫殼物件時第1個訊息框,點yes,第2個訊息框,點no,ollydbg沒有中斷在popad上,這樣oep應該在pashad附近,所以應該與之對應pushad。一般這樣的殼保護比較弱。很容易脫的。 

方法四、用ollydbg引導程式,,第1個訊息框,點yes,第2個訊息框,點no,程式停在入口處ep(注意不是oep),一般**為pushad、  pushfd等。自己用眼睛向下搜尋與pushad 、 pushfd對應的popad、popfd。向下找十幾行或幾十行找不到的popad、popfd那必須先用f9,f8走幾下,使特徵**popad、popfd解壓縮再搜尋popad、popfd。 

方法五、對於大量使用seh,保護非常強悍的殼,如aspr需採用以下方法。 

1、使程式執行到最後一次she,最後一次she如何確定?記下程式執行的shift+f9次數n,shift+f9            n-1就是。

2、看堆踐處she  handle  f2設斷,shift+f9查詢popad、popfd即可。 

3、如果能夠知道oep,此時步驟2也可用ctrl+g oep按f4而且有些aspr版本必須用此法,否則非常麻煩 

附表:殼名稱、版本相應的特徵** 

殼名稱及版本    特徵** 

asprotect  1.0以下    eb 02 eb e8 61 eb 01 

asprotect  1.2    61 ff e0 

aspack 2.0以下    61 75 08 b8 

pecompact 1.33    61 9d 50 68 

petite 2.1/2.2    61 66 9d 83 c4 

pe-pack  all    89 44 24 1c 61 ff e0 

armadillo 2.51    03 f9 e8 a9 ee ff 

armadillo 2.52    03 f9 e8 2d ee ff 

vbox 4.6.5    cd 20 ff e3 

aspack 2.12    b8 01 00 00 00 c2 

upx 1.20w    61 e9 

telock0.71    61 ff 64 24 dc 

exe32pack 1.3x    e9 5e fe ff ff 

有待補充     

upx 手動脫殼

查殼 upx這類壓縮殼手動脫殼非常簡單。一 查詢oep 二 dump 修復iat way1 首先在程式入口發現pushad指令,接下來可以直接查詢指令popad 在jmp指令處下斷,執行。jmp之後來到oep 當然可以在單步pushad後,轉到esp的記憶體視窗,設定硬體斷點,執行,找到jmp處。執...

手動UPX脫殼演示

首先,用peid開啟加殼後的程式crackmeupx.exe,可以發現使用的是upx殼。upx殼是一種比較簡單的壓縮殼,只需要根據堆疊和暫存器的值進行除錯,就能找到程式的正確入口點。當然,如果不怕麻煩的話,也可以全程單步除錯,直到出現像正常程式的入口點一樣特徵的 這樣就找到了入口點。用我愛破解版ol...

如何用od去手動脫殼

1.常用的pushad popad 2.有call的話,注意跳call 脫殼成功的標誌就是出現 55 push ebp od要帶有外掛程式,olldump 1.脫殼是在55 2.如何脫殼,讓程式一直走,一直想前,不要後退 3.然後使用外掛程式儲存olldump 4.脫殼後儲存的檔案,看看可以修復不,...