如何调试全屏应用程序

逆向工程 ollydbg 虚拟机 偏僻的
2021-06-20 18:06:52

我需要调试一个旧的(1999 年)全屏应用程序。当我打开应用程序并附加 olly 时,程序崩溃了。

我听说过远程调试。在 VM 上运行该程序,然后将 Windbg 附加到远程机器上的应用程序是否可以解决问题?

2个回答

您可以像使用内核连接的用户模式调试器一样使用 windbg

打开vm
install windbg in vm
install the full screen game in vm

将虚拟机连接到主机中的内核调试器

执行 ntsd -d {vm 中的全屏应用}

主机中的内核调试器将作为调试应用程序的普通用户模式调试器启动(继续使用的语法有点棘手,请参阅 Windbg 手册了解使用 ntsd -d 的语法)

在处理全屏软件时,我通常会执行以下操作之一:

  1. 正如布拉布所说,设置远程调试器是一种选择,尽管我通常觉得使用和设置有点慢且烦人。
  2. 偶尔有一个配置选项可以切换到窗口模式。它并不总是存在,但当它是最佳选择时。
  3. 由于您已经在调试和反转它,因此您始终可以挂钩它的全屏请求 API(通常ChangeDisplaySettingsChangeDisplaySettingsEx在 Windows 上)。
  4. 如果你不能hook或找到全屏API(如果软件有反调试可能是鸡和蛋的问题),你可以ChangeDisplaySettings在获得程序全屏窗口的窗口句柄后调用自己并禁用全屏模式.
  5. 或者您可以简单地使用许多现有工具中的一种来实现这一点,它们在这个 SO 问题中有所涉及:https : //superuser.com/questions/318748/force-fullscreen-games-to-in-window-mode

希望有帮助:)