После патчинга одной DLL захотелось отключить пару десятков релоков, которые перекрывают мой патч на случай, если эта DLL вдруг загрузится не по preferred базовому адресу и затрёт мой патч... Ситуация стандартная, вроде, но никакой утилиты я для этого не нашёл. PE Editor показывает релоки, но не позволяет их индивидуально редактировать/удалять. "Обойти" релоки почти также сложно как исправить их в хекс-редакторе из-за специфики этой DLL. ЗЫ: Не надо советовать выпрямлять руки. Я и сам знаю, что хаккир из меня хреновый
Asterix Так релоки не в патче, а в оригинальном коде. Они почти в каждой инструкции. Компилятор постарался Можно, конечно, патчить все модули, которые используют эту DLL. Можно перехватывать вызовы и патчить "на лету" тоже можно, но неужели нет утилиты для редактирования релоков? Написать такую не сложно, IMHO.
Жаль Пока что заюзал rebase чтобы максимально снизить вероятность релокации и кильнул все релоки разом. Вопрос исчерпан.
Подведём итог. Меня уже убедили, что утиля для поставленной задачи нет. Возможно, никому кроме меня такой утиль и не нужен. Ну, раз так, будем считать тему закрытой.
Тулзу накидать под конкретную задачу - 15 минут максимум. По крайней мере у меня в свё время столько ушло...
Повторюсь здесь. LordPE может редактировать релоки. Правда он может еще некоторый мусор добавить в exe-шку. Например, при добавлении моего импорта, он написал [LordPE] где-то в начале файла. Еще добавил новую секцию под именем ".Silvana", но это ожидаемо.