我正在尝试创建一些需要跳回的shellcode(负跳转)。我想跳回 2400 字节。这是我使用的操作码:
\x90\xE9\x98\xef
这首先是a nop
,然后是接近跳跃到-4200。0xef98 = -4200(至少我认为是这样)。但是在调试器中它看起来像这样:
0:142> t
eax=00000000 ebx=7c9032a8 ecx=02a8eb70 edx=7c9032bc esi=00000000 edi=00000000
eip=02a8ffac esp=02a8ea94 ebp=02a8eaa8 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
02a8ffac 90 nop
0:142> t
eax=00000000 ebx=7c9032a8 ecx=02a8eb70 edx=7c9032bc esi=00000000 edi=00000000
eip=02a8ffad esp=02a8ea94 ebp=02a8eaa8 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
02a8ffad e998efcccc jmp cf75ef4a
正如预期的那样,首先是 nop,然后是 jmp,但跳转到的地址不是我所期望的(就像jmp 02A8EF45
我所想的那样)。谁能看到我做错了什么?