- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四十七章-Patrick的CrackMe-Part2
我们接着上一章的继续讲,上一章的结尾
处我们是通过如下方式来附加新创建的进
程的,首先将NTDLL.DLL中调用其他模块的
入口点那一条指令设置为一个死循环,然
后将OD设置为即时调试器 (JIT),接着打开
任务管理器,选中新创建的进程单击鼠标
右键选择调试,这样OD就附加了新创建的
进程。接着在死循环的指令处设置一个断
点,然后将Patch过的字节码恢复为原始字
节,然后直接按F9键运行两次后,模块列表
窗口中就会出现AntiDebugDll.dll了,接
着我们给AntiDebugDll.dll的代码段设置
内存访问断点,然后删除掉之前设置的INT
3断点,运行起来,这样就可以断在AntiDeb
ugDll.dll的入口点处了。
现在我们打开了两个OD,其中一个被调试
的为父进程,另一个被调试的为子进程。
现在父进程处于CreateProcessA调用语句
的返回地址处。
子进程处于AntiDebugDll.dll的入口点处
。这里我将调试子进程的OD换了一种配色
方案,这样可以防止大家在阅读的时候将
两个OD搞混淆了。
理论上来说,现在我们需要同时模拟执行
这两个进程,但实际上我们无法做到同时
调试。我们只能够分别协同调试两个进程
。
我们知道父进程中调用CreateMutexA这个
函数,这里我们给子进程的中CreateMutex
A也设置一个断点。
我们运行起来,断在了这里,这里由于父进
程已经创建了MYFIRSTINSTANCE这个互斥
体,所以我们如果执行了该函数,GetLastE
rror的错误码将返回0xB7,即ERROR_ALREA
DY_EXISTS。这里我们执行到返回验证一
下。
这里我们可以看到LastErr为ERROR_ALREA
DY_EXISTS,即0xB7。表示互斥体已经存在
。
接着这里调用RtlGetLastWin32Error获取
错误码,这里错误码我们已经知道了是0xB
7了,即ERROR_ALREADY_EXISTS。
这里将错误码保存到10010ECC指向的内存
单元中,我们给该内存单元设置一个内存
访问断点,运行起来。
断在了这里,这里是读取该错误码进行比
较。
这里将RtlGetLastWin32Error返回的错误
码与0xB7做比较。
接着如果相等的话,通过SETE指令将EAX置
1,这里明显错误码等于0xB7,所以EAX被置
1,如果是父进程的话,EAX会被置0。
接着我们返回到了这里,子进程中1000262
C这处条件跳转将成立,而父进程此处跳转
将不会成立。所以之后父进程与子进程将
执行不同的分支流程,有待我们进一步分
析。
这里有没有觉得这样一点点单步跟踪有点
麻烦?
其实有网上很多好用的API监视工具,比如
说KAM,APISPY,这些工具可以记录程序中
执行了哪些API函数,不需要我们一步步的
跟踪,可以节省很多时间。
这里其实我们可以利用内存访问断点间接
的完成API函数的监视工作,不需要这样一
步步单步跟踪。具体操作如下:
首先我们需要定位子进程中AntiDebugDll
.dll这个模块的IAT,这里我们将反汇编窗
口往上拉,随便找一个API函数调用处。
我们可以看到100024B5处调用了WideChar
ToMultiByte这个API函数,该API函数的指
针位于1000C034地址处,它是AntiDebugDl
l.dll的IAT中的一项。我们在数据窗口中
定位到该IAT项。
这里就是IAT了,我们定位到该IAT的起始
位置和结束位置,然后选中整个IAT,单击
鼠标右键选择Breakpoint-Memory,on acc
ess,给整个IAT设置内存访问断点。
接下来我们同样给父进程的AntiDebugDll
.dll的整个IAT表设置内存访问断点。
这里我们就给父子进程的AntiDebugDll.d
ll的IAT都设置了内存访问断点,也就说当
程序中调用AntiDebugDll.dll模块IAT中
的API函数时就会断下来,这里还需要注意
一点,有可能该Dll会通过调用GetProcAdd
ress来获取其他的API函数指针,所以这里
我们给GetProcAddress也设置一个断点,
以防万一。
好了,现在我们继续调试子进程,我们按F9
键运行起来,看看调用哪些API函数。
断在了这里,这里要创建MYMAININSTANCE
这个互斥体,这个互斥体之前未被创建过
。
大家应该还记得之
您可能关注的文档
- 糖尿病教育-01-糖尿病基础知识.pptx
- 糖尿病教育-02-从关键指标看糖尿病的诊断与治疗.pptx
- 糖尿病教育-05-糖尿病降糖药物的选择.ppt
- 糖尿病教育-08-HbA1c测试介绍.pptx
- 糖尿病教育-09-糖尿病与并发症.pptx
- 糖尿病教育-11-关注下肢血管病变和糖尿病足.pptx
- 糖尿病教育-12-β细胞功能知多少.pptx
- 糖尿病教育-16-体重控制.pptx
- 糖尿病教育-17-肥胖糖尿病患者的治疗与管理.pptx
- 人工神经元网络模型.pptx
- 使用OllyDbg从零开始Cracking-48第四十八章-PeSpin V1.3.pdf
- 使用OllyDbg从零开始Cracking-49第四十九章-PeSpin V1.3.pdf
- 使用OllyDbg从零开始Cracking-50第五十章-再谈ReCrypt v.0.pdf
- 使用OllyDbg从零开始Cracking-54第五十四章-EXECryptor v2.2.50.pdf
- 使用OllyDbg从零开始Cracking-55第五十五章-ExeCryptor v2.2.50.pdf
- 使用OllyDbg从零开始Cracking-56第五十六章-EXECryptor v2.2.50.pdf
- 使用OllyDbg从零开始Cracking-57第五十七章-ExeCryptor v2.2.50.pdf
- 使用OllyDbg从零开始Cracking-58第五十八章-ExeCryptor v2.2.pdf
- 使用OllyDbg从零开始Cracking-456第四十五章补充章节-ReCrypt v0.pdf
- 智能控制技术——模糊控制1.pptx
最近下载
- 日立电梯MCA13中文注释版电气原理图.pdf
- 财务总监培训战略成本管理-战略成本管理.ppt VIP
- 战略成本管理 .pdf VIP
- 2024-2025学年江苏省无锡市锡山高级中学高一(上)月考物理试卷(10月)(含答案).docx VIP
- 江苏省梅村某中学2022年物理高一年级上册期末达标检测试题含解析.pdf VIP
- 江苏省梅村高级中学2022年物理高一年级上册期末经典试题含解析.pdf VIP
- 小学道德与法治教学论文(5篇).pdf VIP
- 2025年智启未来·险见新机-人保寿险大模型探索及实践.docx
- 大班美术优秀教案及教学反思《秋天的画报》.docx VIP
- 《光纤耦合器讲解》课件.ppt VIP
原创力文档


文档评论(0)