2013-03-19 70 views
2

我想从elf文件中提取信息,如函数名称及其参数,目标是通过更改函数的参数值来执行健壮性测试,我正在研究Windows环境和我想仪器的elf文件是为PowerPC体系结构,我尝试使用开源工具DynInst http://www.dyninst.org/它可以建立在MS Visual Studio,但它仪器二进制编译与编译器(EXE和DLL格式),我有以下问题构成:在windows平台上提取和检测powerPC的elf文件

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

2)是否有任何其他手段或工具可以用于提取和仪器在Windows平台上的精灵文件?

objdump,readelf,nm等提供了提取精灵的功能,但我的需要也是仪器。我不知道如何调整这些公用设施以满足我的需求,任何建议都会有很大的帮助!

/感谢

回答

0

1)是否有可能使用Microsoft Visual Studio C++编译器生成ELF文件

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

这样我就可以使用DynInst来测试二进制文件了吗?

是否DynInst将能够文书这样的文件我不知道。

是否有任何其他手段或工具可以用于提取和仪器在Windows平台上的精灵文件?

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

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

+0

感谢您的回复,我试图看到readelf的不同选项,但无法弄清楚如何获取函数参数的地址和类型,一个例子会有很大的帮助。 – Nithi89 2013-03-20 15:14:26

0

无法使用Visual Studio编译器直接生成ELF二进制文件。 Windows二进制文件是PE格式,与ELF不兼容。它可能通过编译为汇编语言并在结果文件上运行脚本以将PE转换为ELF,并使用ELF感知汇编程序(环路)来生成ELF输出,其工作量很大,像gas,yasm,nasm)来组装最终的文件。

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

如果DynaInst只是在编译代码中插入钩子,那么你应该使用交叉编译器来编译DynaInst库钩子和你想要测试的二进制文件。

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

相关问题