В настоящее время я разрабатываю загрузчик SO-плагинов для существующей библиотеки SO (GTA SA для Android). SO-библиотеки на Android - это файлы Unix ELF. Не имея исходного кода библиотеки, я не могу просто добавить импортированную функцию в исходный код и снова скомпилировать библиотеку SO.Как добавить одну импортированную функцию в существующую библиотеку Android SO?
Существует libGTASA.so, который я хочу редактировать и изменять таблицу импорта, добавляя новый символ RunSOpluginLoader, который будет реализован в libFastman92pluginLoader.so, который уже загружен до того, как libGTASA.so будет загружен кодом Java (classes.dex), который я также изменил.
Для EXE-файлов в Windows существует множество программ для редактирования импорта, и я бы использовал LordPE. Для файла ELF мне нужно другое решение, и у меня проблемы с поиском.
Я пробовал использовать HT Editor, который должен открыть и отредактировать файлы ELF, но через несколько секунд после того, как libGTASA.so откроется в HT Editor, приложение просто сработает.
Мне нужно решение для добавления импорта в библиотеку SO, предпочтительно решение, которое будет работать в Windows, но если нет, то я готов сделать это в системе Linux.
После правильного добавления импорта я собираюсь отредактировать бит ARM-кода внутри libGTASA.so, чтобы фактически вызвать недавно импортированную функцию.
По существу:
libGTASA.so - Я хочу добавить импортированный символ RunSOpluginLoader в этот файл.