<逆向學習第二天>如何手動脫UPX、Aspack殼


 

UPS、AsPack壓縮殼介紹:

   UPX 、AsPack是一款先進的可執行程序文件壓縮器。壓縮過的可執行文件體積縮小50%-70% ,這樣減少了磁盤占用空間、網絡上傳下載的時間和其它分布以及存儲費用。 通過壓縮過的程序和程序庫完全沒有功能損失,和壓縮之前一樣可正常地運行。對於支持的大多數格式沒有運行時間或內存的不利后果。

  
    壓縮的原理是什么呢?

    壓縮就好像把 可執行文件中的 123456 字母%A代替,789ABC字母%C代替,這樣程序代碼的體積不久變小了很多。(要是可以這樣壓縮,這不都只有三分之一了,好機智)。

  實際上現在網絡有很多UPX、Aspack脫殼器,但是入門學習一定要從頭學習手動脫殼,學習原理,我會將我近期學習到的4種方法總結於本文。

    首先使用PEiD或者EXEInfoPE查殼,這里我使用PEiD。

  

  可見此程序加的是UPX殼,接下來我們手動將它脫掉。

    1、單步跟蹤法

     此方法是將向上跳轉設置斷點讓它不能實現,向下跳轉不執行動作讓它實現。

  

    將程序拖入OP,可以看到Pushad是這個程序的入口點。接下來按F8(單步步過)或者點擊此按鈕即可。

    單步跟蹤法是將向上跳轉設置斷點,所以我們就用F8逐一的找向上跳轉。

    紅色橢圓框住的就是向上跳轉,每當遇見的時候通常我們都在下一句設置斷點,所以我們可以直接在下一句(即紅色矩形框框住部分)按F4,逐步向下尋找。

    這個跳轉因為下一句是一個“CALL”所以我們在CALL下面的一句設置斷點。這里注意一下popad。這個是“出站口”,注意到前面pushad是“入站口”,有入站口就會有出站口即popad。再看popad下面的語句,98E1EFFF,0047738C,這個跨度比較大,典型的Delphi程序,一般再單步步進一次就可以進入到程序的真正程序段。

  

  接下來我們進行脫殼,可以直接用OD脫殼插件脫殼,右鍵用OllyDump脫殼調試進程。

 

 

   可以用方式1,也可以用方式2,都可以進行脫殼。

  

   2、ESP大法

     ESP大法相比於單步跟蹤法來說簡便,利用寄存器ESP的值來進行脫殼。

     首先來看程序入口點,關鍵語句Pushad。

     ESP大法是在關鍵語句的下一句如果ESP顏色突變進行操作,我們來看一下下一語句的ESP。

     這里我們看到寄存器里只有ESP是紅色的,那我們就可以操作了。右鍵數據窗口中跟隨。

     在數據窗口中進行如下操作,word Dword都可以。

     然后我們F9運行,來到了我們剛才熟悉的界面,單步步進,來到了主程序程序段,脫殼即可。

 

      3、內存2次鏡像法

       

      點擊m進入內存界面,接下來我們找在內存中的本程序段的.rsrc,F2設置斷點,運行。

      

      所謂2次鏡像法就是要進行2次內存操作,接下來我們再點m進入內存信息界面,找到地址00401000,F2設置斷點,運行。又來到了我們熟悉的語句popad,設置斷點,單步步進,脫殼。

 

      4、一步直達法

       此方法適用於UPX,Aspack殼,前面說過pushad為入口點,那么它必定有一個出口點popad,所以我們只需要Ctrl+f查找popad即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM