Show simple item record

Professor Advisordc.contributor.advisorBergel, Alexandre Henri
Professor Advisordc.contributor.advisorHetch, Geoffrey
Authordc.contributor.authorSuazo Sarrocchi, Juan Pablo
Associate professordc.contributor.otherHevia Angulo, Alejandro
Associate professordc.contributor.otherGonzález Jure, Pablo Antonio
Admission datedc.date.accessioned2021-12-02T19:43:25Z
Available datedc.date.available2021-12-02T19:43:25Z
Publication datedc.date.issued2021
Identifierdc.identifier.urihttps://repositorio.uchile.cl/handle/2250/183033
Abstractdc.description.abstractDado 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 aplicacioneses_ES
Lenguagedc.language.isoenes_ES
Publisherdc.publisherUniversidad de Chilees_ES
Type of licensedc.rightsAttribution-NonCommercial-NoDerivs 3.0 United States*
Link to Licensedc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/3.0/us/*
Keywordsdc.subjectAplicaciones móviles
Keywordsdc.subjectIngeniería de software
Keywordsdc.subjectSistemas de seguridad
Keywordsdc.subjectOfuscadores
Keywordsdc.subjectProGuard
Títulodc.titleA crowd-sourcing and heuristic approach to proguard rule generation for third party libraries and key source-code conflictses_ES
Document typedc.typeTesises_ES
dc.description.versiondc.description.versionVersión original del autores_ES
dcterms.accessRightsdcterms.accessRightsAcceso abiertoes_ES
Catalogueruchile.catalogadorgmmes_ES
Departmentuchile.departamentoDepartamento de Ciencias de la Computaciónes_ES
Facultyuchile.facultadFacultad de Ciencias Físicas y Matemáticases_ES
uchile.gradoacademicouchile.gradoacademicoLicenciadoes_ES
uchile.notadetesisuchile.notadetesisMemoria para optar al título de Ingeniero Civil en Computaciónes_ES


Files in this item

Icon
Icon

This item appears in the following Collection(s)

Show simple item record

Attribution-NonCommercial-NoDerivs 3.0 United States
Except where otherwise noted, this item's license is described as Attribution-NonCommercial-NoDerivs 3.0 United States