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

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


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

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

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

 eXeL@B —› Крэки, обсуждения —› Внесение функций в .so библиотеки Android
Посл.ответ Сообщение

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

Создано: 3 марта 2017 17:11 New!
Цитата · Личное сообщение · #1

Доброго времени суток. Прошерстил форум и гугл, но ответа на вопрос не нашел. Итак, в чем суть моей проблемы:
Имеется библиотека libaudioflinger.so, которая содержит в себе некоторые функции для запуска звукового эффекта (в моем случае портирую DTS headphone:X), и точно такой же файл без этих функций в прошивке моего телефона.
Смотрю функции с помощью ida pro, помечаю их начало и конец в файле донора, открываю файл взятый с моего телефона через hex workshop, вношу строки, скопированные из флингера донора.

Проблема заключается в том, что не могу сделать relocate библиотеки - так как после сохранения теряется структура файлаю Насколько я понимаю мне нужен patchelf, чтобы линкер воспринимал пропатченный файл, но patchelf опять же насколько я понял работает для никс/линукс и не воспринимает библиотеки ведра. Возможно я в корне неправильно понимаю процесс, или есть аналог patchelf который поможет решить мне эту проблему?


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

Создано: 13 марта 2017 21:44 New!
Цитата · Личное сообщение · #2

Дело в том, что в случае с бинарными файлами нет понятия "строк", как в случае с обычным текстом, поэтому нельзя просто так взять и скопипастить бинарный код, как текст.
При это дело не только в релокации, но и в перекрёстных ссылках на функции.

В данном случае вижу несколько возможных вариантов:

1. Декомпилировать до исходников на Си, чтобы можно было отсутствующие функции отдельно пересобрать в отдельную библиотеку, которую подключить отдельно. Как подключить: в Hiew добавить вызов библиотеки при инициализации (чтобы подгрузить), после чего добавить в функции, в которые добавляется новый функционал, добавить jmp или call на функции подгруженной библиотеки. Этот вариант хорош тем, что позволяет вносить минимальные изменения в виде патчей, а всю работу вынести в отдельную библиотеку.
2. Дизассемблировать в .asm, после чего либо последовать по пути п.1.
3. Дизассемблировать в .asm, после чего открыть изменяемый и оригинальный файлы в Hiew (открытие другого файла по F9, переключение между файлами по Tab) и, поглядывая в исходники, копировать блоки функций (выделение двойным кликом по начальному и конечному байту блока) в hex режиме, после чего в режиме кода (переключение по F4) править ссылки.

Только после этого решать проблему с релоками.
Ну и попробуй скомпилить patchelf из исходников: https://github.com/NixOS/patchelf.
Если не получится, поставь на виртуалку или воспользуйся онлайн сервисами с установленным линем.

Ну и напоследок простой вопрос:
А нельзя полную версию библиотеки заменить целиком, без препарирования?
 eXeL@B —› Крэки, обсуждения —› Внесение функций в .so библиотеки Android

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

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