注册

CpuDbg x96

查看: 3676|回复: 0
收起左侧

[CpuDbg x96] 奇怪的 STATUS_WX86_BREAKPOINT 异常

[复制链接]
发表于 2022-3-17 23:26:07 | 显示全部楼层 |阅读模式
我正在尝试在 Windows 上编写一个简单的调试器来调试 32 位应用程序,我的机器是 64 位的。我使用的是 C 语言。
当我在指定地址添加断点 (0xCC) 时,我希望在 debugEvent.u.Exception.ExceptionRecord.ExceptionCode 中获取 EXCEPTION_BREAKPOINT 值,
但我得到的却是 STATUS_WX86_BREAKPOINT(0x4000001F)。MSDN 网站将其定义为“Win32 x86 仿真子系统使用的异常状态代码”。没有对此行为进行进一步的解释。
我可以用 EXCEPTION_BREAKPOINT 相同的方式处理此异常吗?因此代码将为
switch(debugEvent.u.Exception.ExceptionRecord.ExceptionCode){... case EXCEPTION_BREAKPOINT: case STATUS_WX86_BREAKPOINT: HandleBreakPoint();中断;...}

当断点(int 3)异常来自以 WOW64 模式(64 位 Windows 中的 32位代码)执行代码时,64 位调试器实际上得到了STATUS_WX86_BREAKPOINT。当断点来自 64 位代码时 - STATUS_BREAKPOINT。同样,在单步异常中,如果此异常来自 64 位代码,则 64 位调试器得到 STATUS_SINGLE_STEP,如果异常来自 WOW64 代码,则得到 STATUS_WX86_SINGLE_STEP。
我可以使用与 EXCEPTION_BREAKPOINT 相同的方式处理此异常吗?因此代码将都需要是
的,你可以。STATUS_WX86_SINGLE_STEP 也是如此 - 你可以使用与 STATUS_SINGLE_STEP 相同的方式处理它。WX86_ 为你提供了有关断点来自某种模式(WOW64但在不可的情况下,这都是断点异常。并且处理它的逻辑通常是常见的。但是这是您的选择,决定做什么以及如何处理断点、单步或其他异常。
还要注意,STATUS_WX86_BREAKPOINT 和 STATUS_WX86_SINGLE_STEP 此 64 位调试器中获得。32 位调试器始终获得 STATUS_BREAKPOINT,而 64 位调试器获得 STATUS_WX86_BREAKPOINT,而 x64 调试器获得 STATUS_BREAKPOINT 时什么也没有获得。单步也是一样。例如,在WOW64进程启动时 - 64 位调试器获得 2 个断点 - 第一个来自 64 位模式的 STATUS_BREAKPOINT(在 64 位 ntdll.LdrpDoDebugBreak 内),然后是来自 32 位 ntdll.LdrpDoDebugBreak 的STATUS_WX86_BREAKPOINT。而 32 位调试器仅获得第二个断点(来自 32 位代码),其状态为 STATUS_BREAKPOINT。

[size=0.9em]answered on Stack Overflow Aug 19, 2018 by RbMm • edited Aug 19, 2018 by StaceyGirl


摘自: Windows Hex Error Lookup
---------------------------------------------------------------------
2023.01.03
现在终于搞明白 STATUS_WX86_BREAKPOINT 事件是什么意思了。
原来是64位调试器调试32位程序时,接收到STATUS_WX86_BREAKPOINT显示32位模块触发INT3断点。
接收到EXCEPTION_BREAKPOINT显示64位模块触发的INT3断点。
参考链接: STATUS_WX86_BREAKPOINT
---------------------------------------------------------------------
待续


回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注册

QQ|Archiver|手机版| CpuDbg x96

GMT, 2024-12-22 05:53 , Processed in 0.062500 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表