几种跳转指令和对应的机器码

转载 2013年12月06日 11:12:04
几种跳转指令和对应的机器码

0xE8    CALL    后面的四个字节是地址

0xE9    JMP    后面的四个字节是偏移

0xEB    JMP    后面的二个字节是偏移

0xFF15    CALL    后面的四个字节是存放地址的地址

0xFF25    JMP    后面的四个字节是存放地址的地址


0x68    PUSH    后面的四个字节入栈

0x6A    PUSH    后面的一个字节入栈




shellcode跳转回原始OEP方法一


大部分人比较喜欢直接jmp跳转到原始oep,这时候一般都用e9跳转,e9后面的四个字节是一个偏移地址。

计算公式: 偏移地址 = 目的地址 - 跳转基地址(jmp的下一条指令的地址)

也就是 原始OEP - jmp的下一条指令的地址

    db    0e9h        ;这是jmp
OEPOffs:
    dd    ?        ;这里是4个字节 未初始化


偏移地址 = 原始OEP - (offset OEPOffs + 4)  为什么+4 因为OEPOffs标号向后偏移4个字节 才是jmp的下一条指令地址  也就是跳转基地址



shellcode跳转回原始OEP方法二

有些人用 push oep然后jmp dword ptr [esp]的方法跳回原始oep,这时候shellcode要这样写:

    db    68h
OEP:
    dd    ?
    jmp dword ptr [esp]

68h是 push后面四个字节的意思  dd ? 声明了四个字节,然后通过OEP标号,定位到这个位置,然后把原始OEP写进去就可以了

相关文章推荐

jmp指令对应的机器码

od随便打开一个记事本,汇编几条jmp指令,可以看到如下 地址           HEX              反汇编 010073B4     - E9 7B9E8787      JMP...
  • whatday
  • whatday
  • 2015年07月31日 16:31
  • 1643

一步步学习汇编(10)之jmp指令原理分析

源地址:http://www.cnblogs.com/mfm11111/archive/2009/03/27/1422828.html

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

汇编指令和机器码的对应表

一、汇编速查          MOV   AA,BB         将   BB   放到   AA   里          CALL                   调用子程序   (...

汇编指令与机器码

 一、状态寄存器 PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示: 15 14 13 12 11 10 ...

机器码 与 汇编指令的关系

最近很多发帖求助机器码与汇编指令对应的问题, 所以自己索性就把资料直接贴出来了,大家都可以看到,因为汇编教科书里面没有说到此点,大家想了解就细细琢磨一下把! 一、状态寄存器 PSW(...

汇编语言 指令 机器码三者的关系

简单说就是同一操作的三种不同表示方法 机器码是0和1组成的二进制序列,可读性极差 指令就是把特定的0和1序列,简化成对应的指令(一般为英文简写,如mov,inc等),可读性稍好 汇编语言包括...

ff 15 调用函数与e8调用函数的区别 call的两种二进制命令

ff 15 和e8都是用来调用函数的机器码,看一个例子:218 f9ebc53a 6a00                  push    0218 f9ebc53c ff1500c9ebf9   ...

jmp指令对应的机器码

jmp指令对应的机器码  (2012-08-27 20:18:26) 转载▼ 标签:  杂谈 分类: 驱动逆向 od随便打开一个记事...

thumb长跳转指令(BL)机器码详解

最近因为工作的原因,经常接触到长跳转指令,但是总是弄不明白,跳转的目标地址怎么得来的 经过多方面的资料查找,和自己的反复推算,现在总算弄明白了 先上例子: 下面是几个实际遇到的机器码机器对应的反汇编 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:几种跳转指令和对应的机器码
举报原因:
原因补充:

(最多只允许输入30个字)