2012-06-05 16 views
7

Così ho pubblicato la mia app per Android, l'ho proguardata, ho applicato LVL e ho anche modificato parte del codice LVL, ma ho scoperto che si crepava da qualche parte usando uno strumento chiamato Lucky Patcher. Non ho intenzione di chiedere come posso proteggere contro 1 strumenti di clic del genere, poiché immagino non ci sia una risposta unica (a meno che tu non abbia un'idea e possa indirizzarmi verso).Come passare dall'APK crackizzato al codice java? 1-click tool ha crackato la mia app

Ho bisogno di chiederti di aiutarti a capire come il mio codice è stato rotto. Capisco che questo strumento prende il file APK e rimuove le licenze. Ora, dato che, come posso prendere questo file APK e reverse engineering di nuovo al file Java per vedere come lo strumento incrinato il mio codice (così posso risolvere il problema)

Please help me Grazie

+0

Eventuali duplicati di [ C'è un modo per ottenere il codice sorgente da un file APK?] (Https://stackoverflow.com/questions/3593420/is-there-a-way-to-get-the-source-code-from-an- apk-file) –

risposta

1

Dopo Proguard, non c'è modo di decompilare il codice in Java leggibile.
Mentre rende il processo di reverse engineering più difficile, non è impossibile per un invertitore intelligente capire l'algoritmo nascosto.

Come per gli strumenti,
Utilizzare android-apktool per decompilare su smali ed estrarre tutte le risorse xml codificate.
Usa dex2jar di tradurre Dalvik in vaso e infine jd-gui per vedere il codice Java invertito risultante

+0

Grazie. Ho mappato i semi e from.proguard, posso usarli per deofuscularlo giusto? – Snake

+0

è lo stesso commento che "scorpiodawg" ha scritto, solo che ha dato un link a un post che ne parla. per favore leggi il post –

1

la pirateria è un grande problema, e non credo che nessuna piattaforma o sistema operativo possa essere completamente protetto da esso.

Tuttavia, Google già fatto alcuni tutorial in materia di protezione contro di esso, per esempio: http://www.google.com/events/io/2011/sessions/evading-pirates-and-stopping-vampires-using-license-verification-library-in-app-billing-and-app-engine.html

anche: http://android-developers.blogspot.co.il/2010/09/securing-android-lvl-applications.html

penso che si può anche mettere alcuni ostacoli sofisticati utilizzando C invece di Java.

Inoltre, come suggerisce Google, è consigliabile utilizzare un approccio diverso: rendere le funzionalità principali gratuite e rendere il resto acquistabile tramite fatturazione in-app. puoi anche aggiungere annunci e una funzione per rimuoverli anche con la fatturazione in-app.

+0

Grazie, lo so, ma come ho detto nel mio post voglio proteggere il mio programma con 1 clic sugli strumenti. quello che hovr è implementato dal post e vorrei che ci fossero degli esempi per rendere più facile la comprensione di – Snake

+0

bene, puoi provarlo e fare tentativi ed errori fino a trovare un modo in cui non riuscirà a far craccare la tua app. tuttavia, è solo questione di tempo prima che gli sviluppatori dell'app possano trovare il modo per superarlo. –

1

C'è un sacco di informazioni here su come andare da un file DEX torna a sorgente Java. Inoltre, hai guardato allo this blog post che affronta molti dei modi per proteggere la tua fonte?

+0

Buona risposta rapida ma preferisco vedere alcune informazioni qui – Snake

+0

Abbastanza giusto, non volevo ripetere tutto ciò che è stato catturato bene negli altri due post. – scorpiodawg

+0

Vorrei poter accettare due risposte .. +1 :) – Snake

1

Ci stavo pensando e sembra che se volessi davvero proteggere la tua applicazione dagli hacker, c'è solo un modo per farlo. Puoi implementare tutti i tipi di fantasiosi metodi per assicurare che la tua applicazione sia concessa in licenza e pagata come descritto nell'articolo di google, ma basta un bravo hacker per decompilare la tua applicazione e trovare dove è il codice, quindi commentarlo o cambiare una funzione per sempre restituire vero.

Invece, implementare una parte dell'applicazione richiesta per l'utilizzo in jni/ndk e verificare la convalida in quel codice. Non deve essere un codice estremamente complicato, ma non puoi semplicemente inserire qualcosa come una funzione (ad esempio, checkValidity) in quanto un utente può facilmente commentare la chiamata java che chiama nel ndk. Invece dovresti fare qualche chiamata al tuo ndk per fare qualcosa che non è banale per la tua applicazione, qualcosa che l'utente non può commentare o cambiare con una funzione definita che fa la stessa cosa. Dall'interno del codice ndk fai la verifica dell'integrità/della licenza dell'applicazione e se fallisce, uccidi l'applicazione o qualsiasi altra cosa tu debba fare.

Al fine di bypassare questo l'hacker avrebbe bisogno di ri-implementare il codice ndk o decodificarlo .. Che dovrebbe essere molto più complicato e non vale la pena.

Questo ovviamente non è una soluzione semplice e ancora non garantisce l'applicazione non viene mai violato, ma dovrebbe essere molto più difficile da rompere rispetto agli altri metodi ..

+0

Awsome. Grazie per la risposta. Mi è davvero piaciuto leggerlo e penso che sia un ottimo modo. Di solito i programmi con 1 clic cambiano la libreria LVL standard che proviene da google, quindi suppongo di doverlo modificare per includere JNi/NDK. Avete un esempio/collegamento a un tutorial su come implementare jni/ndk in Android? Grazie – Snake

+0

superare i programmi di 1 clic per fallire nel rimuovere LVL probabilmente non è troppo difficile se si seguono queste linee guida. Ciò che sarebbe difficile, però, è impedire a un buon hacker che comprende bene il codice di essere in grado di rimuovere a mano il codice di verifica della licenza con diverse ore di figitazione. .. Si può sempre provare e vedere se è possibile invertire il proprio codice con loro prima di rilasciare sul mercato. –

0

Personalmente ritengo che offuscamento {Proguard, Dexguard} e nativi {.so} sono piuttosto efficaci se usati correttamente.

scoraggia definitivamente 'giocatori' meno esperti e sicuramente complica la vita anche di esperti 'attori'

Non è sufficiente copiare/incollare i codici di esempio Android di Google ....

Problemi correlati