Сейчас на форуме: Lohmaty (+6 невидимых) |
eXeL@B —› Вопросы новичков —› Коррекция релоков DLL |
Посл.ответ | Сообщение |
|
Создано: 02 сентября 2018 02:17 · Личное сообщение · #1 Сдампил DLL из памяти. При загрузке в IDA и анализе везде ругань на абсолютные адреса. В дизассемблере решил проблему путем сдвига всех сегмнетов кроме кода через "Edit -> Segments -> Move current segment...". С ручной загрузкой файла в IDA не справился, много требует от моего мозга =) Требуется отработать с библиотекой через собственную софтину. Как быть с релоками? Возможно есть софт для коррекции? WinAPI умеет грузить библиотеки по "моему" адресу? |
|
Создано: 02 сентября 2018 02:21 · Личное сообщение · #2 ByteFun пишет: Возможно есть софт для коррекции? Глянь ----- Give me a HANDLE and I will move the Earth. |
|
Создано: 02 сентября 2018 02:33 · Личное сообщение · #3 |
|
Создано: 02 сентября 2018 06:55 · Личное сообщение · #4 |
|
Создано: 02 сентября 2018 09:50 · Поправил: difexacaw · Личное сообщение · #5 |
|
Создано: 02 сентября 2018 12:36 · Личное сообщение · #6 difexacaw пишет: так как инфы про указатели не имеется Ну, можно ж ловушек поставить и из-под визора отследить обращения по указателям А так, таблица релоков из загруженной длл никуда не испаряется, надо только применить их на ту базу, которая в заголовках, а не по которой длл реально загружена, и потом уже сохранять в фаел. |
|
Создано: 02 сентября 2018 17:20 · Личное сообщение · #7 rmn Это от дампера зависит. Если есть исходная таблица релокаций и он это ровно обработает, то на выходе будет релоцируемый модуль. Но если же это как в случае тс просто сохранение регионов как секций, то релоки при таком дампе будут утеряны. Дальнейшая релокация невозможна, так как маркеры на указатели в таком модуле отсутствуют. Придётся грузить по фикс базе, а она может быть занята. Не ясна цель тс, если это не ранпе, то это не правильный подход к задаче. ----- vx |
|
Создано: 19 сентября 2018 13:19 · Личное сообщение · #8 ByteFun пишет: WinAPI умеет грузить библиотеки по "моему" адресу? Умеет, если "сбить" релокацию. Открываешь библиотеку в PE Tools, заходишь в директории по кнопке Directories. Далее два поля Base Relocation Table - проставляешь нули. При это наличие секции .reloc ни о чем не говорит загрузчику, т.е. с данной секцией делать ничего не нужно специально - релоки берутся только из директории. Единственное что надо сделать еще - зайти в раздел File Header там же (кнопка выше Directories), там нажать на "..." напротив Characteristics и поставить галочку "Relocation stripped". Плюсы: + не надо заморачиваться с релокациями, если цель "отработать с библиотекой через собственную софтину" Минусы: - при конфликте адресов с другими такими же библиотеками - просто ошибка и все | Сообщение посчитали полезным: Jupiter |
|
Создано: 19 сентября 2018 16:32 · Личное сообщение · #9 ByteFun Всё зависит от упаковщика. В большинстве случаев пакер просто хранит информацию о релоках в запакованной области, либо в собственном формате. Но и в том, и в другом случае можно прикрутить релоки к распакованной библиотеке. Код обработки релоков можно легко отловить по записи в секцию кода после распаковки. ----- EnJoy! | Сообщение посчитали полезным: Katana |
|
Создано: 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 |