代码之家  ›  专栏  ›  技术社区  ›  Nithi89

在windows平台上为powerPC提取和检测elf文件

  •  2
  • Nithi89  · 技术社区  · 12 年前

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

    1) 是否可以使用Microsoft Visual studio c++编译器来生成elf文件,这样我就可以使用DynInt来检测二进制文件?

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

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

    /谢谢

    2 回复  |  直到 12 年前
        1
  •  0
  •   Employed Russian    12 年前

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

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

    这样我就可以使用DynInt来检测二进制了吗?

    是否 DynInst 将能够为这样一个我不知道的文件提供工具。

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

    你可以编译GNU binutils 包,其中包含 readelf 。您可以使用它从 精灵 文件

    还有 libelf 图书馆,可以让你阅读 写入ELF文件。是否 libelf公司 可以在Windows上构建而不会有太多麻烦,我不知道。

        2
  •  0
  •   chmeee    12 年前

    无法使用Visual Studio编译器直接生成ELF二进制文件。Windows二进制文件是PE格式,与ELF不兼容。它 通过编译到汇编语言,并在生成的文件上运行脚本,将PE转换为ELF,并使用支持ELF的汇编程序(如gas、yasm、nasm)来汇编生成的文件,可以以一种迂回的方式生成ELF输出,需要大量的工作。

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

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

    还有其他可用的工具,也可以在Windows上使用,例如 gprof ,它只依赖于某些函数可用,这些函数用于为函数调用提供工具。