Сейчас на форуме: subword, rtsgreg1989, zds (+9 невидимых) |
eXeL@B —› Основной форум —› Проблема с патчем DLL. Чем отредактировать Relocation Table ? |
Посл.ответ | Сообщение |
|
Создано: 29 марта 2008 14:32 · Личное сообщение · #1 Мне необходимо пропатчить DLL но с этим есть проблема: На картинке видно что и как я хочу сделать (это пример, что xor eax,eax будет короче - я знаю), hiew выделил место которое будет пропатчено так как на него есть ссылка в Relocation Table. Соответственно загрузив нижний пример в отладчик мы увидим совсем не ту картину. Я посмотрел разные инструменты, Relox, плагин для PE Tools по работе с релоками, PE Explorer, но так и не понял как сделать так, что бы эта область не патчилась. Собственно вопрос в том, как и чем найти в relocation table ссылку на это место в программе и удалить эту запись. Так же хотелось бы знать, чем можно создать новую запись на необходимое мне место, но это уже второй вопрос... В общем интересует инструмент по редактированию relocation table или статьи на эту тему. |
|
Создано: 29 марта 2008 14:39 · Личное сообщение · #2 |
|
Создано: 29 марта 2008 15:02 · Личное сообщение · #3 |
|
Создано: 29 марта 2008 15:52 · Поправил: Bitfry · Личное сообщение · #4 Держи мою поделку. Писал для личного пользования, для отладки своей либы (кстати, библиотека работы с релоками почти готова к первому релизу). Полный редактор (ГУИ и функционал) теперь пишет Jupiter. Ну а пока так: rapidshare.com/files/103510126/RelocEdit.rar.html (исправил пару багов, добавил удалялку всех релоков секции) ----- Всем привет, я вернулся |
|
Создано: 29 марта 2008 16:06 · Личное сообщение · #5 Инструкция: левый едит - добавлялка релока. Туда надо вписать RVA цели и нажать ентер =) правый едит - правка релока. Можно изменить значение имеющегося релока. 0 - обнуляет релок (то есть больше он не учитывается виндой). Del - удаляет блок (если в релок мышкой не тыкнул) или релок (если в него уже тыкнул мышкой... Фокус, не фокус, а теперь удаляет только релок =)). Сохранять изменения можно только нажатием Yes при закрытии редактора! Открывать за один запуск можно только один файл. Глюки интерфейса не обсуждаются! Ибо цель утилиты - отладка RL-API. ----- Всем привет, я вернулся |
|
Создано: 29 марта 2008 16:24 · Личное сообщение · #6 |
|
Создано: 29 марта 2008 17:06 · Личное сообщение · #7 Bitfry пишет: Держи мою поделку. Огромное спасибо ! Это как раз то, что я искал ! Рад, что будет релиз и тулза получит развитие. Как я понял то что мне нужно было сделать довольно проблемно ? Иначе подобные возможности были бы в любом PE редакторе. __ пишет: а учесть в коде патча текущую базу загрузки не судьба, т.е. сначала вычислить базу и пропатчить в рантайме? Сложно для меня это, нужно многое прочитать и выучить, а на сегодня нужно бысто получить результат, по этому и искал инструмент который это делает... |
|
Создано: 29 марта 2008 17:08 · Поправил: Bitfry · Личное сообщение · #8 __ пишет: а учесть в коде патча текущую базу загрузки не судьба, т.е. сначала вычислить базу и пропатчить в рантайме? Извращаться можно по всякому: 1) поставить атрибут записи на секции, 2) через Call $,pop eax получить фактическую базу 3) вычесть из неё ImageBase и текущее смещение 4) прибавить это дело к своим указателям в патче ... =) ИМХО уж лучше писать базонезависимый код патча и обходить уже имеющиеся релоки. А уж если есть редактор, то всё становится совсем просто. Согласись? ToBad пишет: Как я понял то что мне нужно было сделать довольно проблемно ? Иначе подобные возможности были бы в любом PE редакторе. Не сказал бы, что сложно. PE-формат давно разобран. Документация имеется. Просто тема непопулярная. Но мы это исправим. arnix пишет: Explorer Suite -> CFF Explorer там есть редактор релоков Да, в CFF Explorer "есть" возможность исправлять имеющиеся релоки... Пользоваться этим неудобно. Надо сначала изучать доку по релокам, потом понять, что CFF Explorer глючит, а уже потом соображать, что да как исправлять. ----- Всем привет, я вернулся |
|
Создано: 31 марта 2008 23:26 · Личное сообщение · #9 |
|
Создано: 01 апреля 2008 02:14 · Личное сообщение · #10 |
eXeL@B —› Основной форум —› Проблема с патчем DLL. Чем отредактировать Relocation Table ? |