Сейчас на форуме: NIKOLA, r0lka, johnniewalker, vsv1 (+4 невидимых)

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

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

Создано: 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?
Что делать, писать свою утилиту? Или все-таки где-то есть?



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

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

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




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

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

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



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

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

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

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

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

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




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

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

--> Link <--

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

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

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

reversecode пишет:

--> Link <--

Спасибо и на том, но это опять "полуфабрикат", если писать свою утилиту.



Ранг: 2.5 (гость), 1thx
Активность: 0.010
Статус: Участник

Создано: 02 марта 2020 17:51 · Поправил: olafudaf
· Личное сообщение · #7

AcidFlower пишет:
Спасибо и на том, но это опять "полуфабрикат", если писать свою утилиту.


Здравствуйте, Извиняюсь за поднятие старой темы.
Подскажите - нашли Решение по замене символов в ELF'е (требуется переименовать функцию)
Очень надо.


 [email protected] —› Крэки, обсуждения —› Android JNI: Как переименовать/удалить функции в нативной библиотеке, есть ли рабочий objcopy?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати