我正在尝试将我编写的汇编程序转换为无空值的 shellcode。
但是,对于某些说明,我不确定如何执行此操作。
其中一些(采用英特尔语法)包括:
push 0x1000
和
mov BYTE [eax],0x31
我想避免使用一千个对 inc eax 的调用。我在想也许有一些创造性的异或值,第二,也许如果有一个标志来设置它只需要 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
关于shell - 无空 Shellcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6853945/