martes, 21 de febrero de 2012

Introducción a la ingeniería inversa x86 (Parte IV)

Tras aprender que es y de que está compuesto el registro de estado y ver algunas operaciones matemáticas, hoy continuaremos con alguno de los códigos que habitualmente nos encontraremos al realizar ingeniería inversa sobre un binario.

Vamos a analizar el siguiente código:

image

Si os fijáis este caso es similar al código que analizamos en la segunda entrega de la serie, una de las diferencias claves en este código es la nueva instrucción JG (Jump if Greater) que podemos ver en la dirección 0x004013EA. Como se ha podido observar se trata de una instrucción de salto que se efectuará en el caso que la comparación anterior sea mayor al valor indicado.

Debido a que nos encontraremos una gran cantidad de instrucciones de salto cuando se está realizando ingeniería inversa sobre un binario vamos a recordar algunas de ellas y como funcionan.

image

Como habréis podido observar los saltos no tienen ningún misterio ya que únicamente es necesario acordarse de su función su correspondiente valor en el registro de estado. Por lo que, cuando se cumpla la condición de los flags se realizara el salto a la dirección indicada en la instrucción.

Operaciones Lógicas

Ya que vimos en el anterior post como realizar cálculos matemáticos mediante las instrucciones SUB, IMUL y DIV, hoy veremos como se realizan cálculos lógicos a nivel de bit a través de las instrucciones AND, NOT, OR y XOR.

(AND dst, src) Devuelve un valor verdadero, siempre que los valores dst y src sean verdaderos.

image

(NOT dst) Niega el valor dst, y lo almacena en el mismo operador.

image

(OR dst, src) Devuelve un valor verdadero siempre que dst o src sean verdaderos.

image

(XOR dst, src) Devuelve un valor verdadero si únicamente uno de los valores src o dst es verdadero.

image

Y os preguntaréis, ¿Y todo esto para que nos sirve? Lo veremos de una forma práctica pronto en la última publicación de la serie de introducción a la ingeniería inversa en la arquitectura x86.

Un Saludo!!

1 comentario:

  1. gran entrada

    no obstante te dejo este link de interés

    www.tinyurl.com/mishogos

    ResponderEliminar