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

如何使用objcopy从aarch64架构二进制文件中提取shellcode?

问题解答

你对objcopy的使用完全正确,看不到1和2的直接对应值是AArch64架构的指令编码规则导致的,和转换步骤无关。

原理说明

  1. 你生成的simple.bin长度为8字节,正好对应两条4字节长度的AArch64指令:
    • 前4字节21 00 80 d2是小端存储的mov x1, #1指令编码,按大端整合成32位指令值为0xd2800021
    • 后4字节41 00 80 d2是小端存储的mov x1, #2指令编码,按大端整合成32位指令值为0xd2800041
  2. AArch64的MOV立即数指令(MOVZ型)采用位域拆分编码,16位立即数没有存在连续的字节位置,而是拆分到指令的不同位段中,因此直接查看二进制字节不会出现连续的0x01、0x02值,属于正常情况。

验证方法

你可以执行以下命令反汇编目标文件确认指令正确性:

objdump -d simple.o

输出内容会明确显示两条mov指令,证明你的汇编、转换流程完全正常。

提取shellcode

你当前生成的simple.bin就是有效shellcode,执行以下命令可以直接导出为hex格式的shellcode字符串:

xxd -p simple.bin | tr -d '\n'

得到的结果210080d2410080d2就是你需要的shellcode。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:36:07