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

热补丁简介

1,热补丁机制

简单理解就是,函数的替换,把之前的同名函数的地址换成新的函数。

具体的原理,就是修改函数入口和出口处的汇编代码,利用指令跳转,实现函数体的替换。

2,补丁代码实现方法

引用的头文件,可以全部保留

修改的函数,整个函数留着,

不修改的函数,直接删掉。

条件编译,有括号的和没有括号的

3,热补丁可修改的范围
(1)热补丁无法修改.h,只能修改.c
(2)可以新增变量和函数
(3)过于简单的函数,可能会被内联优化,从而无法打补丁。
(4)过于简单的函数,如果没有内联,但是汇编指令太少的话,也是无法打补丁的。


4,编码规则
(1)全局变量不能重复定义,要么删掉或注释掉,要么extern
(2)补丁函数用到的全局变量和调用函数需要extern
(3)宏是可以直接用的
(4)静态函数和静态变量不能打补丁(好像是吧?)


http://www.mrgr.cn/news/8664.html

相关文章:

  • 力扣题/图论/课程表
  • 【ROS2】local_setup.bash和setup.bash的区别
  • gptk是什么意思?Mac电脑如何在crossover里安装gptk2.0测试版?借助GPTK玩《原神》《黑神话悟空》游戏
  • SQLserver在SQL Server Management Studio 20中的默认值和设置主键自增
  • C++ | Leetcode C++题解之第371题两整数之和
  • 5.1二叉树——基本概念梳理
  • 线程之为什么弃用 AsyncTask
  • 车牌号查车辆信息-车牌号查车辆信息接口-车牌号查车辆AP
  • [C++] 初识 智能指针
  • 4. Java中的ArrayList和LinkedList有什么区别?各自的优缺点是什么?在什么场景下选择使用它们?
  • 论文阅读1 Scaling Synthetic Data Creation with 1,000,000,000 Personas
  • 排序算法刷题【leetcode88题目:合并两个有序数组、leetcode21:合并两个有序链表】
  • 【微信小程序】自定义组件 - behaviors
  • Android13 app后台无法启动Abort background activity starts from
  • C++ JAVA源码 HMAC计算 openssl 消息认证码计算 https消息防篡改 通信安全
  • 代码随想录算法训练营第58天|拓扑排序精讲、dijkstra(朴素版)精讲
  • 音源编曲:各种编曲音源推荐和运用场景
  • UE5用蓝图实现物体A始终朝向物体B |Find Look at Rotation|
  • 普通项目解决跨域问题和springSecurity解决跨域问题
  • 【学术会议征稿】2024年计算机与信息安全国际会议(WCCIS 2024)