M.C. Juan Carlos Olivares Rojas

Slides:



Advertisements
Presentaciones similares
Introducción a la programación
Advertisements

Unidad I - Programación. Como están escritos los programamas de computadoras.
5. Técnicas de Simulación 1. Conceptos
Tecnologías para desarrollo de aplicaciones web. Un caso de uso
Ing. Esp. Ricardo Cujar. El computador: es una máquina que permite hacer tareas aritmético y lógicas de una manera fácil, consta de software y hardware.
INSTITUTO TECNOLOGICO DE MINATITLAN
Introducción a la Programación
GENERACIONES DE LENGUAJES DE PROGRAMACIÓN
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
METODOLOGIA DE LA PROGRAMACION
TÉCNICO EN PROGRAMACIÓN DE SOFTWARE Instructor: Ingeniero Adrián Guerrero Taborda
Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.
Reingeniería del Software
TRADUCTOR DE UN PROGRAMA
Proceso de información en la computadora
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
Ingeniería de Software Orientado a Objetos
 Fue en el año 1945 cuando el matemático Jhon Von Neumann, fascinado por las posibilidades del ENIAC, demostró que una computadora podía tener una estructura.
Técnicas para la obtención de requerimientos
Un programa no es nada mas que una serie de instrucciones dadas al ordenador en un lenguaje entendido por el, para decirle exactamente lo que queremos.
04/02/031 INSURE ++ v6.0 Salvador Benimeli Fenollar Laboratorio de Sistemas de Información Facultad de Informática Universidad Politécnica de Valencia.
El Ciclo de Vida de los Sistemas
LENGUAJE DE PROGRAMACIÓN
M.C. Juan Carlos Olivares Rojas
Procesadores de Lenguajes
Software Testing Juan Carlos Olivares Rojas MSN:
M.C. Juan Carlos Olivares Rojas
Unidad III Manejo de Excepciones en Java y C++
Metodología para solución de problemas
1 Aplicaciones Mecatrónicas distribuidas M.C. Juan Carlos Olivares Rojas.
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
1 Unidad III Diseño y Programación de Interfaces HMI M.C. Juan Carlos Olivares Rojas.
Diseño de Software y su Proceso
COMPUTO III Ing. Jimmy Ojeda Arnica.
Representación de Algoritmos
LENGUAJES DE PROGRAMACION
Algorit moAlgorit mo An á lisisAn á lisis Argumen toArgumen to Asignación Asociación Cometar ioCometar io Compilación Constan teConstan te Definición.
Programación Procedural y Recursiva en C++
Lenguajes de Programación
Unidad I Java y C++ : Similitudes y diferencias
Unidad II Aplicaciones con Arreglos en Java y C++
Ing. Yasser Espinoza Ubau.. Un análisis comparativo de analogías y diferencias entre las dos "especies", muestra que las similitudes entre ambos son poco.
COMPUTO III Ing. Jimmy Ojeda Arnica. METODOLOGIA DEL CURSO Objetivos del curso : Comprender el entorno de los lenguajes visuales. Comprender el entorno.
Metodología de la programación
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
1 Unidad I Panorama general de lenguajes de programación en aplicaciones mecatrónicas M.C. Juan Carlos Olivares Rojas.
Alexander Aristizabal Ángelo flores herrera
Prof. Flor Narciso Departamento de Computación
Reuso y Reingeniería M.C. Juan Carlos Olivares Rojas.
1 Construcción de Proyectos de Software Proyecto de Solución de Problemas con Programación.
FUENTES DE SOFTWARE ► ELABORACIÓN PROPIA ► PAQUETES COMPRADOS ► ELABORACIÓN POR CONTRATO.
Diseño Orientado al Flujo de Datos
Diagrama de Flujo Diagrama de flujo sencillo con los pasos a seguir si una lámpara no funciona. El diagrama de flujo o diagrama de actividades es la representación.
Titular: Ing. Miguel Ángel Espericueta Alumnos:
Tipos de Lenguajes Ensamblador.
G ESTIÓN DE LA C ONFIGURACIÓN DEL S OFTWARE G ESTIÓN DE LA C ONFIGURACIÓN DEL S OFTWARE Daniel Eduardo Almeciga Angie Katterine Cruz O. Diego Fernando.
TECNICAS DE MATRIZ DE VARIABLES
UNIDAD 2: “Características del Modelado UML” CONTENDIDO Elaborado por: Ingeniero Harold Cabrera Meza Actualizado por: Ingeniero Nilson Albeiro Ferreira.
Tecnicas del Mantenimiento del Software
INTRODUCCIÓN A INGENIERIA KARLA TATIANA OLAYA TORRES ID ( )
INTRODUCCIÓN A LA INGENIERIA DE SOFTWARE ALUMNO MILLER ANDRES GALINDO DUCUARA (412088)
 Panorama General Fundamentos de Programación M.I. Jaime Alfonso Reyes Cortés.
