2

我正在尝试从 elf 文件中提取函数名称及其参数等信息,目的是通过更改函数的参数值来执行稳健性测试,我正在使用 windows 环境,我想要检测的 elf 文件用于 powerPC 架构,我尝试使用可以在 MS Visual Studio 上构建的开源工具 DynInst http://www.dyninst.org/,但它使用 cl 编译器(exe 和 dll 格式)编译的二进制文件,我有以下问题要提出:

1)是否可以使用 Microsoft Visual Studio C++ 编译器生成 elf 文件,以便我可以使用 DynInst 来检测二进制文件?

2)有没有其他方法或工具可以用来在windows平台上提取和检测elf文件?

objdump、readelf、nm 等提供了提取 elf 的功能,但我还需要对它们进行检测。我不知道如何定制这些实用程序以满足我的需求,任何建议都会有很大帮助!

/谢谢

4

2 回答 2

0

1) 是否可以使用 Microsoft Visual Studio C++ 编译器生成 elf 文件

当然:ELF只是一种文件格式。就像您可以在 PowerPC/AIX 上编写 .zip 文件并在 SPARC/Solaris 和 x86/Windows 上读取它一样,您可以在任何操作系统上编写 ELF 文件。

以便我可以使用 DynInst 来检测二进制文件?

我不知道是否DynInst能够检测这样的文件。

是否有其他方法或工具可用于在 windows 平台上提取和检测 elf 文件?

您可以编译 GNUbinutils包,其中包含readelf. ELF您可以使用它从文件中提取各种信息。

还有一个libelf库,允许您读取写入 ELF 文件。是否libelf可以在Windows上构建没有太多麻烦,我不知道。

于 2013-03-20T04:02:01.607 回答
0

无法使用 Visual Studio 编译器直接生成 ELF 二进制文件。Windows 二进制文件是 PE 格式,与 ELF 不兼容。通过编译汇编语言并在生成的文件上运行脚本以从 PE 转换为 ELF,并使用 ELF 感知汇编器(如 gas , yasm, nasm) 来组装生成的文件。

此外,您将无法在 Windows 上执行 PowerPC 二进制文件,因为 Windows 不支持 PowerPC 体系结构。

如果 DynaInst 只是将挂钩插入到编译代码中,那么您应该使用交叉编译器来编译 DynaInst 库挂钩和您希望检测的二进制文件。

还有其他可用的工具,它们也应该在 Windows 上工作,例如gprof,它仅依赖于某些函数可用,这些函数用于检测函数调用。

于 2013-03-20T16:55:24.280 回答