-
-
[分享]辅助调试UnhandledExceptionFilter 用的WinDBG Script
-
发表于:
2013-3-13 16:00
5156
-
[分享]辅助调试UnhandledExceptionFilter 用的WinDBG Script
菜鸟交流帖,没啥技术含量,大牛就直接跳过吧。
有热心的大牛给些指导意见 当然更加欢迎。
众所周知,调试使用了SetUnhandledExceptionFilter的SEH时,我们需要修改NtQueryInformationProcess的查询结果,否则所设置的UnhandledExceptionFilter 没机会运行。
这个script就是简单地修改下查询结果,只有一句:
bp NtQueryInformationProcess ".if (poi(@esp)-kernel32!UnhandledExceptionFilter<0x200) {.if(poi(@esp + 8) == 7){r @$t0=poi(@esp + 0xc);bp /1 poi(@esp) \".if($t0){ed @$t0 0};gc\"}};gc"
用法就是 当被调进程异常中断在windbg中的时候,输入上面的命令 或者 $$><执行附件里的txt
思路大体上就是 在 NtQueryInformationProcess处 下个断点,断下来之后 判断 是不是从 UnhandledExceptionFilter里面调用进来的、传第二个参数是否等于ProcessDebugPort,是的话则记录下接收查询结果的地址 和 返回地址,然后在返回地址处下了个断点,在这个断点命中的时候 修改查询结果。
我只在win7 64 上调试了一个32位小exe,能用。不知道其他环境下 能不能用。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课