我目前正在尝试对程序进行热补丁(根据已发布的补丁更新程序内存中的代码和数据)。
假设我们可以停止一个正在运行的程序,然后打补丁。如果补丁改变了一些数据初始化或赋值,我们怎么知道变量在哪里,比如堆栈或堆中的那些?
例子:
补丁前:
void func() {
int a = 1;
}
补丁后:
void func() {
int a = 2;
}
打补丁时,我们怎么知道堆栈中的位置a
(或者可能不在堆栈中)?
我目前正在尝试对程序进行热补丁(根据已发布的补丁更新程序内存中的代码和数据)。
假设我们可以停止一个正在运行的程序,然后打补丁。如果补丁改变了一些数据初始化或赋值,我们怎么知道变量在哪里,比如堆栈或堆中的那些?
例子:
补丁前:
void func() {
int a = 1;
}
补丁后:
void func() {
int a = 2;
}
打补丁时,我们怎么知道堆栈中的位置a
(或者可能不在堆栈中)?