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 (译)