Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: vvictoristudio en 28 Abril 2011, 01:24 am



Título: Como determinar cuando ha sido modificada la AddressOfEntryPoint de un PE
Publicado por: vvictoristudio en 28 Abril 2011, 01:24 am
Pues eso mismo como puedo determinar cuando una archivo PE le ha sido modificada su AddressOfEntryPoint

Les agradeceria cualquier ayuda de antemano


Título: Re: Como determinar cuando ha sido modificada la AddressOfEntryPoint de un PE
Publicado por: ~ en 28 Abril 2011, 01:47 am
No se me ocurre una forma predefinida de hacer eso porque ese es un campo simple que puede apuntar a cualquier parte dentro de la imágen del ejecutable.

La forma más fácil que se me ocurre es saber de antemano la dirección a la que debe apuntar ese campo, el checksum del programa en cuestión, su tamaño original y conocer las instrucciones que deberían estar en el punto de entrada al que apunta el AddressOfEntryPoint, además de algún tipo de mapa de secuencia de instrucciones que permita determinar si la estructura de una versión de un ejecutable está alterada.

El AddressOfEntryPoint no necesariamente tiene que apuntar al inicio de la sección de código sino que puede llevar a cualquier lugar dentro de esta, y es algo perfectamente normal y común.


Título: Re: Como determinar cuando ha sido modificada la AddressOfEntryPoint de un PE
Publicado por: Karcrack en 28 Abril 2011, 15:26 pm
Si el cambio esta bien hecho nunca podrás saber si se cambio... En caso de estar mal cambiada si que podrás ver que el checksum que hay en la cabecera no esta bien..
Código:
http://advancevb.com.ar/?p=50


Título: Re: Como determinar cuando ha sido modificada la AddressOfEntryPoint de un PE
Publicado por: ~ en 29 Abril 2011, 01:49 am
Muchos programas (la mayoría) tienen un valor de 0 en el checksum de la cabecera PE. Solo a los drivers, DLLs y ejecutables de sistema se les requiere tener un checksum válido.

Por eso depender de este campo no es bueno para determinar un cambio en el ejecutable. Sería mejor calcular desde el principio un checksum global con MD5 o SHA-1 a todo el archivo .EXE, y guardarlo como clave en un lugar seguro, no en el .EXE, para volver a comparar cuando se necesite.


Título: Re: Como determinar cuando ha sido modificada la AddressOfEntryPoint de un PE
Publicado por: Karcrack en 29 Abril 2011, 10:40 am
En ese caso tendras que haber tenido el ejecutable con anterioridad. Entonces seria mejor guardar el EP orginal. Aunque no es requerido el checksum muchos compiladores lo añaden de forma automatizada.