You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARM架构下使用objdump:如何将目标文件反汇编为x86-64格式

核心结论

ARM64(elf64-littleaarch64)和x86-64是完全独立的CPU架构,目标文件中的机器码与架构强绑定,无法通过反汇编工具直接将ARM64机器码转换为x86-64 Intel格式汇编。以下针对两种常见需求给出解决方案:


需求1:将ARM64汇编逻辑转换为等价的x86-64 Intel汇编

这属于指令集翻译(而非反汇编),没有全自动的完美工具,因为两种架构的设计模型差异极大(ARM是Load/Store架构的RISC,x86-64是CISC)。可行方案:

  • 手动改写:分析ARM64汇编的功能逻辑,用x86-64 Intel指令重新实现。例如ARM的ldr x0, [x1]对应x86的mov rax, [rbx](Intel格式)。
  • 逆向工具辅助:使用Binary Ninja、Ghidra等逆向分析工具,先将ARM64二进制转成中间表示(IR),再导出为x86-64汇编,最后手动调整以保证逻辑正确、性能合理。

需求2:获取x86-64架构的目标文件及Intel格式汇编

如果你的真实需求是得到x86-64版本的Intel风格汇编,正确步骤如下:

  1. 确保持有源代码(无源代码则只能参考需求1的二进制翻译方案);
  2. 用x86-64架构的编译器重新编译源代码:
    # 本地x86-64环境编译
    gcc -c -m64 source.c -o example_x86.o
    # 交叉编译(如在ARM64机器上生成x86-64目标文件)
    x86_64-linux-gnu-gcc -c source.c -o example_x86.o
    
  3. 对生成的x86-64目标文件反汇编,指定输出Intel格式:
    objdump -d -M intel example_x86.o
    
    其中-M intel参数用于切换objdump的输出风格为Intel格式(默认是AT&T格式)。

内容的提问来源于stack exchange,提问作者Helix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:02:52