第十四課 壓縮與脫殼

第一節 壓縮工具介紹
第二節 認識脫殼
第三節 PROCDUMP使用
第四節 手動脫殼

     

PROCDUMP 應用文章 一
PROCDUMP 應用文章 二
PROCDUMP中文說明書

提高篇 (11 )  

  大家好 ! 早兩天放上了提高篇 (10 ) 後,大家的反應還不錯,不過對於一些朋友來說, 要想用好 Procdump1.50 ,可能還有點問題,因為它的 Script 的說明書是英文的,對於英文不是 太好的朋友,這就成為一個很大的問題了。昨晚,在白菜的聊天室內,我 Ding Boy 等高手一 起聊天, Ding Boy 就建議我把 Procdump1.50 的說明書翻譯成中文,方便廣大的朋友學習和使用 Procdump1.50 ,本著我不入地獄,誰入地獄的決心,我就著手了翻譯工作,由於本人的英文也 不是太好 ! 所以在 Procdump1.50 Script說明書的翻譯過程中,難免會有一些錯誤的地方,同 時我的語文水平也不見得好到那裡去,有時英文了解什麼意思,中文也不知如何表達,所以也 難免有一些詞不達意,還有一些地方,我只能根據意譯的方法來完成了,因為如果一字一字的 合並起來,句幾的意思可能不知它說什麼。花了三個小時的時間,終於完成了,但為了有點記 念意義,就把譯文放進了提高篇 ( 11 ) 當中了,希望大家喜歡 !

讀者要求:

您可以閱讀和傳播本文章,但不能對文章的內容作任何的修改,請尊重作者 (譯) 的勞動

*********************************

ProcDump32 Script 擴展:

*********************************

  

A)  功能定義:

*************************

1) Look 功能:
  這個 Look 功能是在被載入的程式中尋找指定的 HEX 字串。它會把找到了的記憶體地址保存下來以便您可以方便在此記憶體地址設定斷點。

例:

   Look OF,85 將用於搜索一個 JNE 或一個長 jump 。您可以通過 BP 命令來設定斷點。

2) ADD 功能:

  允許您在當前記憶體地址上加一個變址值 (例: 出現於 look 命令或 POS 命令之後) 。

3) DEC 功能:

猜測;)

4) REPL 功能

  這個功能用於在當前記憶體中修改內碼 (連續的 HEX ) (注: 它出現在 look 命令之後) 。

例:

   REPL 90,90 將會在您當前的記憶體位置開始連接放入兩個 NOP 指令。

5) BP 功能

  在當前記憶體位置設定一個斷點。

6) BPX 功能

  在指定的位置設定斷點。這個位置與程式開始位置有關。

例:

    如果程式的開始位置在 RVA 66000h,BPX 2672 就會在 RVA 68672 設定斷點。

7) BPF 功能 (用標志位設斷)

  這個功能會檢查每一次斷點發生時的標志位的值是否為您所設定的值。斷點的位置為

當前記憶體地址。

Unset/Set 的內容

*******************

  C   * C *  進位標志。

  P   * P *  奇偶標志。

  A   * A *  輔助進位標志。

  Z   * Z *  零標志。

  S   * S *  正負號標志。

  D   * D *  方向標志。

  O   * O *  溢出標志。

您可以單獨測試 ONE 旗標。

8) BPC 功能

  當經過當前位置的次數達到設定值時發生中斷。

例:    

   BPC 15    ( 在第 21(15h) 次經過當前位置時中斷 )

9) BPV 功能

  當如果暫存器的值到達了您設定的值時中斷。

例:

   BPV EAX=5 ( 當特定位置的 EAX=5 時中斷 )

10) MOVE 功能
  設定當前 EIP 。加一個參數值給當前 EIP 。但請小心使用它。其實它對於程式沒有做到什麼,只是當您要跳過一些 CRC 檢查時,就要用到它了,它相當於代替一連串的 NOP 指令。

例:

   MOVE 14  就會把當前 EIP 變為 EIP+14h

11) POS 功能

  為所有的功能設定當前記憶體地址,這個位置與程式開始位置有關。

12) STEP 功能

  這個功能是設定一步一步的進行分析。它通常是用於完成跟蹤 dump 過程的。

 

