2010-06-26 6 views
75

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

+1

Существует несколько [методов декомпиляции APK] (http://geeknizer.com/decompile-reverse-engineer-android-apk). Я просто APKTool чаще, его лучший и самый мощный. Его очень легко [изменить файлы apk] (http://www.androidng.com/how-to-modify-android-apk) с ним. – Taranfx

+0

Я написал сообщение в блоге здесь: http://codexplo.wordpress.com/2012/03/15/how-to-decompile-android-apk-to-java-source-code/, но опять же было бы сложно для obfuscated code ... – rokonoid

+1

http://yeblon.com/how-to-decompile-android-apk-app-files - Это может быть belp –

ответ

75

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

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

+39

Никогда не говори никогда. Обфускация не остановит определенного вора, но она замедлит или сдерживает многие другие. Обработка Proguard - это простой и надежный способ обфускации вашего кода, и в качестве бонуса он также оптимизирует его. И он включен в Android SDK, поэтому он одобрен Google. –

+3

Obfuscation определенно работает, но вам нужно более четко определить, какова ваша цель. Очевидно, что единственный способ, которым вы могли бы сохранить свой исходный код по-настоящему безопасным, - никогда не предоставлять кому-либо доступ к нему, серверу или клиенту. Обратите внимание, что Proguard не работает хорошо на классах, которые имеют ссылки в файлах XML. Вам нужно использовать ручную обфускацию, чтобы обойти это. – MattC

+0

upvote для напоминания файла dex –

31

Decompilation of APK file is possible. But it might be difficult to understand the code if it is obfuscated.

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

  • экстрактах AndroidManifest.xml и все Рез папки (раскладка 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- в случае андроид приложение, но читаемый исходный код получается в случае другого файла .jar). то есть мы получаем .java обратно из приложения.
+0

apktool не выплевывает исходные файлы java! Только smali –

+1

, как я уже сказал в ответе, apktool создает .jar из .apk, и мы должны использовать JD-GUI как инструмент для декомпиляции .jar для получения .java исходных файлов. – gtiwari333

+1

вы freakin 'спас мою жизнь! какой потрясающий пост! Я потерял последние два дня кода из-за неудавшегося SSD (к сожалению, я не совершал git). Тем не менее, у меня был apk, и теперь у меня есть свой источник, разумеется, немного другое, но источник! – farcrats

0

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

2

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

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

+0

decompileandroid.com находится в автономном режиме (при загрузке apk у вас будут проблемы с загрузкой его снова), а http://www.javadecompilers.com/apk давно поставил мой apk в очередь. Я пошел в автономный режим, а затем в сети, он все еще был в очереди. Я очистил всю историю просмотров, и теперь apk, который я загрузил во второй раз, находится в очереди. – iOSAndroidWindowsMobileAppsDev

1

Скачать jadx инструмент https://sourceforge.net/projects/jadx/files/

разархивировать и чем в Lib папки выполнения jadx-гуй-0,6 .1.jar файл теперь просматривает ваш файл apk. Все готово. Автоматически apk декомпилирует и сохраняет его, нажав кнопку сохранения. Надеюсь, что это сработает для вас. Спасибо