使用OllyDbg从零开始Cracking-46第四十六章-Patrick的CrackMe-Part1.pdfVIP

使用OllyDbg从零开始Cracking-46第四十六章-Patrick的CrackMe-Part1.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四十六章-Patrick的CrackMe-Part1 本章我们继续加深难度,实验程序名称为P atrick.exe,该程序的保护较强。大家会 发现之前介绍的一些方法针对于该保护并 不奏效。 所有很多时候我们不得不适当变通,特定 的保护特定解。 这里要提一句,一些商业壳不可能将所有 的保护手段都运用到,因为商业壳的宗旨 是要保证 目标程序为任意软件。但是恰恰 有些保护手段只针对于特定的程序。 好了,这里我们打开OD,还记得之前介绍那 款修改过的Patched 4这款OD吧,就它了, 配置好反反调试插件。 这个CrackMe,作者的要求不仅仅是脱壳, 还必须将DLL剥离,让EXE单独正常运行。 那么就是说Patrick主程序 目录下的AntiD ebugDll.dll这是一个核心DLL,如果将这 个DLL删除掉的话,主程序将无法正常运行 。 好了,现在我们用Patched4这款OD加载Pat rick.exe。 我们可以看到还没有到达入口点,程序就 终止了。 好,下面我们来尝试将入口点修改为系统 断点处,系统断点会在到达主程序入口点 之前断下。 打开主菜单中的Debugging options-Even ts,选中System breakpoint。 这样就可以让程序首次中断在系统断点处 ,这里要提一句,有些DLL会在到达入口点 之前被加载,而这些DLL会检测主程序是否 正在被调试,如果正在被调试的话就立即 结束进程。 有一点必须明确,就是系统动态库并不会 对OD进行检测。 下面我们在数据窗口中单击鼠标右键选择 Goto Expression,输入400000定位到PE头 。 接着在数据窗口中单击鼠标右键选择Spec ial-PE Header,切换到PE结构解析模式。 往下拉。 这里我们可以看到Import Table(缩写:IT ,俗称:导入表)的RVA (相对虚拟地址) (PS: 不要将Import Table与IAT搞混淆了,IAT 是Import Address Table(输入函数地址 表)的缩写,嘿嘿). 这里6F3C + 映像基地址 (400000)就可以 定位到Import Table了。 将数据窗口的显示模式由PE解析模式切换 回十六进制模式。 不知道大家是否还记得导入表的格式,每 个DLL项占5个DWORD。(PS:关于PE结构不 了解的童鞋,可以参看传说中的小黄书,你 懂得!嘿嘿 Windows PE权威指南) 每个DLL项中的第4个DWORD指向了DLL的名 称字符串,那么40712E这个地址就指向了 第一个DLL的名称字符串,我们一起来看一 看。 这里我们可以看到第一个DLL为WINMM.DLL ,我们假设在到达入口点之前如果该DLL被 执行了的话,OD就会终止。(PS:这是个系 统DLL,并不会进行反调试的处理,这里只 是举个例子) 我们来一探究竟,首先OD断在系统断点处 。 断在了这里,此时该CrackMe还没有到达入 口点处,因为当某个DLL加载并执行以后就 会终止进程,而当前进程并没有终止。也 就是说此时存在反调试的DLL还没有得到 执行,我们单击工具栏中的M按钮打开区段 列表窗口,对该DLL的代码段设置内存访问 断点。 这里断点就设置好了,我们直接运行起来 。 我们看到断了下来,这里是由于读取76B0D 8B8地址处的内容导致的中断。 我们继续运行,直到触发内存执行断点为 止。 断在了这里,这里就要开始执行该DLL的代 码了。 跟踪反调试DLL的流程就是这样的,接下来 ,我们重启OD,再次重复一遍上面的步骤, 这次我们直接对AntiDebugdll.dll的代码 段设置内存访问断点。 我们运行起来,会发现首次就触发了执行 断点。 在运行之前我们首先删除掉之前设置的内 存访问断点: 这里提示一下该程序既不是检测OD的进程 名,也是不是检测OD窗口名,也不是HideOD 插件中的涉及的那些检测方法,它是检测 该进程是由谁创建的,通过调用Process32 Next等API函数来遍历进程,判断当前进程 的父进程是否为桌面进程来达到反调试的 目的。 也就说该CrackMe会判断当前进程是否由e xplorer.exe启动,如果是的话,那么就说 明是用户双击运行的。如果不是的话,那 么就说明正在被调试,直接终止进程。 这里我们给Process32Next这个API函数设 置一个断点。 接着运行起来。 断了下来,这里可以看到第二个参数pProc essentry的值为12EEC8。 这里

文档评论(0)

@思念@ + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档