¿Diferencia entre Art And Dalvik Security en Android?

2

¿Cuál es la diferencia entre ART y Dalvik security , causa Google ¿usando Art después de Kitkat (4.4.2)?

¿Solo para estas dos opciones?

Refrence

  
  • Compilación de anticipación del tiempo (AOT), que mejora la velocidad (particularmente   tiempo de inicio) y reduce la huella de memoria (sin JIT)

  •   
  • Recolección de basura mejorada (GC)

  •   

y ¿qué pasa con la seguridad?

    
pregunta S.L. Barth 14.05.2015 - 13:36
fuente

2 respuestas

2

En general, la distinción entre just-in-time y ahead-of-time no es relevante para la seguridad. Uno puede ver las cosas como compensaciones de rendimiento. Para una aplicación, que consiste en una secuencia de pequeñas instrucciones destinadas a la máquina virtual abstracta de Java:

  • En interpretación pura, las instrucciones individuales se analizan cuando deben ejecutarse, y el análisis de cualquier instrucción se realiza cada vez que se ejecuta esa instrucción.

  • En la compilación AOT, durante una fase preparatoria (por ejemplo, cuando la aplicación está instalada en el teléfono), las instrucciones se traducen a los códigos de operación que la CPU del hardware real entiende. Por lo tanto, el "análisis" se realiza una vez. El rendimiento es mucho mejor, a expensas de una traducción única realizada durante la instalación.

  • En la compilación JIT, obtienes algo entre estos dos modelos. La traducción no se realiza de antemano, pero aún así se realiza mediante fragmentos completos (una función completa de una sola vez) en lugar de instrucciones por instrucción. En comparación con AOT, se produce más compilación, básicamente cada vez que se lanza la aplicación, en lugar de una sola vez. Sobre una base más bien teórica, la compilación JIT puede optimizar las cosas según el patrón de ejecución real y podría producir una secuencia mejor (más rápida) de códigos de operación nativos que AOT; en la práctica, este efecto tiende a ser anulado por las restricciones bajo las cuales debe operar la compilación JIT (en particular, dado que JIT ocurre cuando la aplicación se está utilizando y el usuario está esperando, la compilación JIT debe ser rápida).

En todo lo anterior, las propiedades de seguridad de la VM de Java se mantienen: todos los accesos a los arreglos aún están verificados, se verifica que todas las llamadas a métodos ocurren solo en objetos que efectivamente ofrecen dichos métodos.

Si queremos realizar un primer paso, entonces podríamos argumentar que ART reduce algo la seguridad, no porque use la compilación AOT, sino porque es nuevo , y el nuevo software tiende a tener más errores que el software antiguo (Una gran base de usuarios representa una gran cantidad de pruebas, por lo que el software antiguo se ha probado exhaustivamente de forma natural). A la inversa, podríamos fingir que la compilación AOT es más sencilla de implementar que la compilación JIT (porque AOT no tiene que lidiar con la traducción de una aplicación en vivo y objetos ya asignados) y, por lo tanto, una implementación JVM basada en AOT tendría menos probabilidades de tener errores que una JVM basado en JIT. Pero estas consideraciones son solo una especulación ociosa bajo el supuesto habitual de que "todas las demás cosas son iguales", y se sabe que todas las demás cosas son nunca iguales.

    
respondido por el Tom Leek 14.05.2015 - 14:24
fuente
1

Del Manual del pirata informático de aplicaciones móviles:

Tratar con ART

Los dispositivos Android que utilizan el nuevo Android Runtime (ART) convierten los archivos DEX en archivos OAT en el momento de la instalación. Los archivos OAT son esencialmente objetos dinámicos ELF que se ejecutan en el dispositivo y uno supondría que tendrían que ser tratados como código nativo cuando se los realiza ingeniería inversa. Una herramienta llamada oatdump realiza una función de desensamblaje similar para los archivos OAT como lo hace dexdump para los archivos DEX. Explore las opciones proporcionadas por esta herramienta si está interesado en desensamblar un archivo OAT. Sin embargo, de manera similar a Dexdump, la salida se proporciona de manera bastante simple.

Un hecho simple que se puede usar es que el archivo APK de cada aplicación instalada todavía se almacena en el dispositivo. Esto significa que el archivo DEX de su aplicación de destino aún es accesible de manera normal, incluso cuando el archivo OAT convertido se está utilizando en el dispositivo. Otro detalle interesante es que cada archivo OAT contiene los archivos DEX originales incrustados en él. Pau Oliva creó un script llamado oat2dex que puede extraer los archivos DEX desde un archivo OAT determinado. Este script se basa en radare2 (consulte enlace ) y se puede encontrar en enlace . Se puede usar si el APK original que contiene el DEX ya no está disponible.

    
respondido por el atdre 14.05.2015 - 15:00
fuente

Lea otras preguntas en las etiquetas