2010-06-26 22 views
75

Gli utenti sono in grado di convertire il file apk della mia applicazione nel codice effettivo? Se lo fanno - c'è un modo per impedirlo?È possibile decompilare un file .apk di Android?

+1

Esistono diversi [metodi di decompilazione APK] (http://geeknizer.com/decompile-reverse-engineer-android-apk). Ho appena APKTool più spesso, è il migliore e più potente. È molto facile [modificare i file apk] (http://www.androidng.com/how-to-modify-android-apk) con esso. – Taranfx

+0

Ho scritto un post sul blog qui: http://codexplo.wordpress.com/2012/03/15/how-to-decompile-android-apk-to-java-source-code/ ma ancora, sarebbe difficile per codice offuscato ... – rokonoid

+1

http://yeblon.com/how-to-decompile-android-apk-app-files - Questo potrebbe generare un possibile duplicato di [ –

risposta

75

Innanzitutto, uno apk file è solo un file jar modificato. Quindi la vera domanda è che possono decompilare i file dex all'interno. La risposta è sorta di. Esistono già disassemblatori, come dedexer e smali. Ci si può aspettare che questi migliori solo, e teoricamente dovrebbe essere possibile decompilare alla sorgente Java reale (almeno a volte). Vedere la precedente domanda decompiling DEX into Java sourcecode.

Quello che dovresti ricordare è l'offuscamento non funziona mai. Scegli una buona licenza e fai del tuo meglio per farla rispettare attraverso la legge. Non perdere tempo con misure tecniche inaffidabili.

+39

Mai dire mai. L'offuscamento non fermerà un determinato ladro ma rallenterà o scoraggerà molti altri. L'elaborazione con Proguard è un modo semplice e AFFIDABILE per nascondere il codice e, come bonus, lo ottimizzerà anche. Ed è incluso nell'SDK di Android, quindi è approvato da Google. –

+3

L'obfuscation funziona sicuramente, ma devi definire più chiaramente qual è il tuo obiettivo. Ovviamente l'unico modo per mantenere il codice sorgente veramente sicuro è non concedere mai a nessuno l'accesso, server o client. Nota che Proguard non funziona bene su classi che hanno riferimenti nei file XML. È necessario utilizzare l'offuscamento manuale per aggirare il problema. – MattC

+0

upvote per ricordare il file dex –

31

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

ApkTool Per visualizzare le risorse all'interno APK file

  • Estratti AndroidManifest.xml e tutto nella cartella res (file di layout XML, immagini, HTMLs utilizzato su WebView, ecc ..)
  • Comando
  • : apktool.bat d sampleApp.apk
  • NOTA: È possibile ottenere ciò utilizzando l'utilità zip come 7-zip. Ma estrae anche il file .smali di tutti i file .class.

Utilizzando dex2jar

  • Genera file .jar da file .apk, abbiamo bisogno di JD-GUI per visualizzare il codice sorgente da questo .jar.
  • comando: dex2jar sampleApp.apk

decompilazione .jar usando JD-GUI

  • decompila i file .class (obfuscated- in un caso di app Android, ma un codice originale leggibile si ottiene in un caso di altro file .jar). cioè, otteniamo .java dall'applicazione.
+0

apktool non sputa i file sorgente java! Solo smali –

+1

come ho già detto nella risposta, apktool crea .jar da .apk e dobbiamo usare lo strumento JD-GUI per decompilare .jar per ottenere i file di origine .java. – gtiwari333

+1

mi hai salvato la vita! che bel post! Ho perso gli ultimi due giorni di codice a causa di un SSD fallito (purtroppo non mi sono impegnato a git). Tuttavia, ho avuto l'apk e ora ho la mia fonte, attenzione, un po 'diverso, ma fonte! – farcrats

0

A volte si ottiene il codice danneggiato, quando si utilizza dex2jar/apktool, in particolare nei cicli. Per evitare ciò, utilizzare jadx, che decompila bytecode dalvik nel codice sorgente java, senza creare un file .jar/.class prima come dex2jar (apktool utilizza dex2jar penso). È anche open source e in sviluppo attivo. Ha anche una GUI, per i fanatici della GUI. Provalo!

2

Posso anche aggiungere, che al giorno d'oggi è possibile decompilare l'applicazione Android online, nessun software necessario!

Qui ci sono 2 opzioni per voi:

+0

decompileandroid.com non è in linea (quando si carica l'apk si avranno problemi a scaricarlo di nuovo) e http://www.javadecompilers.com/apk ha messo il mio apk in una coda per un lungo periodo. Sono andato offline, quindi online, era ancora in coda. Ho cancellato tutta la cronologia di navigazione e ora l'apk che ho caricato per la seconda volta è in coda. – iOSAndroidWindowsMobileAppsDev

1

scaricare questo strumento jadx https://sourceforge.net/projects/jadx/files/

scompattarlo e poi in lib run cartella jadx-gui-0.6 Il file .1.jar ora sfoglia il tuo file apk. Fatto. Automaticamente apk si decompila e lo salva premendo il pulsante Salva. Spero che funzionerà per voi. Grazie

Problemi correlati