在 Win10 中调试时抛出的奇怪异常,但在 Win7 中没有

逆向工程 艾达 调试 x64dbg 例外
2021-07-09 04:22:47

我正在使用 IDA Home (7.6)(用于 x86 反汇编)在虚拟机(VMWare Fusion for Mac)中运行的 64 位 Windows 10 环境中反汇编旧的32 位 (x86) 应用程序。应用程序在调试器之外执行时没有问题,但是,当使用 IDA 中的“本地 Windows 调试器”(作为MetaPC项目加载运行应用程序时会抛出未知异常代码 6A6 ”:

                                        IDA 错误异常消息

此异常发生在应用程序在调试器中开始执行后不久(即没有任何应用程序用户输入)。

为了消除 IDA 可能存在的问题,我使用x32dbg调试器和Ollydbg调试器进行了测试两个调试器都抛出相同的异常,即RPC_S_INVALID_BINDING( 0x000006A6) 错误:

                        x32dbg 引发异常

我花了一些时间思考为什么我在调试器中运行应用程序时遇到问题,我想出了几个可能的原因:

  1. 反调试技术。
  2. 64 位调试器加载了错误的 DLL(即,当 64 位 DLL 应该加载位于 中的 32 位 DLL 时,他们加载了 64 位 DLL C:\WINDOWS\SysWOW64\)。
  3. 别的(??)

使用 Service Pack 1 环境设置 64 位 Windows 7 后,我可以反驳 #1 和 #2都不是问题。我能够调试IDA的应用程序没有问题,而在此Windows 7环境下(即6A6异常抛出)。

所以,这让我想到了#3——一个令人头疼的时刻。我对RPC_S_INVALID_BINDING( 0x000006A6) 错误进行了一些研究,并遇到了这个 StackOverflow 问题命名,接受的答案指出以下内容:

解释“绑定句柄无效”

今天我想尝试更深入地了解许多人使用 VS 2005 调试器报告的“绑定句柄无效”问题。

首先,如果您只关心如何解决问题:启用“终端服务”服务并重新启动。如果您想了解更多,请继续阅读。

我尝试启用Terminal Services(现在Remote Desktop Services在 Windows 10 [参考]命名),但是,这并不能解决问题,我仍然收到“未知异常代码 6A6 ”错误。RPC_S_INVALID_BINDING0x000006A6)错误混淆了我不少。

我的 Windows 10 环境设置显然有问题,不允许我专门调试此应用程序。Windows 7 发生了一些变化,导致了这个问题,我在这里不知所措。

有谁知道这里可能有什么问题?


环境详情:

  • 在 VMWare Fusion (12.2.1 (18811640)) 中测试的操作系统:
    • [❌ - 问题] Windows 10 (x64) - 版本 19042 (20H2 / 20H2)
    • [❌ - 问题] Windows 10 (x64) - Build 15063 (1703 / Redstone 2)
    • [❌ - 问题] Windows 10 (x64) - Build 14393 (1607 / Redstone 1)
    • [✅ - 没有问题] Windows 7 Ultimate (x64) - Build 7601 (Service Pack 1)
  • 使用的工具(以管理员身份启动):
    • IDA 主页 7.6 (v7.6.210427) (x64)
    • x32dbg(发布“2021 年 7 月 1 日,23:09:08”)(x64)
    • Ollydbg (v2.01) (x86)

更新 #1:

根据要求,这是发生异常时的调用堆栈(又名堆栈跟踪):

在异常点调用堆栈

该应用程序似乎正在检查 DirectX9 环境以及它是否受支持。虽然,这是我对 DLL 名称的猜测DX9EnvChk.dll,它包含在相关应用程序旁边。我无法通过普通的网络搜索找到有关此 DLL 的太多信息,但它似乎与那个时代的其他应用程序一起存在。据我所知,这个 DLL(也不是随附的头文件)不是Microsoft DirectX SDK(2010 年 6 月)的一部分

0个回答
没有发现任何回复~