使用OllyDbg从零开始Cracking-48第四十八章-PeSpin V1.3.pdfVIP

使用OllyDbg从零开始Cracking-48第四十八章-PeSpin V1.3.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文档。上传文档
查看更多
四十八章-PeSpin V1.3.04脱壳-Part1 如果有的童鞋看了前两个章节,还是没有 搞定那个CrackMe的话,可能考虑先跳过这 两章从第48章开始看,可能确实这两章难 度有点大。(PS:其实还好,基础扎实的话, 看起来还是没有问题的) 本章我们来脱PeSpin这款壳,版本是1.3.0 4。 首先我们来定位该壳的OEP。 我们用专门定位OEP的OD (olly_parcheado _para_vb)来加载它,断在了入口点处。 接着我们单击工具栏中的M按钮打开区段 列表窗口,我们对主程序的代码段设置内 存访问断点,大家还记得这个内存断点吧, 这个OD的内存断点被Patch过,其仅仅是内 存执行断点,只有执行才会断下,读取和写 入并不会断下。 这里检查下看看要忽略的异常选项是否都 勾选上了。 我们运行起来。 这里大家需要等待一段时间,不一会儿工 夫断在了这里,应该是OEP,但是入口点特 征又不太像,应该是存在Stolen Bytes。 我们来看看堆栈: 从堆栈中我们可以看到在到达伪造的OEP 之前经过了多层函数调用,执行了很多代 码,这些代码应该就是我们要找到的stole n bytes。 这里我们在反汇编窗口中单击鼠标右键选 择Search for-All intermodular calls, 查看下主模块调用了哪些API函数。 我们可以看到只有少量调用处显示了API 函数名称,我们随便选择一个。 这里可以看到少量的间接调用API函数的 指令-跳转表,我们任选一项定位到IAT。 这里我们可以看到IAT的结束地址为460F2 8,我们往上拉。 我们可以看到这些IAT项好像是经过重定 向的,我们随便选中一项查看一下参考引 用。 我们会发现这些项并没有参考引用处,我 们继续往上翻,马上就可以看到IAT的起始 地址了,所以说明刚刚这些查不到参考引 用的项的确是IAT项,这些项被该壳重定向 过了而已。 现在我们IAT的起始地址和结束位置都知 道了,起始地址为460818,结束地址为460F 28,下面我们的任务就是要修改IAT以及st olen bytes了。 首先我们来定位stolen bytes,定位到伪 造的OEP处,往上拉,可以看到一片零区域 。 下面我们重启OD,看下堆栈。 这里我们可以首次断在壳的入口点处时, 栈顶指针指向了12FFC4,也就是说,基于堆 栈平衡的原理,当壳解密区段完毕,跳往真 实的OEP处时,此时的栈顶指针也应该是指 向的12FFC4。我们知道通过情况下OEP处 的第一个指令为PUSH EBP,执行了这条指 令后,栈顶指针应该指向的是12FFC0,所以 在数据窗口中定位到12FFC0,给该内存单 元设置硬件写入断点。如果该壳对硬件断 点没有检测,我们这么做就没有问题,如果 该壳对硬件断点有检测的话,就另当别论 了。 我们运行起来。 断在了这里,这里壳还没有解密完毕,我们 继续按F9键运行。 断在了这里,这里有条PUSH EBP指令,有点 像OEP处的指令,嘿嘿,我们继续往下单步 跟踪,验证一下看看到底是不是OEP处的指 令,对于无JMP指令我们并不会感兴趣,因 为其并不影响寄存器组以及堆栈的状态。 这里我们可以看到PUSH FBF7BA08这条指 令,FBF7BA08被压入堆栈以后,下面又要加 上44D5458这个值。 我们来看看相加的结果等于多少。 这里我们可以看到相加的结果等于450E60 ,以上两条指令的作用等价于PUSH 450E60 。 接下来两条指令是类似的,等价于PUSH 42 92C8。 我们继续。 这里又是一条语句,我们继续。 继续: 这里应该是调用一个API函数,等我们修改 了IAT就可以看出来了。 跟到了这里,可以看到这里将要跳往伪造 的OEP了,嘿嘿,stolen bytes都知道了。 我们将stolen bytes都拷贝到OEP处。 好了,我们可以看到空间刚刚好,这里stol en bytes我们就修复完毕了,下一章节我 们来修改IAT。 本章附件 : olly_parcheado_para_vb.7z UnPackMe_PeSpin1.3.04.f.7z

文档评论(0)

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

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

1亿VIP精品文档

相关文档