4

我正在尝试将我编写的汇编程序转换为无空 shellcode。

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

push 0x1000

mov BYTE [eax],0x31

我想避免使用一千次调用inc eax。我在想也许有一些创造性的异或值,第二个,也许如果有一个标志可以设置为只需要 8 个字节的常量。

任何帮助表示赞赏。

4

1 回答 1

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
于 2011-07-28T04:11:23.983 回答