使用OllyDbg从零开始Cracking 第四十五章(补充章节)-ReCrypt v0.80脱壳(续)
第四十五章-ReCrypt v0.80脱壳(续)本章是对上一章节的补充。本章我们需要用到几款工具,分别是1.OllyGhost(DIY过的OllyDbg)(PS:OllyGhost压根没用上,在XP下运行会提示无法在NT系统运行,大家还是用原版OD吧)2.OllyDump(OD的dump插件)3.LordPE4.Estricnina_v0.125.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.OEP004010002.SizeOfImage 000060003.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暂用率为零,搞定。本系列文章汉化版转载看雪论坛
感谢原作者:RicardoNarvaja(西班牙人) 原作者个人主页:http://www.ricardonarvaja.info/
感谢热心翻译的朋友:1~3章译者:BGCoder4~58章译者:安于此生
全集配套程序下载地址:
链接: http://pan.baidu.com/s/1eQzTWfo 密码: vytv
[快捷回复]-感谢楼主热心分享! 欢迎常来帮助新人,谢谢~ 感谢楼主分享新技能!努力学习ing! [吾爱汇编论坛52HB.COM]-感谢楼主热心分享!nice,谢谢,给力非常感谢破解思路 看起来很复杂啊 牛啊,感谢分享 感谢楼主分享,学到老! 我来继续学习,谢谢~!
页:
[1]
2