老学校ascii shellcode

时间:2015-06-13 17:13:07

标签: shellcode

这部分ascii shellcode使用和指令(%...)将eax设置为零。在调试器和实践中,这个PIC代码一直在工作,但为什么呢? AND指令算法是:

Operand target ← Operand target ∩ Operande Source
flag CF ← 0
flag OF ← 0 

如果先前的eax值不好,那么eax寄存器可能没有设置为零?

#include <stdlib.h>

int main()
{
    asm("\
        and eax, 0x454e4f4a;\
        and eax, 0x3a313035;\
        ");

    return 0;
}

编译行:

gcc -m32  -W -Wall -std=gnu99 -masm=intel -g eaxZero.c -o eaxZero

gdb指令:

    (gdb)   b 5
..
    (gdb)   r
..
    (gdb)   x/i $eip
..
    (gdb)   x/x $eax
..
    (gdb)   nexti
..
    (gdb)   x/x $eax
..
    (gdb)   nexti
..
    (gdb)   x/x $eax
..

0 个答案:

没有答案