2012-11-06 12 views
17

Voglio controllare come funziona DexGuard ma sembra che non abbia una versione di prova gratuita.In che modo DexGuard crittografa le classi?

DexGuard può crittografare un'applicazione Android? O semplicemente offusca il codice? Come funziona la crittografia DexGuard? Se potessi fornire codice da un'applicazione di esempio eseguita con DexGuard prima e dopo la decompilazione, sarebbe fantastico.

risposta

50

ProGuard fornisce il nome di offuscamento: può sostituire i nomi originali di classi, metodi e campi con nomi brevi e privi di significato. DexGuard fornisce inoltre la crittografia delle stringhe e la crittografia delle classi. Il termine crittografia può essere fonte di confusione in questo contesto, dal momento che questi sono tipi di offuscamento sostanzialmente più aggressivi. Stringhe e classi designate sono memorizzate in una forma crittografata volutamente complessa e decodificate in fase di runtime con chiavi e algoritmi necessariamente disponibili per l'applicazione. In un certo senso, il mercato di Google Play può crittografare intere applicazioni per Android 4.1. L'ambiente runtime quindi decrittografa l'applicazione prima che venga eseguita, in modo controllato.

(Io sono l'autore di ProGuard e DexGuard - sentitevi liberi di entrare in contatto, se siete interessati)

+0

Ciao! Grazie per la tua risposta! Sì, mi sono confuso con la definizione di crittografia in DexGuard. Fondamentalmente, la mia comprensione è che la crittografia trasforma i dati con l'uso di una chiave segreta. Tuttavia, se un'applicazione Android è crittografata, Dalvik non sarà in grado di comprendere l'applicazione crittografata poiché Dalvik non contiene un decryptor per l'applicazione. A meno che, naturalmente, non sia presente un decryptor all'interno dell'applicazione insieme alla chiave. In questo modo, la classe verrà decodificata dall'applicazione stessa prima di essere eseguita da Dalvik. È così che funziona DexGuard? – Arci

+0

Posso utilizzare DexGuard insieme all'encyption di Google Play per Android 4.1? Inoltre, si consiglia di utilizzare DexGuard insieme a Proguard? Ho notato sulla pagina di Proguard che DexGuard non ha classi di preverifica. Come posso anticipare le classi se userò DexGuard? Grazie! : D – Arci

+2

corretto. Sì, dall'esterno, un'applicazione elaborata sembra ancora come qualsiasi altra applicazione; Google Play può ancora crittografarlo. No, non è necessario combinare ProGuard e DexGuard, poiché DexGuard fornisce già la funzionalità di ProGuard. La pre-verifica è richiesta solo per Java Micro Edition e Java 6, non per Android. –

1

Anche se usano la cifratura termine, sembra che in realtà è l'offuscamento. Dico questo semplicemente perché sebbene possano crittografare determinate stringhe/valori ... il fatto che la chiave di crittografia debba anche essere memorizzata nell'app significa che stanno fornendo un "blocco" per il codice mentre allo stesso tempo impacchettano la "chiave" " con esso.

+3

Eric lo dice esattamente nella sua risposta sopra ... – Dori

2

DexGuard nella vecchia versione che utilizza "DES" Alg per crittografare la classe specificata. Successivamente cambia "ALE" alg. Dopo la crittografia Classe specificata, memorizza i dati di crittografia in un'altra classe tramite il formato matrice di dati con il metodo di decrittografia. Il metodo di decrittografia che è un blocco statico in Dex è il metodo di formato clinit che è offuscato utilizzando l'oscuramento del flusso di controllo e l'occultamento dell'API. Quindi è un po 'per deoffuscare il metodo di decodifica. In altre classi, fare riferimento alla modifica della classe specificata all'opcode di riflessione. Ogni volta che viene eseguito l'APK, la classe crittografata verrà prima decrittografata nel metodo statico. E le classi decrittografate verranno caricate nella memoria dvm usando l'API di reflection. quindi l'altra classe può fare riferimento correttamente alla classe specificata. Questo è tutto. A mio parere, DexGuard è uno strumento di offuscamento molto potente. Se all'APK si applicano tutte le offuscazioni delle funzioni, ti costerà molto tempo per invertire l'intero programma reale.

Problemi correlati