解决XP DDK编译的native程序在win2k下蓝屏的问题

看来不设法把对 RtlUnhandledExceptionFilter 的引用去掉是解决不了这个问题了。

继续用 IDA 简单分析一下,发现这个函数是被 security_check_cookie 所调用到,我们知道 security_check_cookie 这个函数是微软最新的编译器自动添加到函数的尾部,用来检测函数是否存在堆栈发生缓存溢出的错误,如果是普通应用程序,我们可以通过把 c/c++ 的编译选项 Buffer  Security Check 关掉,这样就不使用编译器的 /GS 开关,就不会自动添加 security_check_cookie 这个函数了,可是在native程序里如何去掉 /GS 开关呢。

查找 DDK 目录下的所有包含 /GS 的文件,发现文件 i386mk.inc 里面有个 BUFFER_OVERFLOW_CHECKS 和 /GS 相关,在 sources 文件里加入一句 BUFFER_OVERFLOW_CHECKS=0,重新用 xp ddk 编译,发现编出来的 exe 里面没有再链接 RtlUnhandledExceptionFilter 函数了,放在 win2k下运行,也不蓝屏了,问题解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值