当前位置: 首页 > java >正文

硬编码(修改RIP相关指令)

修改RIP相关指令


0x70-0x7F (JCC)

  1. 条件跳转,后面跟一个字节立即数的偏移(有符号),共两个字节(定长指令)
  2. 如果条件成立,跳转到当前指令地址 + 当前指令长度 + lb
  3. 向前跳7F,向后跳80

在这里插入图片描述

上图中70-7f的硬编码为jcc跳转指令(定长),可以看到大于等于80是向上跳,而小于80是向下跳

这是一个字节的情况

我们来看下两个字节的JO等指令如何查表(指令相同但硬编码不同):
在这里插入图片描述
首先查主表Table A-2 0F的位置

在这里插入图片描述
他告诉我们这个指令是2个字节,要我们去查Table A-3的表,我们再接着查Table-3 80的位置

Table A-3. Two-byte Opcode Map: 80H — F7H (First Byte is 0FH) * 查这张表

在这里插入图片描述
对应的是Jcc指令,再看一下上面的一排小字 (Jccf64, Jz - Long-displacement jump on condition)意思是:64位模式下忽略操作数大小前缀,强制使用64位,长位移跳跃条件

这些2个字节的jcc指令也有向上跳和向下跳的区分,大于等于0x80000000向上,反之向下


其他修改RIP的指令

  1. 0xE0
    • RCX = RCX -1 当 ZF标志位 = 0 && ECX != 0 时跳转到当前指令地址 + 当前指令长度 + 偏移
  2. 0xE1
    • RCX = RCX -1 当 ZF标志位 = 1 && ECX != 0 时跳转到当前指令地址 + 当前指令长度 + 偏移
  3. 0xE2
    • RCX = RCX -1 当 ECX != 0 时跳转到当前指令地址 + 当前指令长度 + 偏移
  4. 0xE3
    • 当RCX = 0 时跳转到当前指令地址 + 当前指令长度 + 便宜
  5. 0xE8
    • CALL指令的下一条地址
  6. 0xE9
    • JMP指令跳转
  7. 0xEA
    • JMP 跨段跳转
  8. 0xEB
    • JMP 短地址跳转
  9. 0xC3
    • RIP出栈
  10. 0xC2
    • RIP出栈后,RSP = RSP + Iw
  11. 0xCB
    • 出栈8个字节,低4个字节赋值给RIP,高4个字节中低2位赋值给CS
  12. 0xCA
    • 出栈8个字节,低4个字节赋值给RIP,高4个字节中低2位赋值给CS,RSP = RSP + Iw

在这里插入图片描述

http://www.xdnf.cn/news/14209.html

相关文章:

  • HTML+CSS 半透明登录框
  • (LeetCode每日一题) 2566. 替换一个数字后的最大差值 ( 贪心 )
  • 安防市场的中小企业突围——从竞品分析到破局路径的思考
  • Spring Boot中Controller层规划与最佳实践详解
  • 【北京迅为】iTOP-4412精英版使用手册-第二十一章 延时函数专题
  • Python爬虫-批量爬取快手视频并将视频下载保存到本地
  • BeckHoff PLC --> 料筐(KLT Box)自动对中与抓取程序分析
  • Deep Research Agent的深度与广度如何保证
  • OSGI 是什么,有哪些具体应用、java8、9、10、11比较
  • C++操作系统与网络编程(针对特定岗位)
  • SpringBoot打包运行原理和加载机制原理
  • 从大数据到大模型:我们是否在重蹈覆覆辙
  • 一文详解前缀和:从一维到二维的高效算法应用
  • Java相关-链表-设计链表-力扣707
  • JS进阶 Day02
  • 在tensorrt engine中提高推理性能小记
  • 互联网大厂Java求职面试:云原生架构与微服务设计中的复杂挑战
  • Flask文件上传与异常处理完全指南
  • create_react_agent + MCP tools
  • TDengine 如何从 2.x 迁移到 3.0
  • Java并发编程实战 Day 22:高性能无锁编程技术
  • JAVA关键字-final
  • Semaphore入门案例
  • Java线程池ThreadPoolExecutor的状态
  • ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘%‘
  • 基于 C 语言的图书管理系统开发详解​
  • 基于YOLOv11+PP-OCRv5深度学习的智能车牌检测与识别系统python源码+pytorch模型+评估指标曲线+精美GUI界面
  • 【SpringMVC 入门介绍】
  • 零基础RT-thread第二节:按键控制
  • Redux 原理深度剖析