Русский / Russian English / Английский

Сейчас на форуме: Wilps (+5 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

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

Ранг: 26.9 (посетитель)
Статус: Участник

Создано: 8 декабря 2019 17:59 New!
Цитата · Личное сообщение · #1

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

Ранг: 314.2 (мудрец)
Статус: Модератор
CrackLab

Создано: 8 декабря 2019 18:15 New!
Цитата · Личное сообщение · #2

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

Ранг: 26.9 (посетитель)
Статус: Участник

Создано: 8 декабря 2019 18:43 New!
Цитата · Личное сообщение · #3

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


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

Ранг: 10.4 (новичок)
Статус: Участник

Создано: 8 декабря 2019 20:32 New!
Цитата · Личное сообщение · #4

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

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

Ранг: 26.9 (посетитель)
Статус: Участник

Создано: 8 декабря 2019 20:47 New!
Цитата · Личное сообщение · #5

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

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

Ранг: 10.4 (новичок)
Статус: Участник

Создано: 8 декабря 2019 20:53 New!
Цитата · Личное сообщение · #6

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

Ранг: 26.9 (посетитель)
Статус: Участник

Создано: 8 декабря 2019 21:02 New!
Цитата · Личное сообщение · #7

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

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

Ранг: 314.2 (мудрец)
Статус: Модератор
CrackLab

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

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


{ Атач доступен только для участников форума } - Reloc.rar

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


Ранг: 26.9 (посетитель)
Статус: Участник

Создано: 9 декабря 2019 08:44 · Поправил: Chris New!
Цитата · Личное сообщение · #9

SReg
Спасибо!
Интерфейс у тулзы... прям скажем не юзабельный.

Добавлено

"Умный в гору не пойдет, умный гору обойдет" © С.В. Михалков

Прочесал сеть, но не увидел никаких следов похожей задачи. Зато нашёл тулзы: PE Tools, CFF Explorer, LordPE, PE Optimizer, PE Explorer, ну и RelocEditor (ещё есть ReloX, но она для dll'ок). Вроде как немало, но большинство из них к редактору релоков никак не причислишь, если не считать того, что все они заточены на удаление их всех и сразу, скопом. К тому же дата рождения тулз в прошлом веке, а потому даже в Win 7 глючат и, что ещё хуже, выдают кривой результат.
Поразмыслив, выплыла идея: а зачем копию функции подстраивать под существующий код и делать её перемещаемой, если можно просто убрать релоки? Начал с того, что пытался удалить секцию .reloc с помощью каждого из инструментов. Не сильно удивился, что после этой операции ни один из пациентов не задышал. И если удавалось вручную реанимировать запуск, то всё равно при старте сразу возникала внутренняя ошибка "Прекращена работа программы...". (Возможно это присуще конкретному пациенту). На следующем этапе научного тыка удалил релоки только для секции кода (.text). И это сработало! Изначальная задача внедрения примочки решена вот таким способом.
 eXeL@B —› Вопросы новичков —› Скопировать функцию с адресом из области перемещаемых данных

Видеокурс ВЗЛОМ