是否可以使用基于 Windows 的反汇编程序调试 ELF 文件?

逆向工程 艾达 视窗 调试 小精灵
2021-06-14 09:56:28

问题:如何在 MS Windows 中调试 ELF 文件?是否可以?

设想 :

我编译了一个 ELF 文件,可以在带有 VXWorks 5.5 OS 和 SH4 CPU 的硬件上工作。IDA68 能够反汇编文件并正确检测 SH4 指令,尽管看起来 IDA 无法使用其调试器对其进行调试(调试器图标为灰色),并且无法调试汇编几乎无法理解。

我在这里错过了什么吗?

2个回答

您不能在 Windows 上运行 ELF 文件,因为系统为程序使用提供了完全不同的体系结构和 API。例如,Windows 中的系统调用与 Linux 中的系统调用(您的小精灵将尝试调用的那些)不同。此外,如果 Windows 可以理解并尝试加载 ELF,您的文件将尝试链接到 Windows 下不存在的系统库(.so 文件而不是 Windows dll)。

文件不能在windows下运行的另一个原因是二进制格式不同,windows将无法理解如何运行ELF文件。

您可以通过多种方式在 Windows 下运行 Linux 软件,但它们需要模拟(虚拟机、Windows 上的 Ubuntu 上的 Bash 等)

ELF 文件可以使用 IDA 调试器进行调试,如果您拥有用于构建它们、在本地安装或在远程机器中使用相同的 CPU 和操作系统。

如果不这样做,您仍然可以调试文件,但前提是编译器在文件中包含DWARF标准中的调试数据

SVS 建议我的另一个选择是设置一个带有 OS 和 Arctitecture 的模拟器,你需要在那里跟踪文件,我相信这是一个很好的实用方法。

并非所有 ELF 文件都有 DWARF 调试数据。特别是那些不应该被逆向工程的。