Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

C/C++本地代码调试

帖子发起人: 风继续吹   发起时间: 2016-08-21 23:52 下午   回复: 2

Print Search
帖子排序:    
   2016-08-21, 23:52 下午
linkerrors 离线,最后访问时间: 2018/11/19 13:12:31 风继续吹

发帖数前50位
注册: 2014-09-27
发 贴: 23
请教一个关于windows异常分发的问题。
Reply Quote
我写了两个函数利用异常处理来检测反调试,分别利用了int3断点和0地址访问两种异常,但是得到的效果却不一样,所以来这里请教。
代码分别如下:
函数1:
BOOL MyIsDebuggerPresent_Int3()
{
__try
{
__asm int 3
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
return FALSE;
}

return TRUE;
}

函数2:
BOOL MyIsDebuggerPresent_AccessZeroAddress()
{
__try
{
int* pAddr = NULL;
*pAddr = 1;
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
return FALSE;
}

return TRUE;
}
程序中分别在main函数中调用这两个函数,如果返回TRUE,就表示该程序正在被调试,则会打印出"Being Debugged.",否则打印出"Not Being Debugged."。
现象是:当用windbg调试时,对于函数1,windbg会收到断点指令异常,在windbg中执行gu命令后会断下,当前的指令是test eax,eax(这条指令是在判断MyIsDebuggerPresent_Int3的返回值windbg没有给出中断的原因,为什么会断到这条指令呢?),然后执行gu命令,结果发现打印出"Being Debugged.",也即意味着函数1中的异常处理部分始终未被执行;而对于函数2,windbg会收到访问违规异常,在windbg中执行gu命令后会断下,当前的指令是test eax,eax(这条指令是在判断MyIsDebuggerPresent_AccessZeroAddress的返回值,windbg也没有给出中断的原因,为什么也会断到这条指令呢?),然后执行gu命令,结果发现打印出"Not Being Debugged.",也即意味着函数2中的异常处理部分被执行了。

问题:1、对于int3断点,为什么在windbg中执行了gu命令,自己的代码中针对该断点的异常处理没有被执行呢? 而针对访问违规在windbg中执行了gu命令,自己的代码中针对该访问违规的异常处理却被执行了。  2、针对int3断点以及访问违规这两种异常,windbg为什么会中断到判断函数返回值的指令呢? 且均没有给出中断原因。

跪求解答疑惑。

IP 地址: 已记录   报告
   2016-08-22, 02:22 上午
linkerrors 离线,最后访问时间: 2018/11/19 13:12:31 风继续吹

发帖数前50位
注册: 2014-09-27
发 贴: 23
Re: 请教一个关于windows异常分发的问题。
Reply Quote
睡不着,总觉得是自己哪里搞错了,刚才翻了一下windbg的帮助文件,果然是自己搞错了。 gn(Go with Exception Not Handled)命令才是返回强制不处理异常,我记成gu(Go Up)命令,误以为是(Go with Exception Unhandled)了。 希望各位不要犯和我相同的错误。
IP 地址: 已记录   报告
   2016-08-22, 10:33 上午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 请教一个关于windows异常分发的问题。
Reply Quote
精神可嘉
IP 地址: 已记录   报告
高端调试 » 软件调试 » C/C++本地代码调试 » 请教一个关于windows异常分发的问题。

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.