扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共2页)
4、Procdump中文说明书
大家好!早两天放上了提高篇(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会使用常规的那些设置。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。