j.D*_*Doe 6 c++ debugging assembly reverse-engineering
我有简单的 C++ 程序:
#include <iostream>
using namespace std;
void main()
{
cout << "Hello, world, from Visual C++!" << endl;
}
Run Code Online (Sandbox Code Playgroud)
使用以下命令编译:cl /EHsc hello.cpp
我想开始调试可执行文件,如何在调试器中找到该main函数对应的汇编代码?(我使用的是x64dbg)
入口点与 Main 函数不同。我找到了 main 函数,它离入口点不近,我有字符串,我很容易找到它。
有没有任何方法或规则或最佳实践来猜测 main 相应的汇编代码在哪里?
编辑:
我有源代码,但我只是在学习 RE。
尽管入口点通常不是main
在可执行文件中定义的,但这仅仅是因为编译器使用一些初始化代码进行包装是很常见的main
。
在大多数情况下,初始化代码非常相似,并且每个编译器都有几个版本之一。大多数这些函数都有IDA FLIRT 签名,使用 IDA 打开二进制文件将自动为您定义WinMain
、main
等函数。您还可以使用免费(试用)版本的 IDA。
如果情况并非如此,则main
通过跟踪一级深度入口点函数内的几个调用,可以非常直接地从入口点到达 。该main
调用通常在入口点函数末尾附近。
这是一个示例,main
在底部附近选择了 function(请注意,这是使用 mingw 为 Windows 编译的 unix 可执行文件,因此这与大多数本机 win32 可执行文件有所不同)。
归档时间: |
|
查看次数: |
11021 次 |
最近记录: |