我试图从elf文件中提取函数名称及其参数等信息,目的是通过更改函数的参数值来执行健壮性测试,我正在使用Windows环境和我想要的仪器的elf文件powerPC体系结构,我尝试使用开源工具DynInst http://www.dyninst.org/,它可以在MS Visual Studio上构建,但它使用cl编译器(exe和dll格式)编译二进制文件,我有以下问题要提出:
1)是否可以使用Microsoft Visual Studio c ++编译器生成elf文件,以便我可以使用DynInst来检测二进制文件?
2)是否有其他方法或工具可用于在Windows平台上提取和检测elf文件?
objdump,readelf,nm等提供了提取精灵的功能,但我还需要对它们进行检测。我不知道如何定制这些实用程序以满足我的需求,任何建议都会有很大的帮助!
/感谢
答案 0 :(得分:0)
1)是否可以使用Microsoft Visual Studio c ++编译器生成elf文件
当然:ELF
只是一种文件格式。就像您可以在PowerPC / AIX上编写.zip文件并在SPARC / Solaris和x86 / Windows上读取它一样,这样您就可以在任何操作系统上编写ELF文件。
这样我可以使用DynInst来检测二进制文件吗?
DynInst
是否能够检测这样的文件我不知道。
是否有其他方法或工具可用于在Windows平台上提取和检测elf文件?
您可以编译包含binutils
的GNU readelf
包。您可以使用它从ELF
文件中提取各种信息。
还有libelf
库,允许您阅读和编写ELF文件。是否可以在Windows上构建libelf
而不会有太多麻烦,我不知道。
答案 1 :(得分:0)
无法使用Visual Studio编译器直接生成ELF二进制文件。 Windows二进制文件是PE格式,与ELF不兼容。 可以生成ELF输出一种迂回的方式,有很多工作,通过编译汇编语言,并在生成的文件上运行脚本以从PE转换为ELF,并使用支持ELF的汇编程序(如gas,yasm,nasm)来汇总生成的文件。
此外,您将无法在Windows上执行PowerPC二进制文件,因为Windows不支持PowerPC体系结构。
如果DynaInst只是将钩子插入到编译代码中,那么你应该使用交叉编译器来编译DynaInst库钩子和你想要的二进制文件。
还有其他可用的工具,它们也可以在Windows上运行,例如gprof
,它只依赖于某些功能可用,它们用于检测函数调用。