我试图将我写的汇编程序转换为无空
shellcode.
但是,我不确定如何针对某些说明进行此操作.
其中一些(英特尔语法)包括:
push 0x1000
和
mov BYTE [eax],0x31
我想避免使用一千次调用inc eax.我想的可能是带有xoring值的创意,而对于第二种,也许如果有一个标志要设置它使得它只需要8个字节的常量.
任何帮助表示赞赏.
最佳答案
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