2013-12-10 1 views
2

Мне нужно изменить так внутри Android APK. Задача состоит в том, чтобы переименовать динамические символы со стороны так (это имя функции).Как переименовать динамические символы в файле arm eself .so?

Например, переход от Java_com_example_abc _.... к Java_com_yahoo_zzz _....

Я пытаюсь использовать WinHex непосредственно поиска и замены текста слова, ошибка запуска APK. Кажется, что .hash-раздел также нуждается в обновлении, но я не знаю, как обновить раздел .hash.

Вопрос: какой правильный или предпочтительный способ переименовать динамический символ?

Я взлетел на 3 дня, пожалуйста, помогите мне, большое вам спасибо!

Обнаружено, что сообщение может быть связано, но он не дал альтернативного решения. https://sourceware.org/ml/binutils/2006-03/msg00266.html

+0

Единственный способ обновить источники .so lib и снова заполнить его. – pskink

+0

@pskink hmmm, я потерян сейчас. Так что файл, который я пытаюсь изменить, является другим, который уже модифицирован из оригинала. Поэтому я уверен, что это выполнимо, но не знаю, как это сделать. Btw, просто нужно обновить имя функции (символ). – user3086444

+0

как вы знаете .so уже изменен кем-то другим? – pskink

ответ

0

Я Heave застрял в течение 3 дней, пожалуйста, помогите мне,

То, что вы пытаетесь достичь, это эффективно невозможно.

Файлы ELF имеют сложную внутреннюю структуру, и то, что вы хотите сделать, требует, чтобы вы разбили его и снова собрали детали. Аналогия будет заключаться в том, чтобы разбить процессор Intel на транзисторы и собрать из них процессор AMD.

Нашли запись может связанную

Это является связаны. Цитата:

В основном это следующее:

  1. петлю над .dynsym и воссоздавать .dynstr
  2. воссоздать .hash таблицу с нуля
  3. вычислить новый LMA/VMA , новый формат памяти (.dynstr размер изменился!)
  4. исправить содержимое .dynamic, в соответствии с новой компоновкой
  5. исправить .rel.dyn
  6. исправить .rel.plt
  7. исправить .dynsym снова
  8. выписывать новое содержание раздела

В copy_section: исключаем переписаны разделы из того copyied.

В настоящее время создается синтаксически действующий файл ELF, но как расстояние между .plt и .got изменяется, относительная адресация в .plt не работает. Кроме того, необходимо снова установить .got.

Таким образом автору удалось склеить что-то похожее на процессор AMD, но который не работает.

Конечно, вы можете потратить еще 2 недели, чтобы понять, что сделал автор, а затем еще 3 недели, чтобы исправить оставшиеся сломанные предметы. И после этого вы получите может получить что-то такое, что иногда работает.

Ваше время Возможно, лучше потрачено в другом месте.

+0

Связанный пост - это патч, пытающийся переименовать символы различной длины. Если вам не нужно менять длину, тогда большая часть этой работы не должна быть лишней. – OrangeDog

Смежные вопросы