- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SEH 结构化异常处理
标 题: 【原创】加密与解密二版菜鸟学习笔记(2) - SEH 结构化异常处理
发帖人:ytcswb
时 间: 2005-02-01 16:40
原文链接:/showthread.php?threadid=10651
详细信息:
看学加密与解密二版学习笔记(2) - SEH 结构化异常处理
[ 工 具 ] flyod1.10
[ 目 的 ] 学习SEH的手法,另书中是用SoftICE调试的,看起来不习惯.根据原文内容重新整理一下,便于和我一样的菜鸟们一起学习.
今天下决心,好好学习,这是就算是个开始吧!感觉学明白的确很不容易!
[ 注 释 ] ?--为不能理解的地方,请大侠们指点一下.学习过程中,有理解错误的地方,肯请大侠们多多指教.
[练习对象] 加密与加密二版第10章,光盘配套的练习软件:seh.exe seh2.exe
[ writer ] ytcswb 2005.2.1 感谢看学及论坛的大侠们为我们提供这么好的学习资料。
1.例子seh.exe学习: $ 8D4424 F8 lea eax,dword ptr ss:[esp-8] //程序入口!根据下面的代码分析,这里显然可以
//理解为开辟8字节的空间,并把栈顶指针保存到eax
//相当于sub esp,8 ; lea eax,dword ptr ss:[esp] . 64:8705 00000xchg dword ptr fs:[0],eax //记住fs[0]永远是指向当前err结构的指针,
//执行完成后,fs[0]指向栈顶,准备在堆栈中构造1个err结构
//eax等于原fs[0],即指向原来的err结构的指针,即那个err结构的地址
0040100B . BB 2E104000 mov ebx,Seh.0040102E //地址40102e--ebx,建议在此地址上设断点,才能正常跟踪入seh代码中 . 53 push ebx //压入堆栈,即当前err结构的handler成员,当前异常处理代码的入口地址 . 50 push eax //压入原fs[0],即当前err结构的prev成员,即下一个err结构的地址
此时堆栈:
0012FFBC 0012FFE0 指针到下一个 SEH 记录 //0012FFE0是个指针,看看就知道指向下一个err结构,数值上等于下一个err结构的地址
0012FFC0 0040102E SE 句柄 //建立了1个当前的err结构
0012FFE0 FFFFFFFF SEH 链尾部
0012FFE4 77E74809 SE 句柄
err结构的定义[在Essup.INC源文件中定义的---VC++ CRT(CRT含义:C++RunTime library)]:
_EXCEPTION _REGISTERATION stru
prev dd ? //指向下一个err结构的指针,数值上等于下一个err结构的首地址(在堆栈中)
handler dd ? //指向异常处理代码的指针,数值上等于异常处理代码的入口地址即首地址
_EXCEPTION _REGISTERATION ends . BE mov esi,0 //简单的赋值语句 . 8B06 mov eax,dword ptr ds:[esi] //读取线性地址0,产生异常
//执行后,windows检查到异常,执行线程马上被中段,从用户模式转到内核模式
原创力文档


文档评论(0)