Сейчас на форуме: Lohmaty (+6 невидимых)

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

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

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

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




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

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

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


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

-----
Give me a HANDLE and I will move the Earth.




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

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

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

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



Ранг: 8.2 (гость), 11thx
Активность: 0.050.04
Статус: Участник

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

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




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

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

ByteFun

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

-----
vx




Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

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

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

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




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

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

rmn

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

-----
vx




Ранг: 16.5 (новичок), 5thx
Активность: 0.01=0.01
Статус: Участник
iOS expert

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

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

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

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

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


Ранг: 605.2 (!), 341thx
Активность: 0.470.25
Статус: Модератор
Research & Development

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

ByteFun

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

-----
EnJoy!


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


Ранг: 136.0 (ветеран), 360thx
Активность: 0.270.14
Статус: Участник
Qt Developer

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

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

-----
http://ntinfo.biz



 eXeL@B —› Вопросы новичков —› Коррекция релоков DLL
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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