eXeL@B —› Вопросы новичков —› Скопировать функцию с адресом из области перемещаемых данных |
Посл.ответ | Сообщение |
|
Создано: 08 декабря 2019 17:59 · Личное сообщение · #1 В исполняемом файле потребовалось использовать фрагмент кода в другом месте его же кода. Всё бы ничего, да только в фрагменте имеется функция, адрес которой находится в области перемещаемых данных, и с её копированием возникли проблемы. Пример функции: 68 94003503. (В листинге отладчик подчёркивает байты, которые могут быть изменены после каждого запуска файла). Как сделать полную копию такой функции? Имеется ввиду, что копия должна иметь синхронизированный адрес с адресом оригинала в случае его изменения. |
|
Создано: 08 декабря 2019 18:15 · Личное сообщение · #2 |
|
Создано: 08 декабря 2019 18:43 · Личное сообщение · #3 |
|
Создано: 08 декабря 2019 20:32 · Личное сообщение · #4 |
|
Создано: 08 декабря 2019 20:47 · Личное сообщение · #5 |
|
Создано: 08 декабря 2019 20:53 · Личное сообщение · #6 |
|
Создано: 08 декабря 2019 21:02 · Личное сообщение · #7 |
|
Создано: 08 декабря 2019 22:03 · Личное сообщение · #8 Chris пишет: Где можно пример глянуть? 19b3_08.12.2019_EXELAB.rU.tgz - Reloc.rar | Сообщение посчитали полезным: Chris |
|
Создано: 09 декабря 2019 08:44 · Поправил: Chris · Личное сообщение · #9 SReg Спасибо! Интерфейс у тулзы... прям скажем не юзабельный. Добавлено "Умный в гору не пойдет, умный гору обойдет" © С.В. Михалков Прочесал сеть, но не увидел никаких следов похожей задачи. Зато нашёл тулзы: PE Tools, CFF Explorer, LordPE, PE Optimizer, PE Explorer, ну и RelocEditor (ещё есть ReloX, но она для dll'ок). Вроде как немало, но большинство из них к редактору релоков никак не причислишь, если не считать того, что все они заточены на удаление их всех и сразу, скопом. К тому же дата рождения тулз в прошлом веке, а потому даже в Win 7 глючат и, что ещё хуже, выдают кривой результат. Поразмыслив, выплыла идея: а зачем копию функции подстраивать под существующий код и делать её перемещаемой, если можно просто убрать релоки? Начал с того, что пытался удалить секцию .reloc с помощью каждого из инструментов. Не сильно удивился, что после этой операции ни один из пациентов не задышал. И если удавалось вручную реанимировать запуск, то всё равно при старте сразу возникала внутренняя ошибка "Прекращена работа программы...". (Возможно это присуще конкретному пациенту). На следующем этапе научного тыка удалил релоки только для секции кода (.text). И это сработало! Изначальная задача внедрения примочки решена вот таким способом. |
eXeL@B —› Вопросы новичков —› Скопировать функцию с адресом из области перемещаемых данных |