前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >几种跳转指令和对应的机器码

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

作者头像
战神伽罗
发布2019-07-24 15:10:26
2.6K0
发布2019-07-24 15:10:26
举报
文章被收录于专栏:Eureka的技术时光轴

几种跳转指令和对应的机器码 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写进去就可以了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档