【发布时间】:2013-11-06 09:55:48
【问题描述】:
我使用 QtCreator IDE 编写了一个使用 mingw 编译的非 Qt C DLL。
当我将 DLL 注入一个进程时,DLL 会导致该进程在某行代码处崩溃。通过使用OutputDebugString,我发现这条线是罪魁祸首。我知道如何修复该行,并且当该行被修改时 DLL 可以工作。但是,为了学习如何使用调试器,我将换行符保留为未修改。
我将如何使用 QtCreator 调试器来查找导致问题的同一行?当 QtCreator 设置为在调试模式下编译时,按 F5 会导致以下对话框,因为没有 EXE:
【问题讨论】:
-
编写一个小程序链接到重现问题的库并在调试器中运行它。或者您对“注入”的确切含义是什么?
-
@FrankOsterfeld:en.wikipedia.org/wiki/DLL_injection 这是一个低级 DLL 文件,用于编辑受害者进程的内存。由于 DLL 注入的工作原理,我无法链接到该库。为什么我要编辑另一个进程的内存?我正在编辑一个名为 Assault Cube 的开源项目的内存。目的是探索和了解更多关于 C 代码如何转换为 ASM 以及计算机如何在较低级别工作的信息。
-
好吧,你可以在上面的窗口中输入使用你的 dll 和参数的可执行文件名,QtCreator 会为你完成剩下的工作。
-
@Lol4t0:哦,这也有效。节省了我一点时间。谢谢
-
@Lol4t0:其实你的方法更好。它让我可以单步执行代码,而我认为使用 Nazar554 的方法无法做到这一点。
标签: c++ c qt dll qt-creator