Сейчас на форуме: tyns777, bezumchik (+4 невидимых)

 eXeL@B —› Вопросы новичков —› Скопировать функцию с адресом из области перемещаемых данных
Посл.ответ Сообщение

Ранг: 26.9 (посетитель), 1thx
Активность: 0.050.01
Статус: Участник

Создано: 08 декабря 2019 17:59
· Личное сообщение · #1

В исполняемом файле потребовалось использовать фрагмент кода в другом месте его же кода. Всё бы ничего, да только в фрагменте имеется функция, адрес которой находится в области перемещаемых данных, и с её копированием возникли проблемы. Пример функции: 68 94003503. (В листинге отладчик подчёркивает байты, которые могут быть изменены после каждого запуска файла).
Как сделать полную копию такой функции? Имеется ввиду, что копия должна иметь синхронизированный адрес с адресом оригинала в случае его изменения.



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 08 декабря 2019 18:15
· Личное сообщение · #2

Ну так релок добавить нужно, очевидно же



Ранг: 26.9 (посетитель), 1thx
Активность: 0.050.01
Статус: Участник

Создано: 08 декабря 2019 18:43
· Личное сообщение · #3

SReg пишет:
Ну так релок добавить нужно, очевидно же


Где можно пример глянуть?



Ранг: 10.8 (новичок), 4thx
Активность: 0.17=0.17
Статус: Участник

Создано: 08 декабря 2019 20:32
· Личное сообщение · #4

Chris пишет:
Как сделать полную копию такой функции

Сделать точно так же - в своей копии заменит байты на нужные "вручную"



Ранг: 26.9 (посетитель), 1thx
Активность: 0.050.01
Статус: Участник

Создано: 08 декабря 2019 20:47
· Личное сообщение · #5

AE пишет:
в своей копии заменит байты на нужные "вручную"

Не-а. Синхронизации нет. В копии в зависимости от запусков байты не меняются, и это согласуется с тем, что байты адреса не подчёркнуты.



Ранг: 10.8 (новичок), 4thx
Активность: 0.17=0.17
Статус: Участник

Создано: 08 декабря 2019 20:53
· Личное сообщение · #6

Господи, Chris, вручную потому и в кавычках, что нуна завести участок кода который "синхронизирует" это.
На всякий случай сразу напишу:
- посмотреть какие байты там
- записать их себе



Ранг: 26.9 (посетитель), 1thx
Активность: 0.050.01
Статус: Участник

Создано: 08 декабря 2019 21:02
· Личное сообщение · #7

AE пишет:
нуна завести участок кода который "синхронизирует" это.

"нуна" - это что? "Нужно", что ли?
Тогда как определить, какой участок кода именно синхронизирует?



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 08 декабря 2019 22:03
· Личное сообщение · #8

Chris пишет:
Где можно пример глянуть?


19b3_08.12.2019_EXELAB.rU.tgz - Reloc.rar

| Сообщение посчитали полезным: Chris

Ранг: 26.9 (посетитель), 1thx
Активность: 0.050.01
Статус: Участник

Создано: 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 —› Вопросы новичков —› Скопировать функцию с адресом из области перемещаемых данных
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати