汇编 JMP使用详解

 更新时间:2020年02月03日 10:28:11   作者:极客创想  
这篇文章主要介绍了汇编 JMP使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

汇编 JMP 详解关键词说明

RVA: 相对虚拟地址(Relative Virtual Address),在内存中相对于PE文件装入地址的偏移位置,是一个相对地址。

JMP 的 3 种类型

  • 短跳转(Short Jmp,只能跳转到256字节的范围内),对应机器码:EB
  • 近跳转(Near Jmp,可跳至同一段范围内的地址),对应机器码:E9
  • 远跳转(Far Jmp,可跳至任意地址),对应机器码: EA

短跳转 和 近跳转 指令中包含的操作数都是相对于(E)IP的偏移。

远跳转指令中包含的是目标的绝对地址。

所以短/近跳转会出现跳至同一目标的指令机器码不同,不仅会不同,而且应该不同。

而远跳转中包含的是绝对地址,因此转移到同一地址的指令机器码相同 。

至此,我们知道了跳转指令所对应的机器码根据E(IP)计算出来的,那到底是怎么计算的呢?

JMP 目标地址计算方式

目标地址 = 当前指令地址 + 指令长度 + RVA

举例说明

如图: 想要从 001392DB 处跳转到 001392E1 这个地址,那么E9后面应该跟多少呢?

RVA = 001392E1 - 001392DB - 5

在计算机中使用上面的公式计算结果就是 RVA = 1 所以后面应该是跟 E9 01 00 00 00
其中 5 是指令长度 E9 后面需要跟 4 字节的地址,所以指令(1)+地址(4) = 5

ps: 如果计算结果是负数,则数值后面应该用 FF 填充,如负一则应该用 E9 01 FF FF FF

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 汇编语言系列之汇编实现简单数学运算

    汇编语言系列之汇编实现简单数学运算

    这篇文章主要介绍了汇编语言系列之汇编实现简单数学运算的思路详解,本文给大家列出了两种算术运算的代码,设计思路给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • 常用的汇编指令与技巧(收藏)

    常用的汇编指令与技巧(收藏)

    这篇文章主要介绍了常用的汇编指令与技巧,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • 汇编基础教程段的定义应用详解

    汇编基础教程段的定义应用详解

    这篇文章主要为大家介绍了汇编基础教程段的基本定义与应用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • UEFI开发实战用户交互界面基础说明

    UEFI开发实战用户交互界面基础说明

    这篇文章主要为大家介绍了UEFI开发实战用户交互界面的基础说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 纯汇编实现打飞机小游戏的示例代码

    纯汇编实现打飞机小游戏的示例代码

    这篇文章主要介绍了纯汇编实现打飞机小游戏的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 浅析ELF转二进制允许把 Binary 文件加载到任意位置

    浅析ELF转二进制允许把 Binary 文件加载到任意位置

    本文通过 eip + 偏移地址 实现了运行时计算数据地址,不再需要把 Binary 文件装载到固定的位置。本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2020-02-02
  • 8086汇编开发环境搭建和Debug模式介绍(图文详解)

    8086汇编开发环境搭建和Debug模式介绍(图文详解)

    这篇文章主要介绍了8086汇编开发环境搭建和Debug模式介绍,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • VScode配置8086汇编环境的过程解析

    VScode配置8086汇编环境的过程解析

    这篇文章主要介绍了VScode配置8086汇编环境的过程解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Go 中的循环是如何转为汇编的(方法详解)

    Go 中的循环是如何转为汇编的(方法详解)

    这篇文章主要介绍了Go 中的循环是如何转为汇编的,本文通过循环的汇编代码给大家讲解的非常详细,代码简单易懂,非常不错,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • 从Go汇编角度解读for循环的问题

    从Go汇编角度解读for循环的问题

    Go常用的遍历方式有两种:for和for-range。这篇文章主要介绍了从Go汇编角度解读for循环的两个疑点,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02

最新评论