Descripción del proyecto
LA AUTO-MODIFICACION ES LA CAPACIDAD DE QUE UN CODIGO MODIFIQUE SU PROPIA ESTRUCTURA EN TIEMPO DE EJECUCION, ESTO NO SOLO ES POSIBLE EN EJECUTABLES BINARIOS DE BAJO NIVEL (POR EJEMPLO, CODIGO X86), SINO TAMBIEN EN LENGUAJES DE PROGRAMACION DINAMICA COMUNES (COMO LA MAYOR PARTE DE LOS LENGUAJES DE SCRIPTING), Y SE UTILIZA HABITUALMENTE EN OPTIMIZACIONES AVANZADAS (POR EJEMPLO, EN LAS COMPILACIONES JIT), EL PROBLEMA RESIDE EN QUE LA INCLUSION DE SEMANTICAS QUE EVITEN LA AUTO-MODIFICACION DE PROGRAMAS (POR EJEMPLO, PARA EXPLOTAR DIVERSIFICACION DEL CODIGO PARA CAMUFLAJE EN ATAQUES DE MALWARE, O PARA MEJORAR LOS MECANISMOS DE PROTECCION O SU RENDIMIENTO), HACE QUE EL USO DE LOS MODELOS ESTANDAR Y LAS HERRAMIENTAS PARA EL ANALISIS DE PROGRAMAS ESTATICOS Y DINAMICOS SEA EXTREMADAMENTE DIFICIL, Y HARIA QUE FUERA ALTAMENTE VULNERABLE A FALSOS POSITIVOS, ESTO SE DEBE A QUE LOS METODOS ESTANDARES DE ANALISIS DE PROGRAMAS ASUMEN QUE EL PROGRAMA ES UNA ENTIDAD ESTATICA, YA SEA COMO UN FLUJO DE CONTROL O EN EL CODIGO FUENTE,EL PROPOSITO DE ESTA PROPUESTA ES EL DESARROLLO DE NUEVOS MODELOS Y HERRAMIENTAS QUE PERMITAN UN ANALISIS ESTATICO, FIABLE Y PRECISO, DE CODIGO DINAMICO AUTO-MODIFICABLE, LA IDEA CONSISTE EN CONSIDERAR EL CODIGO COMO UNA ESTRUCTURA DE DATOS PARTICULAR, QUE PUEDE MODIFICARSE Y, POR LO TANTO, ANALIZARSE ESTATICAMENTE POR INTERPRETES ABSTRACTOS ADECUADOS, TAL Y COMO HACEMOS TIPICAMENTE CON OTRAS ESTRUCTURAS DE COMPUTACION, SE DESARROLLARAN MODELOS SEMANTICOS E INTERPRETES ABSTRACTOS QUE APROXIMEN EL COMPORTAMIENTO DE LAS ESTRUCTURAS DE CODIGO DE MANERA QUE ESTAS MODIFICACIONES PUEDAN SER CONSIDERADAS EN EL ANALISIS ESTANDAR DEL PROGRAMA, O EN LA FASE DE VERIFICACION, EL MAYOR LOGRO DEL PROYECTO SERA LA CREACION DE NUEVOS METODOS Y HERRAMIENTAS PARA EL ANALISIS ESTATICO DE PROPIEDADES DE SEGURIDAD, INCLUYENDO LA REFLEXION Y LAS CAPACIDADES PARA LA AUTO-MODIFICACION, CIENCIAS DE LA COMPUTACIÓN TEÓRICAS\MÉTODOS FORMALES\COMPUTACIÓN CUÁNTICA