Programar un Desensamblador

Iniciado por SubAtomicParticula, 17 Septiembre 2016, 10:18 AM

0 Miembros y 1 Visitante están viendo este tema.

SubAtomicParticula

Saludos, estoy trabajando en un Desensamblador en C++, la cuestión es que comienzo a desensamblar el código desde el Entrypoint y voy decodificando instrucciones, cuando encuentro un CALL salto a la dirección y cuando llega el RET vuelvo al lugar donde se llamaba al CALL.

Cuando no encuentro más código nuevo comienzo a analizar los saltos condicionales JXX hasta recorrer todo el código binario. Pero pronto me dí cuenta que esta forma de desensamblar un EXE no era correcta.

El típico programa Windows cuando crea la Ventana principal del programa pasa la dirección de memoria de la función que se encargará de atender los eventos. Y seguro que hay otro tipo de situaciones que no estoy contemplando.

Si alguien puede ayudarme sobre cómo desensamblar un ejecutable, tengo como referencia el PE Explorer 1.99 pero no llego a entender como obtiene el Desensamblado del EXE.

Muchas gracias.

MCKSys Argentina

Hola!

Te dejo esta página, donde encontrarás mucha info sobre el tema.

Puedes recurrir al fuente de los proyectos open source para quitarte las dudas que tengas.

Inlcuso desde la página de Olly, te puedes bajar el desemsamblador de la primera versión de Olly y pegarle una mirada.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


SubAtomicParticula

Gracias MCKSys Argentina, trabajaré en ello.

apuromafo CLS

#3

surfdata

Magnificos aportes , yo también estoy interesado en conocer cómo funciona un desensamblador a nivel interno y ésto me sirve mucho.