Можно ли декомпилировать файл .apk для Android?

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

Ответ 1

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

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

Ответ 2

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

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

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

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

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

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

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

Ответ 3

Я думаю, что его можно использовать dex2jar и gd-gui для извлечения ресурсов вы можете изменить расширение apk на zip. но код, декомпилированный с использованием dex2jar, не будет таким же, как оригинал поскольку Android использует proGuard по умолчанию

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

да.

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

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

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

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

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

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