Null Free Shellcode

时间:2011-07-28 03:57:54

标签: shell assembly shellcode

我正在尝试将我编写的汇编程序转换为null-free shellcode。

但是,我不确定如何针对某些说明进行此操作。 其中一些(英特尔语法)包括:

push 0x1000

mov BYTE [eax],0x31

我想避免使用一千次调用inc eax。我想的也许是带有xoring值的创意,而对于第二种,也许如果有一个标志设置使它只需要8个字节的常量。

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

push 0x1000

如果你可以备用一个寄存器(并且你不介意破坏标志),那么如下:

xor eax, eax
inc eax
shl eax, 12
push eax

mov BYTE [eax],0x31

这里的零不是来自常数,而是来自寻址模式。尝试:

xchg eax, ecx
mov BYTE [ecx],0x31
xchg eax, ecx