C++ 二进制文件中的那些代码片段和文件路径是某种标准调试信息吗?

逆向工程 艾达 C++ 调试符号
2021-06-17 04:56:04

这个 C++ 二进制文件到处都有代码片段和源代码文件的路径,这可能是某种调试信息。

  • 这是标准的东西吗?(这是RTTI吗)
  • 如果是这样,这怎么称呼?
  • 是否有插件/工具来帮助解决这个问题?

调试信息的 IDA 屏幕截图

1个回答

它具有以下指纹assert

  1. 测试后直接调用;
  2. 它使用一个数字——可能是一个源代码行号——、一个指向文件名的字符串——源文件——以及一个描述错误条件的字符串;
  3. 它不会返回。(可以推断,因为如果被调用的函数返回,检查的值会导致错误的情况。)

assert是大多数(如果不是全部!)标准库中的标准函数,因此如果您的反编译器可以识别使用了哪个编译器,它就会为sub_6E0D40. 由于它没有,您可以跟踪该地址并查看是否 (a) 它立即跳转到外部例程,例如 Windows 的 native Assert,或者 (b) 执行断言所做的事情:输出错误并立即退出。


另外:使用堆栈加寄存器 ecx 和 edx 似乎表明这个子被声明为“微软__fastcall”(维基百科)。