Windows x86 异常机制资料分享
对某个事物的认识有这样几个层面:一个是听说过,一般情况下了解如何处理。
一个是知道,看过MSDN的文档,函数说明,了解官方所给出的说明。
一个是明白,看过该功能的源码或逆向跟踪过整个函数流程。了解其所走的每一步是怎么回事。
对 Win32 异常机制的了解上,很多人都停留在 FS: \ FS: 取到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
感谢N大分享这么好的资料 一下搜集了这么多! 好东西! 感谢Nisy分享{:soso_e129:}
膜拜神贴,后面的请保持队形~ 目前我还停留在第一层的上面
感谢这么多的资料 学习学习,拿走 Nisy是知识渊博的智者,友情顶贴。{:soso_e100:} 谢谢姐姐收集这么多资料。收藏了
页:
[1]
2