天天看點

Ollydbg手動脫殼得幾點小結

手動脫殼

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 xxxxxx 

F2在此行設斷(或者将光标移動到這一行上按f4),F9,F8走1-2下,來到入口點,用ollydbg的插件dump選中程式程序dump程式。但此法對于有些入口點附近代碼被壓縮的程式就無能為力了。對于這種程式有方法二。 

    方法二、用ollydbg載入程式,,第1個消息框,點yes,第2個消息框,點no,ctrl+b  Hex中輸入殼的入口特征代碼(如upx  61 E9),回車,找不到 

          popad 

    jmp  xxxxxx 

對于這種情況在用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有  xxxxxxx    pushad 

                        xxxxxxx    pushfd 

那麼當你看到            xxxxxxx    popfd 

                        xxxxxxx    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 

有待補充