Сейчас на форуме: NIKOLA, r0lka, johnniewalker, vsv1 (+4 невидимых) |
eXeL@B —› Крэки, обсуждения —› Android JNI: Как переименовать/удалить функции в нативной библиотеке, есть ли рабочий objcopy? |
Посл.ответ | Сообщение |
|
Создано: 20 февраля 2017 05:20 · Поправил: AcidFlower · Личное сообщение · #1 Есть библиотека с ABI armeabi-v7 (по сути это ELF Shared library архитектуры ARMv7), довольно большая, поэтому декомпилировать или дизассемблировать ее полностью не хотелось бы, надо только изменить имена функций, прежде всего JNIEXPORT, под новое имя пакета и классов. В GNU toolchain для этого есть утилиты - readelf и objcopy, на любом настольном Linux x86 и x86_64 они действительно работают, но с Android почему-то все гораздо сложнее. Из Android NDK пробовал разные toolchain'ы - arm 4.9, arm 4.8, x86 - objcopy ни в одном из них не переименовывает символ (--redefine-sym) и не удаляет (--strip-symbol), никаких ошибок не выводит, просто оставляет библиотеку без изменений, даже совпадает CRC. Toolchain с настольного Linux - естественно, с ARM работать "отказался". MinGW - тоже ничего не переименовывает. MinGW-w64 - меняет CRC, но не переименовывает. Версия под OS X - TODO. Тогда попробовал GNU ARM Toolchain - https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads - но он тоже только меняет CRC и не переименовывает. Это вообще как? Почему не реализовано для ARM и Android? Что делать, писать свою утилиту? Или все-таки где-то есть? |
|
Создано: 20 февраля 2017 10:26 · Личное сообщение · #2 |
|
Создано: 20 февраля 2017 19:55 · Личное сообщение · #3 |
|
Создано: 21 февраля 2017 02:12 · Поправил: AcidFlower · Личное сообщение · #4 sendersu пишет: ручками в hiew?.. В HEX-редакторе? Слишком велики масштабы, несколько версий библиотеки, в каждый по сотне функций, не меньше, сначала переименовал "так", потом захотелось "этак". В таком случае даже если нет готовой утилиты, то написать ее - все равно более продуктивно, чем ручками. ИМХО, конечно. reversecode пишет: посмотрите эта утилита может поможет https://github.com/NixOS/patchelf Посмотрел README, вижу какой-то RPATH, который даже не знаю что такое, вижу работу с зависимостями - это понимаю, но вроде и не нужно, а про символы ни слова. Лучше свою напишу, наверно. |
|
Создано: 21 февраля 2017 02:20 · Личное сообщение · #5 |
|
Создано: 21 февраля 2017 03:39 · Личное сообщение · #6 |
|
Создано: 02 марта 2020 17:51 · Поправил: olafudaf · Личное сообщение · #7 |
eXeL@B —› Крэки, обсуждения —› Android JNI: Как переименовать/удалить функции в нативной библиотеке, есть ли рабочий objcopy? |