|
|
|
|
|
|
|
|
提高篇 (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
(我的作品,主要介紹“電子資料庫”軟體)
|
|
|