cnpaf.net - 中国协议分析网

投递文章 投稿指南 RSS订阅 网站通告:
搜索: 您的位置主页>网络安全>工具使用>阅读文章

压缩与脱壳-自动脱壳 下

12-20 13:48 来源: 作者: 【 评论:0 浏览:
例:

   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个字每来描述helperEXEINI文件的路径,这个只是ProcDump的内部限制,而对于WINDOWS API来说来说就不能超过256个字母。

B) scriptOptions的格式:

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

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的方法也是这样做,如果你没有指认的optionsProcDump会使用常规的那些设置。

作者:Ru Feng(译)

 

收藏此篇文章内容到:
Tags:
责任编辑:
  • 请文明参与讨论,禁止漫骂攻击。 用户名:新注册) 密码: 匿名:
    评论总数:0 [ 查看全部 ] 网友评论
    关于我们 - 广告合作 - 网站地图 - 版权说明 - 网站历史 - 世界排名 - 加入收藏 - 设为首页 - 返回顶部