Como determinar cuando ha sido modificada la AddressOfEntryPoint de un PE

Iniciado por vvictoristudio, 28 Abril 2011, 01:24 AM

0 Miembros y 2 Visitantes están viendo este tema.

vvictoristudio

Pues eso mismo como puedo determinar cuando una archivo PE le ha sido modificada su AddressOfEntryPoint

Les agradeceria cualquier ayuda de antemano

~

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.
Sitio web (si la siguiente imagen no aparece es porque está offline):

Karcrack

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..
http://advancevb.com.ar/?p=50

~

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.
Sitio web (si la siguiente imagen no aparece es porque está offline):

Karcrack

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.