A crowd-sourcing and heuristic approach to proguard rule generation for third party libraries and key source-code conflicts
Tesis
Access note
Acceso abierto
Publication date
2021Metadata
Show full item record
Cómo citar
Bergel, Alexandre Henri
Cómo citar
A crowd-sourcing and heuristic approach to proguard rule generation for third party libraries and key source-code conflicts
Author
Professor Advisor
Abstract
Dado que las aplicaciones móviles han adquirido protagonismo en rubro de la ingeniería de software, siendo estas uno de los tipos de software más utilizados en todo el mundo, se han creado diversas herramientas para facilitar su desarrollo. Los ofuscadores son una de estas, dedicadas a la optimización, reducción y ofuscación del código de las aplicaciones. Estos ofrecen claros beneficios al minimizar el tamaño de los archivos de las aplicaciones, haciéndolas más rápidas y reduciendo la legibilidad del código para proteger la propiedad intelectual.
A pesar de estas ventajas, la mayoría de las aplicaciones no utilizan ofuscadores. Esto es especialmente desconcertante en el ecosistema de Android, donde ofuscadores como ProGuard vienen incorporados y listos para su uso. Esta reticencia puede deberse a la dificultad que presenta implementar ofuscadores y mantener su código usable. Específicamente, la identificación de los conflictos entre la ofuscación y la funcionalidad del código, y la redacción de reglas de configuración para resolverlos. Estas dificultades incrementan cuando se trata de bibliotecas de terceros, ya que los desarrolladores tienen que lidiar con los conflictos provocados por código ajeno. La detección de los conflictos y la redacción de las reglas para abordarlos puede ser un proceso exhaustivo. Requiere que los desarrolladores tengan familiaridad con el código y con la sintaxis de las reglas para poder implementar ProGuard eficientemente. Esto podría disuadir a los desarrolladores de habilitar esta herramienta.
Se proponen dos soluciones para generar reglas de ProGuard para una aplicación de forma automática, eliminando los obstáculos que impiden a los usuarios habilitar ProGuard. La primera es un enfoque de crowdsourcing que pretende generar reglas para las dependencias de las aplicaciones. Nuestra solución estudia el código fuente de un número considerable de aplicaciones de código abierto. Nuestro enfoque limita los esfuerzos de los desarrolladores en la implementación de la ofuscación al código con el que están familiarizados. Lo hace detectando las dependencias de una aplicación, consultando la sabiduría de la multitud para conocer las reglas utilizadas en otras aplicaciones con las mismas dependencias y aplicando heurísticas para elegir las reglas pertinentes para la aplicación. La segunda solución pretende detectar algunas de las prácticas clave, que poseen conflictos reflexivos con ProGuard, dentro del código fuente de una aplicación y redactar reglas específicas para abordarlas.
Por último, observamos que la solución de reglas de dependencia es bastante precisa a la hora de decidir qué reglas debe incluir para las dependencias de una aplicación. Genera correctamente el 80\% de estas reglas con un recall de 0,89. Por otro lado, lo hace arrastrando reglas que no son relevantes para la aplicación y, aunque no generen ningún error, desordenan los resultados y confunden al usuario. La segunda solución no tiene tanto éxito, ya que la detección de conflictos resulto ser un gran desafío. Aun así, la primera solución es de gran ayuda para poder habilitar ProGuard, ya que las reglas para dependencias representan la mayoría de las reglas necesitadas por aplicaciones
xmlui.dri2xhtml.METS-1.0.item-notadetesis.item
Memoria para optar al título de Ingeniero Civil en Computación
Identifier
URI: https://repositorio.uchile.cl/handle/2250/183033
Collections
The following license files are associated with this item: