【问题标题】:How to can I programmatically edit a binary (x86)?如何以编程方式编辑二进制文件(x86)?
【发布时间】:2013-04-08 10:47:20
【问题描述】:

我正在开发一个程序来进行编译后优化。因为我注意到有一些特殊情况 gcc 不能很好地优化,即使在 -O3 时也是如此。

是否有一个库可以让我将二进制文件 (x86) 加载到适合编辑的数据结构中,然后再将其写出来?我还希望它处理更新所有内存偏移量,因为编辑可能会改变二进制文件的大小。

【问题讨论】:

  • 反汇编,用你喜欢的任何工具编辑反汇编的代码,然后汇编?
  • 难道不能让 gcc 输出 asm(选项 -S),编辑该文件,然后编译编辑后的 ​​.s 文件吗?或者更好的是,修补 gcc 以便它做得更好?顺便问一下,gcc 的 bugzilla 中是否有关于那些错过的优化的条目?
  • 查看 objdump 及其代码。
  • @MarcGlisse,是的,这是我目前正在尝试解决的问题:gcc.gnu.org/bugzilla/show_bug.cgi?id=56493

标签: gcc assembly compiler-construction x86 disassembly


【解决方案1】:

我假设您正在查看 ELF 可执行格式。如果您更多地考虑 PE 或 Mach-O,请说出来。

确实,您可以找到几个库或工具来编辑和修改 ELF 格式。除其他外,以下是此类工具的一小部分:

【讨论】:

    猜你喜欢
    • 2013-09-12
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多