В настоящее время я пытаюсь установить программы исправления (обновить код и данные в памяти программы, согласно выпуску патча).Найдите переменные стека/кучи в памяти
Предположим, что мы можем остановить запущенную программу и сделать патч. Если исправление изменяет некоторые значения инициализации или назначения данных, как мы можем знать, где переменные, например, в стеке или куче?
Пример:
Перед патч:
void func() {
int a = 1;
}
После патча:
void func() {
int a = 2;
}
Когда заплат, как мы могли бы знать расположение a
в стеке (или, возможно, не в стек)?
Я предлагаю вам исправить инструкцию инициализации в этом случае; размещение переменной в стеке не является надежным (зависит от компилятора, а также есть некоторые оптимизации, которые могут затруднить работу). Будет ли это решение приемлемым? –