Null Free Shellcode - 寄存器偏移量为10个字节

时间:2014-04-30 17:32:20

标签: assembly encoding hex shellcode

我需要在python脚本中输入字节。我需要在汇编中从寄存器%ebx做一个10字节的偏移:

89 43 0a
mov $eax,0xa(%ebx)

我应该提一下,当我运行这个脚本时,我将这些字节(以及其他字节)转储到一个文件中。然后该文件的内容成为我用于注入堆栈的shellcode。这个问题是当C函数strcpy看到0x0a时,它会停止复制它,认为它是一个空终止符。

我理解为什么会发生这种情况,但是如何在不使用0x0a(空终止符值)的情况下将我的shellcode解释为10个字节的偏移量?例如,如果我将值0a更改为08,则可以正常工作(如果偏移量仅为8个字节)。

python脚本如下所示:

print "\x89\x43\x0a"

1 个答案:

答案 0 :(得分:0)

这样做很简单,只需将它分成两部分,分别是0或10:)

如:

add $5, %ebx
mov %eax, 5(%ebx)
sub $5, %ebx # optional: restore ebx