注意: 單步模式就意味著每一行代碼它都進行測試 -> 慢 ! ! 所以設定單步模式一般

       都放在最後。

13) OBJR 功能

  這個功能是設定以基始記憶體地址為開始進行掃描。對於 LOOK 命令有影響。

14) BPREG 功能

  以通過暫存器的值來設定斷點。

15) WALK 功能

  執行下一條指令後把控件權交還 ProcDump32

16) EIP 功能

  設定下一個 EIP 為原來程式的最初進入點。

注意:

      在斷點之後,下一個 EIP 就是斷點地址本身。

17)  建立外部說明文件

  通過特殊的參數建立外部文件。這個您指定的 ini 文件是由一些特殊的參數組成和建立的。

它包括:

  

  .  進程的 Pid

  .  所有暫存器的值包括 EIP

  .  當前 EIP 的值

例子:

script 中:

...

    L5=HELP PDHelp.Exe Helper.ini

...

您的 helper 的命令行會包含 <Path to helper.ini>\"helper.ini"

helper.ini 中:

 

[REG]

    Dr0=00000000

    Dr1=00000000

    Dr2=00000000

    Dr3=00000000

    Dr6=00000000

    Dr7=00000000

    SegGs=00000000

    SegFs=00000FDF

    SegEs=00000167

    SegDs=00000167

    Edi=00000000

    Esi=8161D244

    Ebx=00000000

    Edx=8161D2A4

    Ecx=8161D264

    Eax=0043E9B4

    Ebp=00456000

    Eip=00456264

    SegCs=0000015F

    Flags=00000216

    Esp=0068FE34

    SegSs=00000167

    Pid=FFC1E943

Local=00456264

我想這樣做可以比較靈活;) 。

注意:
  命令行每行不能使用超過 512 個字每來描述 helper EXE INI 文件的路徑,這個只是 ProcDump 的內部限制,而對於 WINDOWS API 來說來說就不能超過 256 個字母。 

B)  script Options 的格式:

*************************************

Options 是通過 OPTL 開始的,並以 DWORD 形式保存的。

OPTL1=

  DWORD :  設定 AutoDump 中的延遲時間,以 ms 為單位。

OPTL2=

  BYTE  : 自動執行 EIP

  BYTE  : 忽略錯誤

  BYTE  : 快速模式 Dump

  BYTE  : 外部 Predump

OPTL3=

  BYTE  : 最佳化 PE

  BYTE  : 自動計算程式

  BYTE  : 跟蹤 API

  BYTE  : 自動分層

OPTL4=

  BYTE  : 未知模式

  BYTE  :Import 表類型重建

  BYTE  : 修復 Header

  BYTE  : 修復 Relocs

OPTL5=

  BYTE  : 保留

  BYTE  : 保留

  BYTE  : 檢查 Header

  BYTE  : 合並代碼

為得到更詳細資料 ...  查看 ProcDump Options 的解釋您。

C)  如何編寫您的加殼軟體的定義:

*****************************************************

1)  添加索引段:

*************************

加一個 Pxx 的聲明 .... 注意 xx 的值是跟接在最後一個的值。

例如:

增加之前

  [INDEX]

  P1=Shrinker 3.3

  P2=Wwpack32 Beta 9

  P3=Wwpack32 1.0

增加之後

  [INDEX]

  P1=Shrinker 3.3

  P2=Wwpack32 Beta 9

  P3=Wwpack32 1.0

  P4=My Own definition

2)  增加您的定義:

************************

每行的定義都必須事先聲明,例如用 Lxx

例:

  [My own definition]

  L1=Look 0F,85,DB,FF,FF

  L2=BP

  L3=STEP
  您可以在定義中多加一點預設 options ,添加 OPTLx 的方法也是這樣做,如果您沒有指認的 options ProcDump 會使用常規的那些設定。

作者: Ru Feng (譯)

信箱: ocq@163.net (未得作者允許,嚴禁 Email 任何軟體到此信箱)

首頁 (一) : http://ocq.163.net (楓林居)

首頁 (二) : http://ocq.yeah.net (最 Cool VB 控件天堂)

首頁 (三) : http://ocqpat.163.net (我的作品,主要介紹“電子資料庫”軟體)
 
PROCDUMP 應用文章 一
PROCDUMP 應用文章 二
PROCDUMP中文說明書

 



回教學