NASM自动转义在.data中初始化的shellcode [重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

我正在尝试编写一段汇编代码,它将对我在.data中初始化的一些shell代码执行操作

我的初始化如下:

section .data
        shellcode: db "\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80", 0

当我尝试将包含shell代码的数组加载到寄存器中时,它会自动转义,从而破坏我的程序:

enter image description here

enter image description here

我组装和链接如下:

nasm -f elf32 -g encryptor_assembly.asm -o encryptor_assembly.o
gcc -m32 -g encryptor_assembly.o -o encryptor_assembly

有没有办法避免这种情况发生?谢谢你的帮助。

gcc assembly x86 nasm shellcode
1个回答
3
投票

Nasm只解释用反引号分隔的字符串中的C风格转义序列。要修复代码,请使用反引号替换双引号,如下所示:

shellcode: db `\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80`, 0

有关详细信息,请参阅the manual

© www.soinside.com 2019 - 2024. All rights reserved.