Análisis de malware

Conceptos básicos de depuración

5 de febrero de por Dan Virgillito

Introducción

El camino hacia el dominio de la codificación vendrá con algunos obstáculos en el camino. Algunos se pueden resolver fácilmente mirando más de cerca el código. Otros, sin embargo, le dan al codificador de aprendizaje la sensación de que ha elegido la carrera o el pasatiempo equivocado.

Cuando aparecen errores, el siguiente paso es descubrir por qué. Y aunque puede resultar tentador buscar ayuda, es mucho mejor y más fácil realizar la depuración.

¿Qué es la depuración?

La depuración es un método que se utiliza para cambiar parte de un código escrito previamente con el fin de eliminar errores que no se detectaron en el momento de la verificación de sintaxis. Permite a los desarrolladores y autores ver la ejecución de cada línea del código y detenerse en cualquiera de las líneas para analizar la entrada, las variables y los valores que esas variables llevaban en el momento en que finalizó la ejecución.

El código generalmente se ejecuta en una herramienta de depuración (también conocida como depurador) como Visual Studio para encontrar la línea exacta donde el autor cometió un error de programación. Se determinan las correcciones necesarias y luego se eliminan los errores del código. Los depuradores suelen ofrecer a los usuarios la opción de realizar modificaciones temporales para que puedan seguir utilizando el programa.

Realizar una depuración eficaz requiere paciencia y aprendizaje, pero en última instancia es una tarea fundamental para todo aspirante a codificador. A continuación se muestra un desglose de los fundamentos básicos de la depuración, además de algunos consejos para ayudar al codificador a comenzar.

Los principios básicos de la depuración.

Análisis dinámico

Los depuradores son herramientas de análisis dinámico. A diferencia de los desensambladores, que ofrecen una instantánea estática y única del código ensamblador de un ejecutable, los depuradores en realidad permiten que el ejecutable se ejecute. Esto ayuda al autor a ver cómo cambia el sistema (por ejemplo, la pila, la memoria) a medida que se ejecuta el programa. Existe una variedad de herramientas de depuración y todas cuentan con características sutilmente diferentes.

Ejecución

Tome una de las siguientes rutas para depurar un programa:

– Inicie el programa dentro del depurador.

– Adjuntar un depurador a un programa que ya se está ejecutando

Elegir la primera opción significa que el programa se cargará en la memoria pero no se ejecutarán instrucciones. La segunda opción, por otro lado, es una forma ideal de depurar un proceso que puede estar infectado por malware.

paso a paso

Una vez que el programa se esté ejecutando dentro de la herramienta de depuración, siga las instrucciones de ensamblaje. La forma más sencilla de hacerlo es recorrer el programa paso a paso. Dé una instrucción a la vez y luego devuelva el control al software de depuración.

Es posible que fragmentos específicos de código no sean adecuados para programas grandes y complejos, ya que pueden llevar mucho tiempo.

Puntos de interrupción y excepciones

Los depuradores también permiten puntos de interrupción en instrucciones específicas, lo que ayuda a ejecutar programas sin tener que recorrer un solo paso el código. (El programa se detiene en el punto de interrupción). Este proceso es mucho más rápido que recorrer miles o millones de instrucciones de código ensamblador. Deténgase en partes interesantes del programa para congelar la memoria y los registros en ese punto.

Otra característica interesante del uso de un depurador para rastrear un programa es cómo se manejan las excepciones. Si surge alguna excepción, la herramienta de excepciones del depurador muestra la ruta exacta donde ocurrió y ofrece otra información útil. Normalmente, en el análisis de malware, se pasan por alto las excepciones de primera oportunidad en el depurador. Esto devuelve las excepciones al programa, pero si el programa no puede manejarlas, se devuelven al depurador.

Modificando la ejecución

Además de permitir al codificador configurar puntos de interrupción, los depuradores les permiten modificar la ejecución de un programa mientras se ejecuta cambiando direcciones de memoria y registros. Si es necesario un descanso en las instrucciones que se están modificando, modifique las variables en consecuencia.

Para ilustrar la modificación de la ejecución, imaginemos intentar eludir la protección de la propiedad intelectual. El programa verificará un solo byte para identificar si el programa está registrado o no, donde 1 significa registrado y 0 significa no registrado. Rompa la instrucción que verifica el byte a 1 y continúe.

Depuración de errores en tiempo de ejecución

Esta es la forma más sencilla de depuración y no requiere que el autor dedique mucho tiempo a buscar errores. Básicamente, el marco envía una excepción para identificar que el programa solicita resolver un problema particular en una ubicación particular. Esto facilita agregar un parche que resuelva el problema.

Depuración de errores lógicos

La depuración de errores lógicos requiere más tiempo porque no se pueden descubrir fácilmente. Es fundamental revisar cada declaración y analizar dónde salieron mal las cosas. En lenguaje sencillo, solo se pueden eliminar si se comprende completamente el algoritmo y cómo debe componerse en un lenguaje particular (como el código C#).

Conclusión

Los depuradores no son mágicos y encontrar errores no es tan fácil como patear piedras. Los desarrolladores y analistas de software deben tener una comprensión profunda del proceso y un conocimiento completo sobre cómo manipular y ajustar el proceso de depuración para obtener el resultado deseado.

Aprender a depurar de manera efectiva lleva tiempo, pero el primer paso es hacer las preguntas correctas, seguido de examinar las suposiciones que el codificador aporta a la depuración.

Fuentes

Explicación de la depuración en un solo paso , Blog de computadora de Neil

Punto de interrupción , Techinfo

Errores y depuración básica de programas , icarus.cs.weber.edu

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *