装配&视觉工作室的exe文件的符号在构建后用于调试目的

时间:2017-10-30 23:18:37

标签: c++ debugging visual-studio-2017 reverse-engineering ollydbg

我正在学习Windows上的逆向工程。我关注Reverse Engineering and Function Calling by Address。我没有下载那些源代码。我只需写下一个小的c ++控制台,然后使用Ollydbg或xdbg64调试它。只是为了知道windows'堆栈工作。

#include <Windows.h>
#include <stdio.h>

void __cdecl mySecretFunction(int * param1, const char *param2,
    DWORD param3, BYTE param4) {
    // Do somethng
}

int main() {
    // Do somethng and call mySmySecretFunction()
}

我在App属性页面上有enable /DEBUG and choose Debug on Configuration

我跑了App.exe,效果很好。我使用Ollydbg进行调试,它可以正常运行,但是both disassembly and symbol of the exe are gone or missing。所以我无法调试它。

那么我必须在Visual Studio 2017中进行/配置,以便我可以使用外部调试器(如Ollydbg或x64dbg)调试我的简单c ++控制台?

3 个答案:

答案 0 :(得分:0)

以下步骤适用于Visual Studio 2017:

  1. 创建一个空的C ++项目。
  2. 添加您提供的源代码。
  3. 转到项目属性,选择调试
  4. 命令更改为c:\x64dbg\release\x96dbg.exe(请注意 96 ),这将启动x32dbg.exex64dbg.exe,具体取决于您的可执行架构。
  5. Command Arguments更改为"$(ProjectPath)" arg1 arg2,其中$(ProjectPath) Command 的先前内容,arg1 arg2命令参数的先前内容
  6. 通过启动程序而不调试(Ctrl+F5)来调试可执行文件。如果你像往常一样启动调试器,你将调试x64dbg本身,这可能不是你想要的。
  7. 没有与x64dbg和Visual Studio的真正集成,这只是使用正确的参数启动x64dbg以从Visual Studio调试应用程序,并且通过在x64dbg中加载应用程序一次然后手动加载它以获得更好的服务级别的调试。

答案 1 :(得分:0)

如果要在olly-DBG中进行调试,请不要启用调试模式。调试模式用于在visual studio中进行调试。在这种模式下,您可以看到变量名称并逐行运行程序。 line和varietals名称在olly-DBG中没有任何意义。最好不要在调试模式下编译。

您无法看到您的代码暂停,您不能在winmain暂停您的程序。

转到Debugging option&gt; Events&gt; Make first pause at:并选择WinMain (if location is known)&gt; {{1}}

希望对你有所帮助。

答案 2 :(得分:0)

我知道这个问题很旧。无论如何,这是我对您问题的回答。

使用Visual Studio,您可以像这样将调试器x64dbg集成到您的项目或当前项目中。

  1. 您需要将零件定位到x64dbg程序(x64或x86版本),具体取决于要调试或构建的应用程序的位等。

enter image description here

  1. 为您当前的项目提供一个参数。在这种情况下,无论是完整地执行项目的可执行文件,还是更好地采用可移植的方式,请使用Microsoft宏,如下图所示。

enter image description here

尽管可以为程序提供目标初始目录,但是是可选的。然后,每当您要调试应用程序时,只需单击按钮,调试器就会从该应用程序启动。