eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

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

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

 eXeL@B —› Вопросы новичков —› Коррекция релоков DLL
Посл.ответ Сообщение

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

Создано: 2 сентября 2018 02:17 New!
Цитата · Личное сообщение · #1

Сдампил DLL из памяти.
При загрузке в IDA и анализе везде ругань на абсолютные адреса.
В дизассемблере решил проблему путем сдвига всех сегмнетов кроме кода через "Edit -> Segments -> Move current segment...". С ручной загрузкой файла в IDA не справился, много требует от моего мозга =)
Требуется отработать с библиотекой через собственную софтину.
Как быть с релоками? Возможно есть софт для коррекции? WinAPI умеет грузить библиотеки по "моему" адресу?


Ранг: 436.8 (мудрец)
Статус: Участник
_Вечный_Студент_

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

ByteFun пишет:
Возможно есть софт для коррекции?


Глянь --> здесь<--, там должно быть то, что тебе нужно.

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

Создано: 2 сентября 2018 02:33 New!
Цитата · Личное сообщение · #3

Нашел только Rebaser
Но при смене базы все смещается с ног на голову 0_o

Добавлено спустя 7 минут
Проблему решил!
Спас останов после декрипта библиотеки в память и дампинг до процедуры загрузки.

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

Создано: 2 сентября 2018 06:55 New!
Цитата · Личное сообщение · #4

Попробуй ReloX v1.0a by MackT/uCF2000

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

Создано: 2 сентября 2018 09:50 · Поправил: difexacaw New!
Цитата · Личное сообщение · #5

ByteFun

Релок это маркер в инструкции, который показывает что поле является указателем. Для указателей применяется релокация во время загрузки. Данная инфа не формируется при дампе. Никаким инструментом вы это не решите, так как инфы про указатели не имеется.

Ранг: 140.3 (ветеран)
Статус: Участник

Создано: 2 сентября 2018 12:36 New!
Цитата · Личное сообщение · #6

difexacaw пишет:
так как инфы про указатели не имеется

Ну, можно ж ловушек поставить и из-под визора отследить обращения по указателям
А так, таблица релоков из загруженной длл никуда не испаряется, надо только применить их на ту базу, которая в заголовках, а не по которой длл реально загружена, и потом уже сохранять в фаел.

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

Создано: 2 сентября 2018 17:20 New!
Цитата · Личное сообщение · #7

rmn

Это от дампера зависит. Если есть исходная таблица релокаций и он это ровно обработает, то на выходе будет релоцируемый модуль. Но если же это как в случае тс просто сохранение регионов как секций, то релоки при таком дампе будут утеряны. Дальнейшая релокация невозможна, так как маркеры на указатели в таком модуле отсутствуют. Придётся грузить по фикс базе, а она может быть занята. Не ясна цель тс, если это не ранпе, то это не правильный подход к задаче.

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

Создано: 19 сентября 2018 13:19 New!
Цитата · Личное сообщение · #8

ByteFun пишет:
WinAPI умеет грузить библиотеки по "моему" адресу?

Умеет, если "сбить" релокацию. Открываешь библиотеку в PE Tools, заходишь в директории по кнопке Directories. Далее два поля Base Relocation Table - проставляешь нули. При это наличие секции .reloc ни о чем не говорит загрузчику, т.е. с данной секцией делать ничего не нужно специально - релоки берутся только из директории. Единственное что надо сделать еще - зайти в раздел File Header там же (кнопка выше Directories), там нажать на "..." напротив Characteristics и поставить галочку "Relocation stripped".

Плюсы:
+ не надо заморачиваться с релокациями, если цель "отработать с библиотекой через собственную софтину"
Минусы:
- при конфликте адресов с другими такими же библиотеками - просто ошибка и все

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



Ранг: 580.9 (!)
Статус: Модератор
Research & Development

Создано: 19 сентября 2018 16:32 New!
Цитата · Личное сообщение · #9

ByteFun

Всё зависит от упаковщика. В большинстве случаев пакер просто хранит информацию о релоках в запакованной области, либо в собственном формате. Но и в том, и в другом случае можно прикрутить релоки к распакованной библиотеке. Код обработки релоков можно легко отловить по записи в секцию кода после распаковки.

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



Ранг: 127.3 (ветеран)
Статус: Участник
Qt Developer

Создано: 19 сентября 2018 17:08 · Поправил: hors New!
Цитата · Личное сообщение · #10

1) Грузим dll по одному адресу и снимаем дамп на EntryPoint (OEP если dll запакована)
2) Грузим эту же dll по другому адресу и снимаем дамп на EntryPoint (OEP если dll запакована)
3) Сравниваем два дампа, с учетом разницы между BaseAddress
4) Полученные различия оформляем в виде новой секции релоков.
 eXeL@B —› Вопросы новичков —› Коррекция релоков DLL

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS