Ghidra 在我的文件中看不到基本功能?

逆向工程 C++ 吉德拉
2021-06-27 21:12:38

我使用 Visual Studio 2019 用 C++ 编写了一个简单的程序来学习。当我用 Ghidra 打开文件时,它似乎没有检测到我的功能,我不知道我做错了什么。

我的程序很简单:

#include <iostream>

void someFunction()
{
    printf("im scared world, i dont understand.\n");
}

int main()
{
    std::cout << "hello world" << '\n';

    someFunction();

    system("pause");

    return 0;
}

然而,Ghidra 中的主要功能如下所示:

int __cdecl _main(int _Argc,char **_Argv,char **_Env)

{
  char cVar1;
  char *unaff_EBP;
  basic_ostream<char,struct_std::char_traits<char>_> *in_stack_fffffff8;

  cVar1 = (char)unaff_EBP;
  operator<<<struct_std::char_traits<char>_>(in_stack_fffffff8,unaff_EBP);
  operator<<<struct_std::char_traits<char>_>(in_stack_fffffff8,cVar1);
                    /* Symbol Ref: No symbol: someFunction */
  _printf("im scared world, i dont understand.\n");
  system("pause");
  return 0;
}

如您所见,我的函数应该在哪里,而是显示

/* Symbol Ref: No symbol: someFunction */

为什么?我能做些什么来解决这个问题?

1个回答

Visual Studio 正在内联该函数。您需要告诉 VS 不要这样做:

__declspec(noinline) void someFunction()
{
    printf("im scared world, i dont understand.\n");
}