2015-08-23 46 views
0

我有一个minigame.exe,它在游戏中的某个点崩溃。它不显示任何错误消息,它只是说不响应。我正在使用Win 7.我想确定崩溃点并尝试解决游戏问题。我认为这个问题可能是由于可执行文件导入了特定的DLL引起的。但是,我不知道如何找出特定的生产线并尝试用OllyDBG修补可执行文件。修补可执行文件以避免崩溃

回答

1

根据给出的信息,这个答案需要一个完整的教程风格,对于这个网站来说这个风格被认为太宽泛了。但是,要解释第一步,找出它是什么类型的碰撞以及碰撞发生的位置。

我将使用WinDbg作为调试器,因为我不熟悉OllyDbg。它是Debugging Tools for Windows的一部分,并且免费提供。安装匹配minigame.exe的版本x64或x86。

  1. 开始WinDbg中,使用正确的位数
  2. 运行minigame.exe的WinDbg(File/Open executable)下。它将在最初的断点停止。
  3. Set up the symbols,至少.symfix c:\debug\symbols.reload。这将下载构建调用堆栈所需的信息。
  4. 继续运行与g
  5. 应用重现问题/等待,直到它崩溃
  6. 当WinDbg的停止,
    • 创建.dump /ma c:\debug\minigame.dmp崩溃转储以便在以后对其进行分析,例如在这里提问,这样你就不需要再次重现错误了。
    • 获取有关.exr -1
    • 切换到线程的异常与k

造成与~#s

  • 看异常在调用堆栈信息,现在你应该有一个更好的理解崩溃,也许足以应用补丁,可能不是。至少这是进一步探索的一个更好的起点。

  • +0

    在x64_DBG中没有办法做到这一点吗?当我运行WinDBG64时,它表示歹徒处于忙碌状态,并且不会显示寄存器,内存和窗口......即使打开寄存器窗口也不会显示寄存器。它并不是一个真正的用户友好型或者舒适的调试器。 – FreeMind

    +0

    是的,WinDbg完全以命令为导向。它的GUI不太直观,命令也没有。但它是最强大的调试器。你可以在OllyDbg中做同样的事情,但正如我所说的,我不知道如何使用它。 –

    +0

    Minigame.exe是免费的吗?也许它适用反调试技术 –