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

64位Linux环境下如何将ASM文件汇编为x86 shellcode?

本地提取x86汇编对应纯shellcode的方法

你可以通过以下两种简便方法直接获取纯shellcode,无需手动从ELF文件的固定偏移量提取内容:

方法一:直接用nasm生成纯二进制机器码

nasm支持直接输出无额外文件头的纯机器码,只需要指定输出格式为bin即可,不会生成ELF头、段表、符号表等多余元数据:

# 直接编译汇编文件为纯二进制文件
nasm -f bin chmod.asm -o chmod.bin

生成的chmod.bin就是你需要的纯机器码文件,接下来用一行命令即可转换为\x开头的shellcode格式:

xxd -p chmod.bin | sed 's/../\\x&/g' | tr -d '\n'

执行后输出的结果和你给出的示例shellcode完全一致。

方法二:从已生成的ELF目标文件中提取代码段

如果你已经生成了chmod.o格式的ELF32目标文件,可以用objcopy直接提取.text代码段,无需手动找偏移量:

# 仅提取elf32目标文件中的.text代码段,输出为纯二进制文件
objcopy -O binary --only-section=.text chmod.o chmod.bin

后续转换为\x格式的命令和方法一完全相同。

注意事项

  • 64位Linux系统默认可能未安装nasm,Debian/Ubuntu系系统可执行sudo apt install nasm安装
  • 如果后续需要测试32位shellcode,需要提前安装32位运行库,比如sudo apt install lib32c-dev

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 04:36:02