无空Shellcode - 寄存器偏移10字节
问题描述:
我需要输入字节到Python脚本。我需要做的从寄存器%EBX 10个字节装配偏移:无空Shellcode - 寄存器偏移10字节
89 43 0a
mov $eax,0xa(%ebx)
我应该提到的是,当我运行此脚本,我倾倒这些字节(和其他人)到文件中。该文件的内容然后成为我用来注入堆栈的shellcode。这个问题是,当C函数strcpy看到0x0a时,它停止复制它,认为它是一个空终止符。
我明白为什么会发生这种情况,但是如何让我的shellcode在不使用0x0a(空终止符值)的情况下解释为10个字节的偏移量?例如,如果我将值0a更改为08,则按我的意愿工作(当然,如果偏移量只有8个字节)。
的Python脚本是这样的:
print "\x89\x43\x0a"
答
是微不足道的这样做,只是把它分解成两个部分均未0或10 :)
如:
add $5, %ebx
mov %eax, 5(%ebx)
sub $5, %ebx # optional: restore ebx
+0
谢谢!正是我需要的。 – Alex
您仍在将字节'0a'写入标准输出。我不确定你在这里做什么。 –
它被解释为换行符是什么?如果以文本形式读取字节0A(在文本编辑器中打印到终端或其他文件),则为换行符。如果以二进制形式读取 - 例如在十六进制编辑器或机器代码中 - 您将会看到它仍然是0A。 – neil
听起来像你想写[无空shellcode](http://en.wikipedia.org/wiki/Shellcode#Null-free_shellcode)。 –