- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SEH机制的逆向.
一、SEH机制逆向探秘(一)实验测试环境由于SEH机制与调试器有关,所以我们必须使用relese版本测试平台:虚拟机VM9,,Win Xp Sp3系统、VC6.0(二)源代码的分析+高级代码级SEH机制分析(1)源代码分析代码中使用_try{}_except()结构来构造并处理一个异常。其中:_try结构中的代码是正常功能的代码,也就是原本需要侦听、测试的代码。我们在其中构造了一个除零异常。_except结构中调用了(安装了)一个异常处理函数。来对_try结构中的异常进行处理。(但未处理掉)(2)从宏观来理解异常处理机制运行程序,此时会弹出Messagebox,验证了MyExceptionhandler()捕捉到了异常,并首先去处理了异常,所以弹出了Messagebox。我们点确定,则会出现异常提示框。这是由于此MyExceptionhandler()函数未能处理这个异常,所以最后调用系统默认的异常结构来处理异常。我们在MyExceptionhandler()中加上exit(0)函数,运行,弹出messagebox后点击确定,程序正常退出。没有弹出异常提示框。这是由于MyExceptionhandler()首先处理异常时,直接退出了程序,系统默认异常并未得到调用。(三)逆向(汇编代码级)分析SEH机制下面我们通过分析汇编代码,来看SEH机制的内部细节。1、SEH结构的安装(1)首先载入程序,发现栈底附近已经有个一个SEH结构,这就是系统默认的SEH结构,其中0x7xxxxx就是实现异常对话框弹出并退出程序功能的!(2)我们看到程序载入处就是一个SEH安装,这就是当线程初始化时,系统会自动向栈中安装一个SEH,作为线程的默认异常处理。之后就是正常的程序初始化了。(3)找到test函数,发现,进入test函数后,程序首先安装了一个SEH结构,这个结构就是我们使用_try_except结构安装的线程异常处理结构。在汇编中,SEH结构的安装使用以下结构:在test函数中的SEH安装后,我们打开查看-SEH链可以看到当前的SEH链表。对于这个链表,我们分析。第一个是写的,第二个是线程默认的,最后一个是系统默认的。当出现异常时,系统就会按照这个顺序调用异常处理函数,对异常进行处理。2、触发异常后(IDIV ECX指令),系统的动作。此时系统会捕捉到异常,从而将程序的控制权交给系统。也就是说转入系统领空。(需要说明一点:在破解crackme时,一般进入系统后,我们都是很快回到程序领空,但在系统机制的逆向中,我们必须在系统领空中去分析!!!)程序转到这,系统领空。(1)在这里,系统第一步做的是:保存当前环境。即,将程序出现异常时的环境保存起来(保存到系统栈中)push ecx和push ebx,前者将EXCEPTION_RECORD结构入栈EXCEPTION_RECORD结构:其中第一个参数是异常代码0xC0000094表示是除零错误。后面的参数依次对应。后者是CONTEXT结构:比如偏移0X9C处保存EDI寄存器的值,我们可以查看一下:这些结构会在调用异常处理函数时当做参数传递给异常处理函数。后面会看到!(2)在系统领空中继续跟踪,知道出现异常,如此往复。!! 0x7C92E465-0x7C94A9EA-0x7C923275经过几层调用,找到了异常处理函数的调用处。(这几个函数的其他部分都是做什么的?)我们分析ECX的值,发现就是我们安装的SEH结构的异常处理函数地址!异常处理函数的4个参数:参数1:pExcept:指向EXCEPTION_RECORD结构体参数2:pFrame:指向栈帧中的SEH结构体。即,即将调用的SEH结构的栈地址参数3:pContext:指向Context结构体。该结构体中包含所有寄存器的状态。参数4:pDispatch:未知用途。(3)此时进入第一个异常处理函数地方。进入第一个异常处理函数地方,回到了程序领空。往下执行,到004011FF CALL DWORD PTR DS:[EDI+ECX*4+4] ; 这时,进入就是我们具体的异常处理代码(进入MyExceptionhandler()中进行异常处理),弹出messagebox。所以,我们可知,系统调用的第一个异常处理结构是线程的,也就是使用_try_except结构安装的。(4)处理完后,如果这个处理函数没能将异常处理完,则继续进入系统领空进行下一个SEH结构的调用。控制权又回到系统手中。系统继续进行相同的处理,只不过此次调用的异常处理SEH成为下一个SEH,具体可比对系统调用异常处理函数的参数2,发现其SEH地址明显成为下一个SEH结构的地址。(5)对线程默认的异常处理结构进行分析。此时,进入的异常处理函数应该就是线程默认的异常处理过程。继
您可能关注的文档
- SDA超薄气缸尺寸..doc
- SDA系列数字硬盘录像监控系统..doc
- SDE气体灭火系统规范..doc
- SDE数据库连接..doc
- SDH传输设备误码问题论文..doc
- SDHMSTP设备以太网专线业务数据配置..doc
- SDH开销字节描述..doc
- SDJ26-1989发电厂变电所电缆选择与敷设设计规程..doc
- Sd105b水工溷凝土试验规程..doc
- SDH维护经验_S385设备开通及复用段保护环配置..doc
- 2023年黄山市公务员考试行测试卷历年真题完整答案详解.docx
- 2023-2024学年海南省澄迈县八年级上学期期末语文试题及答案.pdf
- 2023年黄山市公务员考试行测试卷历年真题完整参考答案详解.docx
- 2023年黄石市公务员考试行测试卷历年真题及参考答案详解1套.docx
- 2023年黄石市公务员考试行测试卷历年真题及一套参考答案详解.docx
- 2023年黄石市公务员考试行测试卷历年真题及1套参考答案详解.docx
- 2023年黄石市公务员考试行测试卷历年真题及一套完整答案详解.docx
- 医疗健康产业市场潜力分析.pptx
- 建筑工程招投标二级建造师聘用合同范本(附人员配置).docx
- 2023年黄石市公务员考试行测试卷历年真题参考答案详解.docx
文档评论(0)