软件破解教程-第8章第3节 自动脱壳4,软件破解教程,逆向工程技术 2008年06月24日 星期二 下午 02:33 第8章 压缩与脱壳 第三节 自动脱壳 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 的命令行会包含 在 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 (我的作品,主要介绍“电子资料库”软件) |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-29 11:41 , Processed in 0.198522 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.