在运行时动态更新二进制文件(可执行文件)而不停止的任何类型的方法

Any way to dynamic update a binary (executable file) at running time without halt?

本文关键字:不停止 任何 方法 类型 可执行文件 动态 运行时 更新 二进制文件      更新时间:2023-10-16

考虑到我们在 1 年前用 C++ 制作了一个程序,它正在连续工作,没有任何停止!

在 1 年前,我们不知道有一天我们应该更新它(由于修复了一些错误)。 所以我们没有在其上实现任何DSU(动态软件更新)指令。 此外,它也不会在虚拟机中运行,这也让我可以访问其内存或上下文。

现在如何在不停止和停止的情况下在其中进行更新(添加或删除某些功能,数据类型或指令)。

有什么建议吗?谢谢。

您必须向其附加调试器。在不会破坏任何东西的执行点停止它,替换可执行映像,重新对齐指令指针,如果您选择了一个错误的中断点,您还必须重新对齐堆栈并修改可能受新代码影响/添加的变量。

这比你想要的要麻烦得多。

如果您的修改是本地的,那么最好使用代码洞穴作为此特定正在运行的实例的临时解决方案。