- 第一章 - OD 的各个窗口介绍
- 第二章 - 数值系统
- 第三章 - 寄存器
- 第四章 - 汇编指令
- 第五章 - 数学指令
- 第六章 - 比较和条件跳转
- 第七章 - call ret
- 第八章 - 循环 字符串指令和寻址方式
- 第九章 - 基本概念
- 第十章 - 断点
- 第十一章:硬件断点与条件断点
- 第十二章 - 消息断点
- 第十三章 - 硬编码序列号寻踪-Part1
- 第十四章 - 硬编码序列号寻踪-Part2
- 第十五章 - 硬编码序列号寻踪-Part3
- 第十六章 - 序列号生成算法分析-Part1
- 第十七章 - 序列号生成算法分析-Part2
- 第十八章 - 序列号生成算法分析-Part3
- 第十九章 - OllyDbg 反调试之 IsDebuggerPresent
- 第二十章 - OllyDbg 反调试之检测 OD 进程名
- 第二十一章 - OllyDbg 反调试之检测 OD 进程名,窗口类名,窗口标题名
- 第二十二章 - OllyDbg 反调试之 UnhandledExceptionFilter,ZwQueryInformationProcess
- 第二十三章 - OllyDbg 反调试之 ProcessHeap,NTGlobalFlag,OutputDebugStringA
- 第二十四章 - OllyDbg 反调试之综合 CrackMe
- 第二十五章 - 异常处理
- 第二十六章 - Visual Basic 程序的破解-Part1
- 第二十七章 - Visual Basic 程序的破解-Part2
- 第二十八章 - Visual Basic 程序的破解-Part3
- 第二十九章 - P-CODE-Part1
- 第三十章 - P-CODE-Part2
- 第三十一章 - 脱壳简介
- 第三十二章 - OEP 寻踪
- 第三十三章 - 神马是 IAT 如何修复
- 第三十四章 - 手脱 UPX,修复 IAT
- 第三十五章 - 手脱 ASPack V2.12
- 第三十六章 - IAT 重定向
- 第三十七章 - 论 IAT 重定向之修复
- 第三十八章 - 手脱 Yoda's Protector v1.3(Yoda's Crypter)
- 第三十九章 - 神马是 stolen bytes
- 第四十章 - OllyDbg 脚本的编写
- 第四十一章 - 神马是 AntiDump
- 第四十二章 - ACProtect V1.09 脱壳(寻找 OEP 绕过硬件断点的检测 修复 Stolen code)
- 第四十三章 - ACProtect V1.09 脱壳(编写脚本修复 IAT)
- 第四十四章 - ACProtect V1.09 脱壳(修复 AntiDump)
- 第四十五章补充章节-ReCrypt v0.80 脱壳(续)
- 第四十六章 - Patrick 的 CrackMe-Part1
- 第四十七章 - Patrick 的 CrackMe-Part2
- 第四十八章 - PeSpin V1.3.04 脱壳-Part1
- 第四十九章 - PeSpin V1.3.04 脱壳-Part2
- 第五十章 - 再谈 ReCrypt v.0.80 脱壳(调戏 OutputDebugString)
- 第五十一章 - ASProtect v2.3.04.26 脱壳-Part1
- 第五十二章 - ASProtect v2.3.04.26 脱壳-Part2
- 第五十三章 - TPPpack 脱壳
- 第五十四章 - EXECryptor v2.2.50.a 脱壳-Part1
- 第五十五章 - ExeCryptor v2.2.50.a-Part2
- 第五十六章 - EXECryptor v2.2.50.b 脱壳
- 第五十七章 - ExeCryptor v2.2.50.c/d/e/f/g 脱壳
- 第五十八章 - ExeCryptor v2.2.50
第四十五章补充章节-ReCrypt v0.80 脱壳(续)
本章是对上一章节的补充。
本章我们需要用到几款工具,分别是
1.OllyGhost(DIY 过的 OllyDbg)(PS:OllyGhost 压根没用上,在 XP 下运行会提示无法在 NT 系统运行,大家还是用原版 OD 吧)
2.OllyDump(OD 的 dump 插件)
3.LordPE
4.Estricnina_v0.12
5.POKEMON_AntiAttach
信息收集 :
在我们开始分析 UnPackMe_ReCrypt0.80.exe 之前,首先用 LordPE 查看一下该程序 PE 的信息。
直接选中该程序单击鼠标右键选择 Load into PE editor(LordPE)(PS:还记得上一章节介绍过的这个系统菜单项吧)
这样我们 LordPE 的 PE 编辑器就直接打开了该程序,比较方便。
这些字段非常重要,因为很多壳在解密区段的过程中会修改这些字段。我们可以看到这里 NumOfRvaAndSizes 字段就被修改过了。
因为一般来说这个字段的值为 0x10,不可能是 0x7A0B5FD9 这么大一个值。
这里 NumOfRvaAndSizes 这个字段的偏移是 0xB4。
接下来我们需要定位该程序的 OEP,这里我们使用 PEID 的 Generic OEP Finder 插件来定位。
将 UnPackMe_ReCrypt0.80.exe 拖拽到 PEID 中,单击 PEID 主界面右下方的右箭头按钮。
会弹出一个菜单,我们选中 Plugins(插件) 菜单,接着选中 Generic OEP Finder 菜单项。
不一会儿就会弹出一个消息框,显示 OEP 为 0x401000。
好了,信息已经搜集完毕了。下面我们来展开攻击。
收集到的信息如下:
1.OEP 00401000
2.SizeOfImage 00006000
3.NumberOfRvaAndSizes 偏移 0xB4, 我们修改为了 0x10
攻击 :
我们首先直接运行 UnPackMe_ReCrypt0.80.exe,会发现该程序 CPU 占用率非常高。
下面我们需要用到 Estricnina 这款工具,使用这款工具我们可以挂起该壳所创建的 3 个线程。(PS:这一步不是必须的,但是挂起这 3 个线程,我们的电脑运行起来会顺畅一些,不会感觉那么卡了)
这里我们打开 Estricnina 主程序。
在进程列表中找到 UnPackMe_ReCrypt0.80.exe 对应的进程。
双击之。
可以看到有 3 个线程,分别选中这 3 个线程,并单击下方的 Suspender(挂起) 按钮。
我们可以看到这 3 个线程都挂起了。
好,这里我们可以看到这 3 个线程都被挂起了,我们再来看看该程序的 CPU 占用率,已经由%99 减到了%0。
现在我们可以顺畅的使用我们的机器了。
攻击未被检测的内存块
下面我们需要用到 POKEMON 这款工具,通过这款工具我们可以绕过该壳的 Anti Attach(反附加),我们还记得恢复的那个偏移 0xB4 处的 NumOfRvaAndSizes 这个字段的值吧。(其实没有必要恢复 NumOfRvaAndSizes 这个字段的值,恢复它仅仅是为了不让 OD 弹出那个无效 PE 格式的错误框而已)
我们选中 UnPackMe_ReCrypt0.80.exe 对应的进程,单击 Anular protection AntiAttach 按钮,会发现那个骷髅头在转动,骷髅头停止转动就表示完毕了。接下来,我们打开 LordPE,定位到 UnPackMe_ReCrypt0.80.exe 所在进程。
我们可以看到 LordPE 的进程列表中显示的 UnPackMe_ReCrypt0.80.exe 所在进程的 ImageSize 为 0x00001000,我们应该还记得该程序的 ImageSize 为 0x00006000 才对呀。这里为了更好的修复 IAT,我们需要将这个 ImageSize 修正。
修复方法:我们在 LordPE 的进程列表窗口中选中 UnPackMe_ReCrypt0.80.exe 对应的进程,单击鼠标右键选择 correct ImageSize。
我们可以看到 ImageSize 已经被成功修复为了 0x00006000。
好了,我们已经搞定了一部分,继续。下面我们使用 OD 附加该进程。我们可以看到弹出了一个错误框提示无效的 PE 格式。
我们单击 Aceptar(西班牙语:确定) 按钮。断在了 ntdll.DbgBreakPoint 这个 API 函数中。
我们已经知道了 OEP 为 0x00401000,我们直接在反汇编窗口中单击鼠标右键选择 Go to Expression,输入 401000。
我们可以看到转到了 OEP 处。我们选中第一条指令,单击鼠标右键。
选择 New origin here,将 EIP 的值修改为 0x401000。
我们可以看到寄存器窗口中的 EIP 寄存器的值已经被修改为了 0x401000,也就是 OEP。现在我们使用 OllyDump 插件来进行 Dump。
首先我们将 OEP 的值填上,接着单击 IAT AutoSearch 按钮,自动定位 IAT。我们可以看到 IAT 已经被定位到了,IAT 起始地址的 RVA 为 0x2000,大小为 0x20,接着我们单击 Get Imports 按钮,获取导入表信息。可以看到获取到的 IAT 项都是有效的.接着单击 Fix Dump 修改刚刚 dump 出来的文件即可。
直接运行修复后的程序,报错了。我们将其拖拽到 LordPE 的 Rebuild PE 按钮上去(重建 PE)。
完美运行。我们再来看一看脱壳后程序的 CPU 占用率。
恩,可以看到 CPU 暂用率为零,搞定。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论