У меня есть эта программа, которую я пытаюсь реконструировать. Я не знаю, был ли это оптимизатор компилятора или обфускация, но теперь некоторые части кода, которые вызывают другие функции, вычисляются с помощью математики, а затем называются, например,
CALL EAX
Работает правильно, пока не загрузится как DLL в другую программу. Смещения базовых адресов изменены, поэтому теперь все относительные коды работают правильно, но все математические вычисления / jmps не попадают в нужные области.
Итак, я решил, что это легко исправить, превратив все абсолютные вызовы в относительные.
Шагая по коду и позволяя вычислить всю математику, я получаю правильное смещение jmp / call.
У меня нет проблем, например, недостаточно места для размещения патча. Поскольку абсолютный вызов обычно использует строку, перед которой я мог бы также использовать, чтобы исправить вещи
Абсолютный вызов, это где математика заканчивается:
seg000:0044F7D1 add eax, 3B882683h
seg000:0044F7D6 call eax
для преобразования в
seg000:0044F7D1 call 3B882683h
Ну, конечно, вышесказанное не сработает, так как eax уже был чем-то, но это просто пример псевдокода
Ну, мой вопрос не в том, как это сделать, но есть ли плагин, который автоматически делает это для меня в OllyDbg или IDA Pro?