使用OllyDbg从零开始Cracking-20第二十章-OllyDbg反调试之检测OD进程名.pdfVIP

使用OllyDbg从零开始Cracking-20第二十章-OllyDbg反调试之检测OD进程名.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文档。上传文档
查看更多
第二十章-OllyDbg反调试之检测OD进程 名 本章我们介绍通过查找OD进程名来进行反 调试技巧,首先我们有必要对OD进行相应 的设置。 我们选择主菜单项Option-Debugging opt ions-Security。 我们可以看到这里有3个复选框,我们知道 通常情况下,我们给某个API函数设置断点 ,当我们重启OD后,刚刚给API函数设置的 断点就被清除了。但是勾选上这3个复选 框,再给API函数设置断点,重启OD后我们 会发现刚刚设置的断点依然存在,这就避 免了重启OD后需要重新给API设置断点的 麻烦。 实际上,我也不知道OD关于这个功能的实 现原理,我们只需要知道这3个复选框可以 让我们设置的API断点在OD重启后仍然有 效。 这个设置我觉得很有必要,避免了很多麻 烦,现在我们开始讨论通过查找OD进程名 来进行反调试的话题吧。 打开OD,接着通过Ctrl+ Alt + Delete快 捷键打开任务管理器。 我们可以看到进程名称列表,我们可以通 过检测进程名称是否为OllyDbg,如果是就 结束进程,哈哈。 我们来看一个CrackMe,这个CrackMe运用 我们前面介绍的知识暂时还解决不了,我 们只是来看看它是如何检测OllyDbg的进 程名,以及我们如何来绕过它的检测,嘿嘿 。 这个CrackMe的名字叫做daxxor,如果我们 先运行这个CrackMe,然后打开OD,会发现O D马上就退出了。如果我们用OD加载该Cra ckMe然后运行起来,会发生两者一起退出 了。 如何来应对这种情况呢,我们先用OD加载 这个CrackMe。 停在了入口点处,我们先看看该程序使用 了哪些API函数。 我们可以看到有很多API函数,但都不是用 于检测进程名的,可能这些重要的API函数 被隐藏起来了,没有出现该列表中。 很显然如果程序不直接导入某些API的话, 会使用GetProcAddress这个API 函数来获 取这些API函数的地址进行间接调用。 使用GetProcAddress函数加载的一些API 函数并不会出现该API函数列表中,我们给 GetProcAddress设置一个断点。 运行起来。 断在了GetProcAddress的入口点处,当前 待获取的函数是__CPPdebugHook,该函数 检测进程名没有关系,继续运行。 我们继续按F9键运行直到待获取的API是 与检测进程名相关的为止,这里待获取的A PI函数是EnumProcesses,这里通过选择主 菜单项Debug-Execute till return执行 到返回,这个时候EAX寄存器中保存的就是 EnumProcesses这个API函数的地址了。我 们接着就可以给该地址设置断点了。 这里EAX就保存了EnumProcesses的函数地 址,我的机器上是76BB3A9A (可能与你机器 上的不一样)。 另外,OD的API的函数列表中并没有列出En umProcesses这个名称,所以我们直接bp E numProcesses是设置不了断点的,我们可 以给EnumProcesses函数的地址设置断点 。 设置成功了。 好了,我们已经给EnumProcesses设置了断 点,继续我们刚才的步骤,看看还有什么AP I函数被加载。 这里是获取枚举进程模块函数的地址,我 们还是执行到返回,接着给EAX中保存的地 址设置断点。 我们直接在命令栏中输入bp EAX。 同理,我们给所有与检测进程名相关的API 函数设置断点。 这里是另外一个可疑的API函数GetModule BaseNameA,我们跟之前一样给该函数设置 断点,然后我们运行起来,断在了EnumProc esses函数的入口处。 我们通过双击反汇编窗口的注释区域来给 该函数添加注释,注释上该函数的名称Enu mProcesses。 我们给这些通过GetProcAddress加载的AP I设置断点,并且断下来了,但是OD并没有 在API函数列表中找到与之对应的项,所以 OD也没有提示该函数相关信息。 我们谷歌一下 “EnumProcesses”。 找到一个微软的网站页面: /en-us/lib rary/ms682629.aspx 上面的解释是该函数返回正在运行的每个 进程的标识即PID。好了,接下来我们看看 神马是PID,嘿嘿。 PID是系统分配给每个正在运行的进程的 标识符-每次启动的时候都会发生变化。 我们来看看进程列表。

文档评论(0)

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

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

1亿VIP精品文档

相关文档