gpt4 book ai didi

assembly - 负跳转操作码

转载 作者:行者123 更新时间:2023-12-02 20:16:57 25 4
gpt4 key购买 nike

我正在尝试创建一些需要跳转回来(负跳转)的 shellcode。我想跳回2400字节。这是我使用的操作码:

\x90\xE9\x98\xef

这首先是一个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 这样的地址就是我想要的)。谁能看出我做错了什么吗?

最佳答案

e9 表示 jmp rel32,因此您需要一个 dword 操作数,两个字节是不够的:

jmp $-4200    ; e9 93 ef ff ff

当您尝试这些事情时,使用汇编程序通常会更容易:

$ cat shellcode.asm
bits 32
jmp $-4200
$ nasm -o shellcode shellcode.asm
$ hexdump -C shellcode
...

关于assembly - 负跳转操作码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14925104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com