x86跳转到一个地址

Mar*_*tin 7 x86 assembly gdb

作为安全类的赋值,我试图__asm__("jmp 0xbffff994");在我的代码中使用,但是当我在gdb中反汇编时,指令被更改为jmp 0xc8047e2a.知道为什么以及如何跳转到特定地址?

Mar*_*ark 24

可能是因为它跳转到相对地址,并且链接器或加载器已经移动了您的代码.尝试将地址放入变量,然后执行:

jmp dword [var]
Run Code Online (Sandbox Code Playgroud)

或者:

push 0xbffff994
ret
Run Code Online (Sandbox Code Playgroud)

  • **是正确答案,还要注意:"mov eax,0x11223344; jmp eax"; 也会工作,也可能是最直接的. (5认同)