Differenza tra Art And Dalvik Security su Android?

2

Qual è la differenza tra ART e Dalvik sicurezza , perché Google utilizzando Art dopo Kitkat (4.4.2)?

Solo per queste due opzioni?

Refrence

  • Ahead-of-Time (AOT) compilation, which improves speed (particularly startup time) and reduces memory footprint (no JIT)

  • Improved Garbage Collection (GC)

e per quanto riguarda la sicurezza?

    
posta S.L. Barth 14.05.2015 - 13:36
fonte

2 risposte

2

In generale, la distinzione tra just-in-time e ahead-of-time non è rilevante per la sicurezza. Si possono vedere le cose come compromessi per le prestazioni. Per un'applicazione, che consiste in una sequenza di piccole istruzioni destinate alla macchina virtuale astratta di ordinamento Java:

  • Nella pura interpretazione, le singole istruzioni vengono analizzate quando devono essere eseguite e l'analisi di ogni istruzione viene eseguita ogni volta che viene eseguita l'istruzione.

  • Nella compilazione AOT, durante una fase preparatoria (ad es. quando l'applicazione è installata nel telefono), le istruzioni vengono tradotte negli opcode che l'effettiva CPU dell'hardware comprende. Pertanto, l '"analisi" viene eseguita una volta. Le prestazioni sono molto migliori, a scapito di una traduzione una tantum fatta durante l'installazione.

  • Nella compilazione JIT, ottieni qualcosa tra questi due modelli. La traduzione non viene eseguita in anticipo, ma viene comunque eseguita da interi blocchi (una funzione completa in una volta sola) anziché da istruzioni per istruzione. Rispetto ad AOT, si verifica più compilazione, praticamente ogni volta che l'applicazione viene avviata, invece di una volta. Su base piuttosto teorica, la compilazione JIT può ottimizzare le cose in base al modello di esecuzione effettivo e potrebbe produrre una migliore (più veloce) sequenza di codici operativi nativi rispetto a AOT; in pratica, questo effetto tende ad essere annullato dai vincoli sotto i quali deve operare la compilazione JIT (in particolare, poiché JIT si verifica quando l'applicazione è in uso e l'utente è in attesa, la compilazione JIT deve essere veloce).

In tutto quanto sopra, le proprietà di sicurezza della VM Java vengono mantenute: tutti gli accessi agli array sono ancora controllati, tutte le chiamate ai metodi vengono verificate solo sugli oggetti che offrono effettivamente i suddetti metodi.

Se vogliamo fare il nitpick, potremmo obiettare che ART riduce in qualche modo la sicurezza, non perché usi la compilazione AOT, ma perché è nuova , e il nuovo software tende ad avere più bug del vecchio software (una vasta base di utenti rappresenta un sacco di test, quindi il vecchio software è stato testato a fondo). Viceversa, potremmo fingere che la compilazione AOT sia più semplice da implementare rispetto alla compilazione JIT (perché AOT non deve occuparsi della traduzione di un'applicazione live e degli oggetti già assegnati) e quindi un'implementazione JVM basata su AOT avrebbe meno probabilità di avere bug di una JVM basata su JIT. Ma queste considerazioni sono solo speculazioni oziose sotto la consueta ipotesi che "tutte le altre cose siano uguali", ed è noto che tutte le altre cose sono mai uguali.

    
risposta data 14.05.2015 - 14:24
fonte
1

Dal manuale dell'hacker dell'applicazione mobile:

Gestione di ART

I dispositivi Android che utilizzano il nuovo Android Runtime (ART) convertono i file DEX in file OAT al momento dell'installazione. I file OAT sono essenzialmente oggetti dinamici ELF che vengono eseguiti sul dispositivo e si presume che essi debbano essere trattati come codice nativo quando li si decodifica. Uno strumento chiamato oatdump esegue una simile funzione di disassemblaggio per i file OAT come fa dexdump per i file DEX. Esplora le opzioni fornite da questo strumento se sei interessato a smontare un file OAT. Tuttavia, analogamente a dexdump, l'output viene fornito in maniera abbastanza approssimativa.

Un semplice fatto che può essere utilizzato è che il file APK di ogni applicazione installata è ancora memorizzato sul dispositivo. Ciò significa che il file DEX dell'applicazione di destinazione è ancora accessibile nel modo normale anche quando il file OAT convertito viene utilizzato sul dispositivo. Un altro dettaglio interessante è che ogni file OAT contiene i file DEX originali incorporati al suo interno. Pau Oliva ha creato uno script chiamato oat2dex che può estrarre i file DEX da un determinato file OAT. Questo script si basa su radare2 (vedi link ) e può essere trovato su collegamento . Questo può essere usato se l'APK originale che contiene il DEX non è più disponibile.

    
risposta data 14.05.2015 - 15:00
fonte

Leggi altre domande sui tag