在运行时动态更新二进制文件(可执行文件)而不停止的任何类型的方法
Any way to dynamic update a binary (executable file) at running time without halt?
考虑到我们在 1 年前用 C++
制作了一个程序,它正在连续工作,没有任何停止!
在 1 年前,我们不知道有一天我们应该更新它(由于修复了一些错误)。 所以我们没有在其上实现任何DSU(动态软件更新)指令。 此外,它也不会在虚拟机中运行,这也让我可以访问其内存或上下文。
现在如何在不停止和停止的情况下在其中进行更新(添加或删除某些功能,数据类型或指令)。
有什么建议吗?谢谢。
您必须向其附加调试器。在不会破坏任何东西的执行点停止它,替换可执行映像,重新对齐指令指针,如果您选择了一个错误的中断点,您还必须重新对齐堆栈并修改可能受新代码影响/添加的变量。
这比你想要的要麻烦得多。
如果您的修改是本地的,那么最好使用代码洞穴作为此特定正在运行的实例的临时解决方案。
相关文章:
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何在不产生任何垃圾的情况下获得C中的像素
- 打印时有二叉树问题.用户输入不打印任何内容
- QChart在使用QDateTimeAxis时不显示任何系列数据
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- OpenGL 着色器不绘制任何东西 - 糟糕的精灵类
- 为什么静态数组成员变量在调用对象的实例后不显示任何内容?
- 类和构造函数中的函数根本不起作用,并且不返回任何错误
- 不执行任何操作的函数调用C++
- RtMidi - MidiInDummy:此类不提供任何功能
- 为什么这个程序对投掷不做任何事情?
- Gtkmm 窗口为空白,不显示任何小部件或标题
- f 是指向函数的指针,该函数采用 int,并返回指向不带任何内容并返回双精度的函数的指针
- 执行此代码时,它不显示任何输出.为什么?
- ncurses 找不到任何关于cchar_t的文档
- 为什么套接字中的 recv() 函数不返回任何内容?
- cout 不打印任何内容到控制台
- 为什么我不能在不进行任何转换的情况下将浮点数放入任何类型的 ptr 中?
- 返回不停止函数,递归函数问题?(编程练习,动态规划,Levenshtein 回溯)
- 在运行时动态更新二进制文件(可执行文件)而不停止的任何类型的方法