- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五十章-再谈Recrypt v0.80脱壳 (Outp
utDebugString的妙用)
本章我们回头再来看看Recrypt v0.80这
个壳,给大家介绍了Patrick和PeSpin这两
款壳以后,再回头来看Recrypt这款壳,可
以说是小菜一碟了。本章我会给大家介绍
OllyAdvanced这款反反调试插件的使用,
首先我们用专门定位OEP的那款来OD加载U
nPackMe_ReCrypt0.80.exe。
我们来配置一下这个插件,这个插件提供
了一个Bugfixes(bug修复选项卡),其中就
有修复NumOfRva Bug这一项。
我们直接运行起来,看看会发生什么。
这里我们可以看到UnPackMe_ReCrypt0.80
区段显示都是正常的,我们剔除掉OllyAdv
anced这个插件看看又会是怎么样的呢。
这里我们可以看到没有OllyAdvanced插件
的话,还没有到达OEP就报错了。我们来看
看区段,会发现主模块UnPackMe_ReCrypt0
.80只显示了一个区段。这样的话我们只
能通过PEEditor来查看代码区的起始位置
以及大小,然后手动给代码段所在区域设
置内存访问断点来定位OEP了,但是有了Ol
lyAdvanced这个插件,这一切都可以省略
了,嘿嘿。
下面我们直接运行起来。
嘿嘿,可以看到弹出了一个错误框,根据提
示信息可以看出OD遇到了无法处理的异常
。我们打开 日志窗口看看出错的日志信息
。
大家注意到这个Debug string:字符串没
有,说明该程序调用了OutputDebugString
A这个API函数来输出调用信息。OutputDe
bugString函数用于向调试器发送一个格
式化的字符串,Ollydbg会在底端显示相
应的信息。OllyDbg存在格式化字符串溢
出漏洞,非常严重,轻则崩溃,重则执行
任意代码。这个漏洞是由于Ollydbg对传
递给kernel32!OutputDebugString()的字
符串参数过滤不严导致的,它只对参数进
行那个长度检查,只接受255个字节,但
没对参数进行检查,所以导致缓冲区溢出
。虽然OllyAdvanced以及其他一些OD插件
提供了对OutputDebugString函数的修复
功能,但是我们这里还是无法正常运行。
我们给OutputDebugStringA这个API函数
下个断点一探究竟。
这里由于我不想给每次都手动在命令栏中
一个字母一个字母的输入API函数的名称,
所以这里我使用网上的朋友写的一款插件
来完成这个任务,这个插件的名字叫做+BP
-Olly。有了这个插件,我们只需要通过一
次简单的按钮单击就可以完成对常见API
函数的断点设置。
我们打开BP这个选项卡发现并没有Output
DebugStringA这个API函数,怎么办呢?不
要紧,该插件有自定义功能,我们可以通过
单击P (Personal:个人的)按钮将OutputDe
bugStringA这个API函数添加到列表当中
。
我们单击Personalizar按钮,左边就多显
示处一个对话框,我们输入BP OutputDebu
gStringA,接着单击Guardar (添加)按钮。
请注意,API函数的名称大小写要正确。下
面我们再次单击P按钮。
这里我们可以看到BP OutputDebugString
A这个按钮就出现了,我们只需要单击一下
BP OutputDebugStringA这个按钮,就可以
给OutputDebugStringA这个API函数设置
上断点。是不是很方便。嘿嘿。(PS:其实
国内也有很多OD DIY的版本也提供了这个
功能,譬如说吾爱破解的OD)
接着我们运行起来,会发现还是会报错。
就是说简单的给OutputDebugStringA这个
API函数设置INT3断点并不起作用。所以
这里我们重启OD,接着在命令栏中输入HE
OutputDebugStringA给该API函数设置一
个硬件执行断点试试看。
删除掉刚刚设置的BP断点,接着运行起来
。(PS:这里下INT3断点会报错因为反反调
试插件之间存在冲突)
断了下来,我们执行到返回。
返回到了这里。
这里我们可以看到将EAX的值与零做比较,
看看会发生什么。
这里我们可以看到EAX的值不等于零,接着
跳转到下面将EAX的值与栈顶指针指向的
内容相加。
相加以后栈顶的内容变成了:
我们继续往下跟踪,会发现下一条指令是R
ET,那么相加到栈顶的内
您可能关注的文档
- 糖尿病教育-01-糖尿病基础知识.pptx
- 糖尿病教育-02-从关键指标看糖尿病的诊断与治疗.pptx
- 糖尿病教育-05-糖尿病降糖药物的选择.ppt
- 糖尿病教育-08-HbA1c测试介绍.pptx
- 糖尿病教育-09-糖尿病与并发症.pptx
- 糖尿病教育-11-关注下肢血管病变和糖尿病足.pptx
- 糖尿病教育-12-β细胞功能知多少.pptx
- 糖尿病教育-16-体重控制.pptx
- 糖尿病教育-17-肥胖糖尿病患者的治疗与管理.pptx
- 人工神经元网络模型.pptx
- 使用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
- 智能控制技术——模糊控制2.pptx
- 智能控制技术——模糊控制3.2.pptx
- 智能控制技术——模糊控制上机实验.pptx
原创力文档


文档评论(0)