Сейчас на форуме: johnniewalker, NIKOLA (+7 невидимых) |
eXeL@B —› Крэки, обсуждения —› Внесение функций в .so библиотеки Android |
Посл.ответ | Сообщение |
|
Создано: 03 марта 2017 17:11 · Личное сообщение · #1 Доброго времени суток. Прошерстил форум и гугл, но ответа на вопрос не нашел. Итак, в чем суть моей проблемы: Имеется библиотека libaudioflinger.so, которая содержит в себе некоторые функции для запуска звукового эффекта (в моем случае портирую DTS headphone:X), и точно такой же файл без этих функций в прошивке моего телефона. Смотрю функции с помощью ida pro, помечаю их начало и конец в файле донора, открываю файл взятый с моего телефона через hex workshop, вношу строки, скопированные из флингера донора. Проблема заключается в том, что не могу сделать relocate библиотеки - так как после сохранения теряется структура файлаю Насколько я понимаю мне нужен patchelf, чтобы линкер воспринимал пропатченный файл, но patchelf опять же насколько я понял работает для никс/линукс и не воспринимает библиотеки ведра. Возможно я в корне неправильно понимаю процесс, или есть аналог patchelf который поможет решить мне эту проблему? |
|
Создано: 13 марта 2017 21:44 · Личное сообщение · #2 Дело в том, что в случае с бинарными файлами нет понятия "строк", как в случае с обычным текстом, поэтому нельзя просто так взять и скопипастить бинарный код, как текст. При это дело не только в релокации, но и в перекрёстных ссылках на функции. В данном случае вижу несколько возможных вариантов: 1. Декомпилировать до исходников на Си, чтобы можно было отсутствующие функции отдельно пересобрать в отдельную библиотеку, которую подключить отдельно. Как подключить: в Hiew добавить вызов библиотеки при инициализации (чтобы подгрузить), после чего добавить в функции, в которые добавляется новый функционал, добавить jmp или call на функции подгруженной библиотеки. Этот вариант хорош тем, что позволяет вносить минимальные изменения в виде патчей, а всю работу вынести в отдельную библиотеку. 2. Дизассемблировать в .asm, после чего либо последовать по пути п.1. 3. Дизассемблировать в .asm, после чего открыть изменяемый и оригинальный файлы в Hiew (открытие другого файла по F9, переключение между файлами по Tab) и, поглядывая в исходники, копировать блоки функций (выделение двойным кликом по начальному и конечному байту блока) в hex режиме, после чего в режиме кода (переключение по F4) править ссылки. Только после этого решать проблему с релоками. Ну и попробуй скомпилить Если не получится, поставь на виртуалку или воспользуйся онлайн сервисами с установленным линем. Ну и напоследок простой вопрос: А нельзя полную версию библиотеки заменить целиком, без препарирования? ----- EnJoy! |
eXeL@B —› Крэки, обсуждения —› Внесение функций в .so библиотеки Android |