SEHinASM研究(一).pdfVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SEHinASM研究(一),公安部第一研究所,研究生学费一年多少,平特一肖研究方法,一带一路研究院,郑大一附院研究生处,平特一肖研究规律,在职研究生最后一年,一月份在职研究生,化学是一门研究物质的

SEH in ASM 研究(一) 疯狂代码 http://CrazyC/ ĵ http:/CrazyC/Waigua/Article60251.html   SEH出现已绝非日,但很多人可能还不彻底了解Seh运行机制;有关seh知识资料不是很多,asm级详细 资料就更少!seh不仅可以简化处理,使你更加健壮,还被广泛应用于反跟踪以及加解密中,因此,了解seh非常必要, 但遗憾是有关seh详细介绍中文资料非常少,在实战基础上,把自己学习点笔记奉献给大家,希望对喜欢ASM朋友有 所帮助.如有,请高手不吝指正.   、SEH背景知识   SEH(Structured Exception Handling),即结构化异常处理.是操作系统提供给设计者强有力处理或异常武 器.在VISUAL C中你或许已经熟悉了_try{} _finally{} 和_try{} _except {} 结构,这些并不是编译本身所固有,本质上 只不过是对windows内在提供结构化异常处理包装,不用这些高级语言编译器所提供包装 ,照样可以利用系统提 供强大seh处理功能,在后面你将可以看到,用系统本身提供seh结构和规则以及ASM语言, 我们将对SEH机制以及 实现有个彻底了解.   发生异常时系统处理顺序(by Jeremy Gordon)   1.系统首先判断异常是否应发送给目标异常处理例程,如果决定应该发送,并且目标正在被调试,则系统挂起并 向调试器发送EXCEPTION_DEBUG_EVENT消息.呵呵,这不是正好可以用来探测调试器存在吗?   2.如果你没有被调试或者调试器未能处理异常,系统就会继续查找你是否安装了线程相关异常处理例程,如果 你安装了线程相关异常处理例程,系统就把异常发送给你seh处理例程,交由其处理.   3.每个线程相关异常处理例程可以处理或者不处理这个异常,如果他不处理并且安装了多个线程相关异常处 理例程, 可交由链起来其他例程处理.   4.如果这些例程均选择不处理异常,如果处于被调试状态,操作系统仍会再次挂起通知debugger.   5.如果未处于被调试状态或者debugger没有能够处理,并且你SetUnhandledExceptionFilter安装了最后异 常处理例程话,系统转向对它.   6.如果你没有安装最后异常处理例程或者他没有处理这个异常,系统会默认系统处理,通常显示个对话框,你可 以选择关闭或者最后将其附加到调试器上调试按钮.如果没有调试器能被附加于其上或者调试器也处理不了,系统 就ExitProcess终结.   7.不过在终结的前,系统仍然对发生异常线程异常处理句柄来次展开,这是线程异常处理例程最后清理机会. 如果你看了上面步骤头雾水话,别着急,化点时间慢慢理解或者进入下部分例子操作.    2.初步实战演习   安装异常处理句柄.   有两种类型异常处理句柄,种是final型,这是在你异常未能得到线程相关处理例程处理操作系统在即将关闭的 前会 回调例程,这个例程是进程相关而不是线程相关,因此无论是哪个线程发生异常未能被处理,都会这个例程.   I. 见下面例子1 ;//例子1final型异常处理= ;// ex. 1,by Hume,2001,just copy make your own hd.h and compilelink ;// .386 .model flat, stdcall option map :none ; sensitive hd.h     ;//相关头文件你自己维护个吧 ;// .data szCap  db By Hume[AfO],2001...,0 szMsgOK db OK,the exceptoin was handled by final handler!,0 szMsgERR1 db It would never Get here!,0 buff  db 200 dup(0) .code _start ;//prog begin   lea  eax,Final_Handler   invoke  SetUnhandledExceptionFilter,eax ;//SetUnhandledExceptionFilter来安装final SEH                          ;//原型很简单SetUnhandle

文档评论(0)

xingkongwd + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档