汇编程序:x64位远程调用&跳跃

时间:2014-05-22 18:13:27

标签: assembly call x86-64

我想知道处理器如何在x64应用程序中从较低内存区域跳转到更高内存区域,反之亦然。

远程跳转的默认助记符是x86中的E9 XXXXXXXX'以及x64位应用。 在x86上进行远程跳转很容易,因为您可以将目标地址直接放在' E9'比特,像这样:

Far call

Address   Hex dump          Command                        Comments
002957A1  E8 F15B2900       CALL Cam_Surveillance.00295BF1 ; above current code
002957A6  E9 3C562900       JMP  Cam_Surveillance.0029563C ; below current code


Or the short call for comparison

Address   Hex dump          Command                         Comments
002957A1   E8 4B040000      CALL Cam_Surveillance.00295BF1 ; above current code
002957A6   E9 91FEFFFF      JMP  Cam_Surveillance.0029563C ; below current code

您还可以使用代码段来创建指针。

但是,当使用x64位应用程序时,您无法覆盖40位的限制。因此,为了进行远程调用或跳转到(硬编码的)64位地址,您需要64位。

例如RIP指向' 00FF7A0B.002957A1'。  RIP设置为指向&00; 00000000.003967B1'哪些指令?  或者这是否意味着你无法远程跳跃或打电话?

0 个答案:

没有答案