来自 Linux 平台的 Windows 可执行文件的静态分析

逆向工程 拆卸 视窗 linux 雷达2
2021-07-09 01:04:44

我正在尝试对 Linux 平台上为 Windows 编写的破解程序进行一些静态分析。我正在使用radare2. 我的问题是大多数时候我无法找到“真正的”代码,例如 C/C++ 应用程序中的 main 函数。是通过查找对 的调用来实现的方法__libc_start_main@plt,但我认为这仅适用于 Linux。对于 Linux 可执行文件radare2通常显示一个sym.main函数,但对于 Windows 可执行文件则不显示在一种情况下,我偶然发现了一个sym._main,但我没有在其他可执行文件中找到它。有什么方法或工具可以解决我的问题吗?我正在寻找处理汇编和 C/C++ 应用程序的想法。

2个回答

对于 Windows 可执行文件,exe 文件必须仅导出start入口点。也可以导出其他条目,但第一个导出的条目将是可执行初始化操作的起点。它类似于链接方法中描述的 Linux 案例,尽管 start 函数的实际实现取决于您的编译器。

如果符号被剥离,您可以main通过从start. 由于start正在执行初始化任务,您会在靠近start函数末尾的某个地方找到 main 例如,请参见下图,该图显示了calc.exe.

在此处输入图片说明

如您所见,在调用 main 之后,不需要更多的初始化步骤,因此应用程序可以通过调用exit_cexit库函数退出,具体取决于main.

我建议您尝试将 OllyDbg 与 WINE 一起使用。Kali linux 为该目的预先安装了这个组合,它适用于 wine 支持的每个平台(ubuntu、open-suse 等)。