получить все строки, определенные в apk

#android #apk

#Android #apk

Вопрос:

Есть ли быстрый способ получить все строки, определенные в apk?

Я делаю что-то вроде этого:

 aapt d --values resources app.apk
  

Я не уверен, что это дает мне все строки.

Если есть какой-либо более простой способ проанализировать строки, пожалуйста, дайте мне знать.

Ответ №1:

Вы можете изменить «ресурсы» на «строки», и у вас это будет. Используйте:

 aapt d --values strings [APK_FILE]
  

Это приведет к удалению всех строк из apk. Дамп включает в себя строковые ресурсы, которые вы ищете.

Сюда также входят строки, сгенерированные системой, такие как путь к ресурсам (например, res / drawable-hdpi / icon.png).

Ответ №2:

Это приведет к распаковке всего APK, включая возврат файлов обратно в иерархию каталогов, которую вы ожидаете от проекта Android.

http://code.google.com/p/android-apktool / (устарел)

http://ibotpeaches.github.io/Apktool/install/

Для использования введите

 apktool d YourApp.apk
  

Результаты будут отправлены в папку с именем YourApp

Ответ №3:

Я нашел другой, возможно, более простой способ сделать это для конкретного XML-файла.

 aapt d xmlstrings app.apk xmlfile
  

Комментарии:

1. он сказал, что не может найти «xmlfile» . кроме того, я не понимаю, чего именно не хватает в вашей исходной команде, поскольку, похоже, она пишет много вещей…

2. Вы должны указать фактическое имя (с полным путем) xmlфайла. Например, «AndroidManifest.xml «. Вы также могли бы использовать исходную команду из question, но она выполняет поиск по всему apk (а не по конкретному файлу) — так что это зависит от вашего варианта использования. Кроме того, этот ответ дает гораздо более чистые результаты.

3. понятно, но откуда вы могли узнать названия файлов? разве вам не нужно было бы извлечь / открыть файл apk в виде архивированного файла?

4. да, вам нужно будет использовать утилиту zip / jar для получения имен файлов. Но поскольку эти файлы закодированы в двоичном формате, вы не сможете прочитать их вручную после извлечения. Итак, эта команда пригодится там. Конечно, такие утилиты, как apktool и androguard, могут декодировать все xmlфайлы целиком и представлять их в удобочитаемой форме — так что это, безусловно, тоже сработало бы, но я чувствую, что это потребует больше усилий, если вам не нужно изучать весь файл целиком.

5. недавно я искал apkTools и обнаружил, что его нет на форумах XDA. интересно, на что это похоже. знаете ли вы хороший инструмент с пользовательским интерфейсом, а не просто что-то, что на 100% находится в консоли?

Ответ №4:

Вы могли бы попробовать это в системе Linux:

 $ strings yourfile.spk
  

При этом будут проанализированы все символы ASCII определенной длины (по умолчанию 4 байта), но вы можете изменить эти длины с помощью параметров командной строки.

Сканирование .apk, подобное этому, даст вам МНОГО мусора, поскольку оно найдет любые печатные символы в строке и выведет их на ваш экран. Однако, попробовав это на моем собственном APK, я вижу ссылки на GIF-изображения, XML-изображения, в общем, на все, на что вы ссылаетесь по имени файла в вашем пути / res / resource. Никаких упоминаний имен функций и т.д., Очевидно, поскольку все это компилируется вплоть до машинного языка.

Если вам нужны только ссылки на XML-файлы и т.д., вы могли бы направить свой запрос через grep, вот так:

 $ strings yourfile.spk | grep xml$
  

Комментарии:

1. Спасибо за ответ. Я думаю, что одна из проблем заключается в том, что apk сжат, и поэтому не все строки будут отображаться должным образом. Более того, как вы указали, также будет получено множество нестроковых элементов, таких как сущности XML и атрибуты. Все еще может быть какая-то ценность в распаковке apk и последующем следовании этому подходу.