5.windbg script-禁用IsDebuggerPresent(调试 kernel32!SetUnhandledExceptionFilter)

来源:互联网 发布:武汉矩阵互动科技抄袭 编辑:程序博客网 时间:2024/06/05 06:18

0:000> u 7732378f KERNELBASE!IsDebuggerPresent:7732378f 64a118000000    mov     eax,dword ptr fs:[00000018h]77323795 8b4030          mov     eax,dword ptr [eax+30h]77323798 0fb64002        movzx   eax,byte ptr [eax+2]7732379c c3              ret

简单的script

r @$t0 = kernelBase!IsDebuggerPresent; eb @$t0+0x9 31 c0 90 90

强制把原代码改成xor eax, eax; nop; nop

注意在xp下,使用kernel32

调试 kernel32!SetUnhandledExceptionFilter

这个函数并不长. 它会调用 IsDebugPortPresent(), 如果存在调试器, 则直接返回, 让调试器处理异常. 否则调用用户通过 SetUnhandledExceptionFilter() 注册的处理函数.
如果要调试自己的处理函数,可以在 IsDebugPortPresent() 函数返回之后, 将 eax 置 0.