Especificación del Problema Partimos del hecho de un programador no puede resolver un problema que no entiende. Por esta razón, la primera etapa en todo.
Fundamentos de Programación Unidad I Conceptos Básicos.
Aplicación Móvil - Eclipse SDK. Primero debemos comprobar si disponemos en nuestro ordenador del JDK, es decir, el software necesario para escribir código.
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 3 – Diseño de Programas.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
PROGRAMACION ORIENTADA A OBJETOS
Transcripción de la presentación:

M.C. Juan Carlos Olivares Rojas Ofuscación M.C. Juan Carlos Olivares Rojas

Ofuscación La ofuscación es una técnica avanzada de refactorización que permite a un código mantenerle obscuro (es decir no muy legible) con diversos propósitos de optimización. ¿Para que se hace ofuscación? ¿No viola esto el principio de claridad en la implantación?

Ofuscación La ofuscación se realiza en muchas casos para hacer un código ilegible, también en muchos casos se puede reducir el tamaño del código fuente y del código binario realizado. Al realizar cualquier tipo de programa se puede aplicar técnicas de reingeniería como la ingeniería inversa para de un código binario tratar de obtener su código fuente.

Ofuscación En mucho tipos de aplicaciones como las aplicaciones móviles se ofusca el código objeto generado para obtener un código más pequeño. Un programa puede ser fácilmente decompilable, por este motivo se ofusca con la premisa de que si esto llegará ocurrir, el que lo hiciera le costaría mucho trabajo entender el programa y modificarlo.

Ofuscación En el caso de programas ejecutables (.exe) es mucho más difícil obtener un código en lenguaje de alto nivel, dado que el proceso de decompilación deja sus resultados en ensamblador y por lo tanto es necesario saber como el compilador ensambla cada línea de código. Por este motivo muchas empresas grandes del sector informático realizan sus proyectos en sus propios compiladores.

Ofuscación Actualmente la ofuscación se emplea más en la ofuscación de código dinámico, dado que aquí es muy importante tanto el tamaño del código como la legibilidad de este, tal es el caso de HTML. La ofuscación si bien es cierto viola principios de buena prácticas de Ing. de Software, se realiza con un propósito específico hasta el final del proceso.

Ofuscación En algunos casos la ofuscación se logra simplemente refactorizando el nombre de las variables pero en muchos casos esto no sirve. Para lograr la ofuscación se deberá modificar el flujo del programa de tal forma que menos instrucciones o en algunos casos más instrucciones deben de realizar el mismo programa.

Ofuscación En algunos casos resulta que ofuscar el código puede ser que el tamaño del código fuente y del programa aumente, debido a que es común que las variables tengan nombres muy grandes o bien se incluyan instrucciones extras, se descompongan ciclos, se cambien y mapeen estructuras, etc. Existen concursos de ofuscación de código

Ofuscación

Actividad De un programa en Java o C/C++ realizar ofuscación al código de manera manual de tal forma que tengan dos versiones del código: Una versión de programa optimizada que ocupa menos tamaño su código fuente. Una versión del programa cuyo código es no legible (mayor su tamaño fuente).

Actividad Se deberá calcular el % de disminución y de aumento del tamaño del código fuente y objeto. Una vez creados las nuevas modificaciones, se distribuirán los códigos de otros compañeros para que intenten deducir que realiza el programa.

Actividad Se deberá tomar el tiempo que tardarán en realizar la clarificación del programa. Se deberá entregar el código en claro y una explicación en notación de diseño (cualquiera que gusten) de lo que el programa realiza. Posteriormente se realizará la comprobación del diseño de sus otros compañeros. (Estas actividades son en otra sesión de clases)

¿Preguntas, dudas y comentarios?