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

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


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

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

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

 eXeL@B —› Крэки, обсуждения —› Android JNI: Как переименовать/удалить функции в нативной библиотеке, есть ли рабочий objcopy?
Посл.ответ Сообщение

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

Создано: 20 февраля 2017 05:20 · Поправил: AcidFlower New!
Цитата · Личное сообщение · #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?
Что делать, писать свою утилиту? Или все-таки где-то есть?

Ранг: 508.6 (!)
Статус: Модератор

Создано: 20 февраля 2017 10:26 New!
Цитата · Личное сообщение · #2

ручками в hiew?..


Ранг: 1011.0 (!!!!)
Статус: Участник

Создано: 20 февраля 2017 19:55 New!
Цитата · Личное сообщение · #3

посмотрите эта утилита может поможет
https://github.com/NixOS/patchelf

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

Создано: 21 февраля 2017 02:12 · Поправил: AcidFlower New!
Цитата · Личное сообщение · #4

sendersu пишет:
ручками в hiew?..

В HEX-редакторе? Слишком велики масштабы, несколько версий библиотеки, в каждый по сотне функций, не меньше, сначала переименовал "так", потом захотелось "этак". В таком случае даже если нет готовой утилиты, то написать ее - все равно более продуктивно, чем ручками. ИМХО, конечно.

reversecode пишет:
посмотрите эта утилита может поможет
https://github.com/NixOS/patchelf

Посмотрел README, вижу какой-то RPATH, который даже не знаю что такое, вижу работу с зависимостями - это понимаю, но вроде и не нужно, а про символы ни слова.
Лучше свою напишу, наверно.


Ранг: 1011.0 (!!!!)
Статус: Участник

Создано: 21 февраля 2017 02:20 New!
Цитата · Личное сообщение · #5

--> Link <--

| Сообщение посчитали полезным: AcidFlower


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

Создано: 21 февраля 2017 03:39 New!
Цитата · Личное сообщение · #6

reversecode пишет:

--> Link <--

Спасибо и на том, но это опять "полуфабрикат", если писать свою утилиту.
 eXeL@B —› Крэки, обсуждения —› Android JNI: Как переименовать/удалить функции в нативной библиотеке, есть ли рабочий objcopy?

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

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