返回信息流以前一直认为ebp-4是第一个局部变量的地址,在所有的逆向文档中我都是这么注释的,
刚才悄悄地发现ebp-1c才是第一局部变量的地址,从ebp-4到ebp-18的栈空间构造的是一个用于seh处理的结构体,这也就是为什么栈溢出能够覆盖到SEH处理地址的原因。
火星了。。。。。。。
这是一条镜像帖。来源:北邮人论坛 / security / #13219同步于 2007/9/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Security机器人发帖
[灌水]逆了一下_SEH_prolog,才知道以前有个认识一直是错的
flyingkisser
2007/9/5镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
SEH压根就没有官方doc。。。= =
【 在 rebirthatsix (茫犭者) 的大作中提到: 】
: 那说明不止一个技术论上的教程有错误,很多关于汇编内函数调用参数入栈的代码中都没有标注这个seh处理的结构体。。
应该是这玩意吧。。。
;typedef struct _EXCEPTION_REGISTRATION PEXCEPTION_REGISTRATION;
;struct _EXCEPTION_REGISTRATION{
; struct _EXCEPTION_REGISTRATION *prev;
; void (*handler)(PEXCEPTION_RECORD, PEXCEPTION_REGISTRATION, PCONTEXT, PEXCEPTION_RECORD);
; struct scopetable_entry *scopetable;
; int trylevel;
; int _ebp;
; PEXCEPTION_POINTERS xpointers;
;};
_EXCEPTION_REGISTRATION struc
prev dd ?
handler dd ?
_EXCEPTION_REGISTRATION ends
在VC++的crt运行库里(exsup.inc)...居然还注释掉了。。。=v=b
不过具体是咋放的。。。各种糊涂。。。猫哥给讲讲
_EXCEPTION_REGISTRATION结构的定义除了prev和handler字段外,其它都是
自定义的,近期会对这块内容做个总结。
【 在 CNLAS (Ich gewinne bestimmt……) 的大作中提到: 】
: 应该是这玩意吧。。。
: ;typedef struct _EXCEPTION_REGISTRATION PEXCEPTION_REGISTRATION;
: ;struct _EXCEPTION_REGISTRATION{
: ...................
【 在 flyingkisser 的大作中提到: 】
: 以前一直认为ebp-4是第一个局部变量的地址,在所有的逆向文档中我都是这么注释的,
: 刚才悄悄地发现ebp-1c才是第一局部变量的地址,从ebp-4到ebp-18的栈空间构造的是一个用于seh处理的结构体,这也就是为什么栈溢出能够覆盖到SEH处理地址的原因。
: 火星了。。。。。。。
牛人啊,研究得这么深入!