- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
脱壳基础知识入门之寻找OEP.doc
脱壳基础知识入门之寻找OEP~教育资源库 一般的压缩壳,如Aspack等都有专用的脱壳机 。而加密壳(如ASProtect,Armadillo)一般很少有脱壳机,必须手工脱壳。手工脱壳一般情况是分三步:一是查找程序的真正入口点(OEP);二是抓取内存映像文件;三是输入表重建。(当然现在的加密壳复杂些,要考虑更多的东西) OEP是OriginalEntryPoint缩写,即程序加壳前的真正的入口点。 外壳初始化的现场环境(各寄存器值)与原程序的现场环境是相同的。加壳程序初始化时保存各寄存器的值,外壳执行完毕,会恢复各寄存器内容。其代码形式一般如下: PUSHFD ;将标志寄存器入栈保存 PUSHAD ;pusheax,ecx,edx,ebx,esp,ebp,esi,edi ;外壳代码部分 POPAD ;popedi,esi,ebp,esp,ebx,edx,ecx,eax POPFD ;恢复标志寄存器 JMPOEP ; OEP: ;解压后的程序原代码 为了讲述方便,本节用UPX加壳的icrosoftVisualC++6.0编译的,接下来用UPX来加壳,方法是开个DOS窗口,用命令upxnotepad.exe。如下图所示: 这时再用PEid查看加壳的文件,PEid会给出如下信息:UPX0.89.6-1.02/1.05-1.24-gt;MarkusLaszlo UPX的壳可以用UPX.exe自身来脱,命令是:upx-d文件名。一些变种的UPX壳用UPX.EXE自身脱不了,这时可以试试UPXShellEx这款工具。 本节实例下载:notepad.upx.rar 脱壳前建议用PE工具LordPE打开目标文件查看一下区块,以尽可能地多了解一些信息,对脱壳有帮助,如下图: 1.根据跨段指令寻找OEP 推荐用Ollydbg来调试脱壳,比SoftICE和TRain函数上。再用Ollydbg打开实例notepad.upx.exe就可中断在外壳的入口点处了: 上图相关代码如下: 0040E8C0gt; 60 pushad //一开始Ollydbg就会中断这行,这个就是外壳的入口点,注意这个pushad指令 绝大多数加壳程序在被加密的程序中加上一个或多个段,所以依据跨段的转移指令(JMP)就可找到真正的入口点,此时就会有POPAD/POPFD指令出现。UPX用了一次跨段的转移指令(JMP),在跳到OEP处会看到虚拟地址的值有一个突变,此时就能确定OEP了。 UPX壳比较简单,大家不必要跟踪去找这个跨段的转移指令,中断ain后,只需要在Ollydbg里往下翻屏,就会发现这个跨段转移指令: 上图相关代码如下: 0040EA0E 61 popad //注意这里的popad指令,和开始的pushad对应 0040EA0F -E9B826FFFF jmp 004010CC //这里跳到OEP,将光标移到这,按F4执行到这行 这一句0040EA0F jmp 004010CC就是跳到OEP的指令,执行到这,UPX外壳己将程序解压完毕,并模拟Windows加载器的将原始程序加载到内存,004010CC就是映射到内存目标程序的入口点,此时就可抓取内存映像文件了。 2.根据堆栈平衡原理找OEP 这个堆栈平衡原理其找OEP原理这篇文档描述的比较详细:寻找真正的入口(OEP)--广义ESP定律 操作方法:多数壳在运行到OEP的时候ESP=0012FFC4,这就是说程序的第一句是对0012FFC0进行写入操作,只要在0012FFC0下硬件写入断点(命令行里键入HW12FFC0),我们就能停在OEP的第二句处。 用OllyDBG重新加载实例程序notepad.upx.exe,在命令行下硬件写断点: 按F9执行程序,就会中断在OEP第二行: 此时如果将光标向上移,会发现第一句代码变乱了: 004010C7 000D0A0 12下一页 友情提醒:,特别!00055 add [5500000A],cl 004010CD 8BEC mov ebp,esp 这是因为Ollydbg将数据当汇编代码来分析了,你可以按Ctrl+ALT+向上光标键将当前显示的代码向上滚动一个字节就可看到正确的汇编代码了: 004010CC 55 push ebp 004010CD 8BEC mov e
您可能关注的文档
最近下载
- 附件视频监控存储升级项目要求及参数.doc VIP
- 【高中地理】区域地理:天气与气候,气温及分布规律课时2课件 2023-2024学年高二人教版(2019)地理选择性必修1.pptx VIP
- 2025年安全金融知识题库及答案.docx VIP
- 施工方案管理培训课件.docx VIP
- 【高中地理】区域地理:天气与气候,气温及分布规律课时1课件2023-2024学年高二人教版(2019)地理选择性必修1.pptx VIP
- 全新IMPA船舶物料指南(第7版)电子版.xls VIP
- 东方财富杯金融安全知识题库.docx VIP
- 2025年必威体育精装版详版征信报告个人信用报告样板模板word格式新版可编辑.docx
- 孙氏太极拳(孙禄堂原著孙剑云整理).pdf VIP
- 车辆抵押借款合同范本协议(2025版).docx VIP
文档评论(0)