Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly x64中的相对JMP_Assembly_X86 64 - Fatal编程技术网

Assembly x64中的相对JMP

Assembly x64中的相对JMP,assembly,x86-64,Assembly,X86 64,因此,我试图找到一些关于这方面的澄清,但无法为谷歌提供正确的结果,因此我希望这里有人能理解我 我正试图了解x64的组装,以便创建函数挂钩,我需要澄清相对jmp是如何工作的。假设我在0x7FFFF01000处有一个函数,我将在0x7FFFFFF00016处编写一个相对jmp,这两个地址之间的差异是0xFEA(4074)但是,我还没有编写相对jmp,那么,从im将要编写的地址到函数开头的地址之间的相对差异,还是从我将要编写的相对jmp的结尾 使用0xFEA(4074) 使用0xFE4(4068) 偏

因此,我试图找到一些关于这方面的澄清,但无法为谷歌提供正确的结果,因此我希望这里有人能理解我

我正试图了解x64的组装,以便创建函数挂钩,我需要澄清相对jmp是如何工作的。假设我在0x7FFFF01000处有一个函数,我将在0x7FFFFFF00016处编写一个相对jmp,这两个地址之间的差异是0xFEA(4074)但是,我还没有编写相对jmp,那么,从im将要编写的地址到函数开头的地址之间的相对差异,还是从我将要编写的相对jmp的结尾

使用0xFEA(4074)

使用0xFE4(4068)


偏移量被添加到跳转后的指令地址。请注意,您选择的语法选择间接绝对跳转,使用RIP相对地址加载位置。这与相对跳跃不同,也不会像预期的那样起作用。@fuz啊,谢谢你,这正是我想要的。使用RIP相对地址jmp与使用相对跳转有什么不同?阅读手册:从附近地址的内存向RIP加载8字节与使用即时相对偏移量执行
RIP+=sign_extended_rel32
完全不同。您是否在问如何用汇编语言编写jmp指令使用汇编程序进行汇编,或者您询问如何将JMP指令编码为机器代码,就像汇编程序在汇编时所做的那样?
00007FFFFFF0000C mov     [rsp+10h], rbx
00007FFFFFF00011 mov     [rsp+20h], rsi
00007FFFFFF00016 jmp     [rip+FEA]
00007FFFFFF0001C 0
00007FFFFFF0000C mov     [rsp+10h], rbx
00007FFFFFF00011 mov     [rsp+20h], rsi
00007FFFFFF00016 jmp     [rip+FE4]
00007FFFFFF0001C 0