Можно ли декомпилировать файл Android .apk? - PullRequest
81 голосов
/ 26 июня 2010

Могут ли пользователи преобразовать файл apk моего приложения обратно в реальный код?Если они это сделают - есть ли способ предотвратить это?

Ответы [ 6 ]

78 голосов
/ 26 июня 2010

Во-первых, apk-файл - это просто модифицированный jar-файл. Таким образом, реальный вопрос заключается в том, могут ли они декомпилировать файлы dex внутри. Ответ вроде. Уже есть дизассемблеры, такие как dedexer и smali . Вы можете ожидать, что они станут только лучше, и теоретически в конечном итоге должна быть возможность декомпилироваться в реальный исходный код Java (по крайней мере, иногда). Смотрите предыдущий вопрос декомпиляция DEX в исходный код Java .

То, что вы должны помнить, это запутывание никогда не работает. Выберите хорошую лицензию и приложите все усилия, чтобы обеспечить ее соблюдение законом. Не тратьте время на ненадежные технические меры.

32 голосов
/ 09 февраля 2012

Возможна декомпиляция APK-файла.Но может быть трудно понять код, если он запутан.

ApkTool для просмотра ресурсов внутри APK-файла

  • Извлекает AndroidManifest.xml ивсе в папке res (файлы макета XML, изображения, htmls, используемые в веб-просмотре и т. д.)
  • команда: apktool.bat d sampleApp.apk
  • ПРИМЕЧАНИЕ: Этого можно добиться, используяУтилита zip, такая как 7-zip.Но он также извлекает файл .smali из всех файлов .class.

Использование dex2jar

  • Создает файл .jar из файла .apk,нам нужен JD-GUI для просмотра исходного кода из этого .jar.
  • команда: dex2jar sampleApp.apk

Декомпиляция .jar с использованием JD-GUI

  • декомпилирует файлы .class (обфусцировано - в случае приложения для Android, но читаемый оригинальный код получается в случае другого файла .jar).т.е. мы получаем .java обратно из приложения.
1 голос
/ 02 мая 2017

Загрузите этот инструмент jadx https://sourceforge.net/projects/jadx/files/

Распакуйте его, а затем в папке lib запустите файл jadx-gui-0.6.1.jar и просмотрите файл apk.Это сделано.Автоматически APK будет декомпилироваться и сохранять его, нажав кнопку Сохранить.Надеюсь, это сработает для вас.Спасибо

1 голос
/ 12 декабря 2015

Могу также добавить, что в настоящее время можно декомпилировать приложение для Android в режиме онлайн, программное обеспечение не требуется!

Вот 2 варианта для вас:

0 голосов
/ 29 апреля 2019

Могут ли пользователи преобразовать файл apk моего приложения обратно в реальный код?

да.

Люди могут использовать различные инструменты для:

  • анализ: ваш апк
  • расшифровать / взломать ваш apk
    • с использованием FDex2 для вывода файла dex
      • , затем используя dex2jar для преобразования в jar
        • и затем jadx для преобразования в java исходный код

Если они это сделают - есть ли способ предотвратить это?

да. Несколько (можно комбинировать) способов предотвратить (в определенной степени) это:

  • низкий уровень: запутывание кода
    • с помощью Android ProGuard
  • высокий уровень: используйте сценарий защиты Android

Более подробную информацию можно найти в моем китайском учебном пособии: 10 应用 的 安全 和 破解

0 голосов
/ 05 марта 2015

Иногда вы получаете неработающий код при использовании dex2jar / apktool, особенно в циклах. Чтобы избежать этого, используйте jadx , который декомпилирует байт-код dalvik в исходный код Java, не создавая сначала файл .jar / .class, как dex2jar (apktool использует dex2jar, я думаю). Это также с открытым исходным кодом и в активной разработке. У него даже есть GUI, для GUI-фанатиков. Попробуй!

...