飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 5880|回复: 11

[分享] Windows x86 异常机制资料分享

[复制链接]

该用户从未签到

发表于 2015-1-17 23:03:29 | 显示全部楼层 |阅读模式
对某个事物的认识有这样几个层面:
一个是听说过,一般情况下了解如何处理。
一个是知道,看过MSDN的文档,函数说明,了解官方所给出的说明。
一个是明白,看过该功能的源码或逆向跟踪过整个函数流程。了解其所走的每一步是怎么回事。

对 Win32 异常机制的了解上,很多人都停留在 FS:[0] \ FS:[18] 取到SEH链,然后根据头结点指针找出该函数异常后执行的跳转地址。这个层面就是第一种情况。
R3在触发异常后,由R0首先接管异常,然后抛给R3继续处理,那到R3执行的第一条指令在哪里?我们对NTDLL代码段下硬件访问异常,中断在 ntdll.dll 的 KiUserExceptionDispatch 函数。前两天我整个跟踪逆向了一遍,同时也在网上看到了一些整理的很不错的逆向资料,这里先把资料分享给大家。等有时间了我把自己的分析过程也整理一份。除了网上的,也可以从《软件调试》这本书上来查询,不过我觉得看书不如自己亲自调试分析一遍。

自己分析的话建议大家自己编译exe,这里有pdb文件方便分析,静态还是IDA,需要动态跟踪流程的时候建议大家IDA生成一份map,然后OD加载便于了解call是哪个函数。


这里是 Windows 异常机制的相关资料 :

Structured Exception Handling Functions :http://msdn.microsoft.com/el-gr/ms680659
Structured Exception Handling Functions: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680659
本地:ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/debug/base/structured_exception_handling_functions.htm



这里 yuzl32 的异常机制分享文章,很不错(代码逆的很不错),你若想弄明白这些函数的调用流程,那最好的方案还是自己来跟踪一遍。

逆向分析kernel32.dll!__local_unwind2函数
http://blog.csdn.net/yuzl32/article/details/5391821

逆向分析kernel32.dll!_global_unwind2函数
http://blog.csdn.net/yuzl32/article/details/5404726

逆向分析NtDLL.dll!RtlUnwind函数
http://blog.csdn.net/yuzl32/article/details/5406173

逆向分析MSVCR90D.dll!_except_handler4函数
http://blog.csdn.net/yuzl32/article/details/5447592

逆向分析MSVCR90D.dll!_except_handler4_common函数
http://blog.csdn.net/yuzl32/article/details/5449480

逆向分析MSVCR90D.dll!_EH4_LocalUnwind函数
http://blog.csdn.net/yuzl32/article/details/5457022

入研究Win32结构化异常处理(SEH总结篇)
http://blog.csdn.net/yuzl32/article/details/5459676


hongjiqin 分享的 《Win32 SEH异常深度探索》 的翻译文章:(这个我还没看 ...)

原文地址: http://www.microsoft.com/msj/0197/exception/exception.aspx

Win32 SEH异常深度探索_1
http://blog.csdn.net/hongjiqin/article/details/4593779
Win32 SEH异常深度探索_2 异常链表遍历
http://blog.csdn.net/hongjiqin/article/details/4593791
Win32 SEH异常深度探索_3 默认异常回调函数
http://blog.csdn.net/hongjiqin/article/details/4593802
Win32 SEH异常深度探索_4 编译器对SEH的支持
http://blog.csdn.net/hongjiqin/article/details/4593812
Win32 SEH异常深度探索_5 一个异常帧链表遍历例子
http://blog.csdn.net/hongjiqin/article/details/4593821
Win32 SEH异常深度探索_6 回退
http://blog.csdn.net/hongjiqin/article/details/4593830
Win32 SEH异常深度探索_7 对未处理异常的默认处理
http://blog.csdn.net/hongjiqin/article/details/4593838
Win32 SEH异常深度探索_8 异常处理是如何开始的
http://blog.csdn.net/hongjiqin/article/details/4593849
Win32 SEH异常深度探索_9 总结
http://blog.csdn.net/hongjiqin/article/details/4593862


C++异常处理机制__1.SEH处理的函数栈布局
http://blog.csdn.net/hongjiqin/article/details/4555497
C++异常处理机制__2.SEH异常抛出与处理
http://blog.csdn.net/hongjiqin/article/details/4558046
C++异常处理机制__3.编译器何时生成栈回退代码
http://blog.csdn.net/hongjiqin/article/details/4559237


[翻译]深入理解Win32结构化异常处理(一)
http://www.cnblogs.com/salomon/archive/2012/06/20/2556134.html
[翻译]深入理解Win32结构化异常处理(二)
http://www.cnblogs.com/salomon/archive/2012/06/20/2556334.html
[翻译]深入理解Win32结构化异常处理(三)
http://www.cnblogs.com/salomon/archive/2012/06/20/2556349.html
[翻译]深入理解Win32结构化异常处理(四)
http://www.cnblogs.com/salomon/archive/2012/06/20/2556363.html



看雪论坛上的一些资料

标 题: 【原创】VEH,VCH,UEF Windows向量化异常处理机制详解
作 者: bxc
时 间: 2014-06-22,19:04:48
链 接: http://bbs.pediy.com/showthread.php?t=189315

【原创】白话windows之四 异常处理机制(VEH、SEH、TopLevelEH...)
作 者: ddlx
时 间: 2013-06-19,01:41:37
链 接: http://bbs.pediy.com/showthread.php?t=173853

标 题: 【原创】VEH分析
作 者: zeif
时 间: 2013-03-22,18:25:59
链 接: http://bbs.pediy.com/showthread.php?t=166472


Structured Exception Handling
http://bbs.pediy.com/showthread.php?threadid=14042
PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2019-6-10 19:45
  • 签到天数: 58 天

    [LV.5]常住居民I

    发表于 2015-1-18 02:15:09 | 显示全部楼层
    感谢N大分享这么好的资料
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-9-27 19:17
  • 签到天数: 31 天

    [LV.5]常住居民I

    发表于 2015-1-18 02:18:53 | 显示全部楼层
    一下搜集了这么多!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-5-22 17:27
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2015-1-18 14:25:19 | 显示全部楼层
    感谢Nisy分享{:soso_e129:}
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 962 天

    [LV.10]以坛为家III

    发表于 2015-1-18 19:53:06 | 显示全部楼层

    膜拜神贴,后面的请保持队形~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-2-26 11:14
  • 签到天数: 459 天

    [LV.9]以坛为家II

    发表于 2015-1-18 20:27:46 | 显示全部楼层
    目前我还停留在第一层的上面  
    感谢这么多的资料
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2024-2-21 20:23
  • 签到天数: 69 天

    [LV.6]常住居民II

    发表于 2015-1-18 21:05:27 | 显示全部楼层
    学习学习,拿走
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-3-17 22:44
  • 签到天数: 132 天

    [LV.7]常住居民III

    发表于 2015-1-18 21:22:55 | 显示全部楼层
    Nisy是知识渊博的智者,友情顶贴。{:soso_e100:}
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-3-10 19:49
  • 签到天数: 473 天

    [LV.9]以坛为家II

    发表于 2015-1-19 09:12:56 | 显示全部楼层
    谢谢姐姐收集这么多资料。收藏了
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表