通过IAT Hook调试Windows自定义未处理异常过滤器.pdfVIP

  • 11
  • 0
  • 约1.74万字
  • 约 5页
  • 2017-06-06 发布于河南
  • 举报

通过IAT Hook调试Windows自定义未处理异常过滤器.pdf

通过IAT Hook调试Windows自定义未处理异常过滤器

推荐:亚高效过滤器/4/ 铝隔板高效过滤器/2/ H13/H14无隔板高效过滤器/5/ 2009年 第 12期 计 算 机 系 统 应 用 通过 IATHook调试Windows自定义未处理 异常过滤器① DebugWindowsCustom FiltersforUnhandledExceptionsbyIATHook 吴 标 赵 方 (北京林业大学 信息学院 北京 100083) 摘 要:Windows自定义未处理异常过滤器在程序崩溃时是查找原因的重要途径,实现了一种使用 IAT(Import AddressTable)Hook改变Windows处理未处理异常的流程来调试 自定义未处理异常过滤器的代码的方 法,简化此部分代码的错误检查工作,此方法兼容性和复用性较高。HobkAPI方法采用比较挂钩函数 的返回地址来确定其调用函数,改进了普通的IATHook方法影响整个进程 内所有调用的缺点。 关键词: IATHook调试 自定义未处理异常过滤器 ’ 1 引言 了解决此问题 ,本文提 出一种使用 IATHook改变 WindowsSEH为在每个线程启动时都安装了一个 Windows处理未处理异常的流程的方法,使在调试器 最顶层的默认的异常处理程序,这个异常处理程序作为 下未处理异常程序的控制流能流向自定义未处理异常 异常帧链表的最后一个节点,专门处理线程的所有内层 过滤器。 异常处理程序都未处理的异常,此异常处理程序的异常 过滤器部分称为未处理异常过滤器,即 Kernel32.dll 2 使用自定义未处理异常过滤器的程序框架 里的 UnhandIedExcepti0nFIIter函数 1【1。Windows 写一个简单的程序来追寻此问题的原因,工程名 SEH可以让用户代码注册一个 自定义未处理异常过滤 为 DebugCustomFilter,程序代码如下: 器,然后在WindowsSHE的未处理异常过滤器调用自 //自定义未处理异常过滤器函数 定义未处理异常过滤器来让用户代码获得对未处理异 LONG WINAPI MyCustomFilter(EXCEP 常的处理机会 ,具体通过 SetUnhandledExcepti0n TION—POINTERS pep){ Filter函数实现。线程发生了异常却找不到异常处理程 MessageBox(NULL,IIII, M“yCustomFilter”, 序时,程序的控制流转向未处理异常过滤器再转到用户 MB—OK): 代码 自定义未处理异常过滤器 ,所以自定义未处理异常 returnEXCEPTION—EXECUTE—HANDLER; 过滤器部分在一个健壮的程序中必不可少,在程序崩溃 } 时自定义未处理异常过滤器是程序的最后一道关口,在 voidmain(){ 分析程序崩溃原因时自定义未处理异常过滤器部分是 inti,j: 重要的技术手段。 //注册未处理异常过滤器 而在编写自定义未处理异常过滤器的程序时发 SetUnhandledExceptionF.Iter(MyCustomFilt 现 ,自定义未处理异常过滤器的代码在程序单独运行 er): 的情况下可以执行,而在调试状态下却没有执行,为 //产生除O异常 ① 基金项目:国家科技支撑项目(2006BAD10A03) 收稿时间:2009—03—18 PracticalExp

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档