• Domingo 22 de Diciembre de 2024, 07:51

Autor Tema:  Sacar Direccion Del Entry Point  (Leído 2991 veces)

Zirrosis

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Sacar Direccion Del Entry Point
« en: Miércoles 29 de Noviembre de 2006, 19:39 »
0
Bueno, estoy en desarrollo de una aplicacion, a la cual le quiero incorporar la notificación de la direccion del Entry Point de un programa, ya se que el Entry Point esta en la cabecera, pero en VB no se sacarla, quiero que me de de resultado lo mismo que da el OllyDg (es decir, estilo esto: 750086h).

Les agradeceria que me orientarais un poquito sobre que APIS y Constantes se usan.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Sacar Direccion Del Entry Point
« Respuesta #1 en: Miércoles 29 de Noviembre de 2006, 20:11 »
0
No se usa ninguna API necesariamente, tenes que buscar informacion sobre el formato PE y leer el archivo en cuestion (como binario). En concreto necesitas la cabecera MZ (IMAGE_DOS_HEADER) y la cabecera PE (IMAGE_NT_HEADERS). Eso esta definido en winnt.h ... busca mas informacion en Google.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Zirrosis

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Sacar Direccion Del Entry Point
« Respuesta #2 en: Miércoles 29 de Noviembre de 2006, 22:51 »
0
Si, esas cabeceras las tengo, lo quee no se es aplicarlas, como saco cada cosa de dentro del archivo??? :(  :(

Gracias por responder.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Sacar Direccion Del Entry Point
« Respuesta #3 en: Miércoles 29 de Noviembre de 2006, 23:44 »
0
El archivo empieza con la cabecera MZ (IMAGE_DOS_HEADER), en la misma hay un campo llamado e_lfanew esa es la cantidad de bytes que tenes que "adelantar" para llegar a las cabeceras PE (IMAGE_PE_HEADERS). En las cabeceras PE vas a encontrar el campo AddressOfEntryPoint en OptionalHeader, ese es el offset del punto de entrada. Ademas ahi tenes tambien ImageBase que te sirve para calcular la direccion virtual (sumando estos dos campos). Y eso seria todo  :smartass:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Zirrosis

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Sacar Direccion Del Entry Point
« Respuesta #4 en: Jueves 30 de Noviembre de 2006, 07:45 »
0
Ok, lo abriria con un simple...

Código: Text
  1. Open "C:\archivo" For Binary As #1
  2.  

????

Si es asi gracias.... ;)  ;)

Luego si quiero agregar mas codigo detras del ejecutable tendre que modificar su direccion virtual???

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Sacar Direccion Del Entry Point
« Respuesta #5 en: Jueves 30 de Noviembre de 2006, 08:10 »
0
Segun recuerdo era asi como decis, proba, hace años que no programo en VB. ¿Queres agregar codigo? Eso es MUCHO mas complejo que obtener el entry point ... el codigo no puede estar en cualquier lado, no podres agregarlo "al final del archivo" tiene que estar en una seccion, ya existente o crear una nueva (si hay lugar) ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Zirrosis

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Sacar Direccion Del Entry Point
« Respuesta #6 en: Jueves 30 de Noviembre de 2006, 15:36 »
0
:unsure:  Eske vi una practica de como empaquetar ejecutables manualmente con el Olly y lo queria hacer en VB.... :(

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Sacar Direccion Del Entry Point
« Respuesta #7 en: Jueves 30 de Noviembre de 2006, 16:09 »
0
No se a que te referis con practica. Para empaquetar un ejecutable, si hablamos de lo mismo, necesitas, ademas de obviamente empaquetar el codigo original, generar un nuevo ejecutable en el cual se encuentre la rutina de "desempaquetacion" y lleve embebido el ejecutable original empaquetado. NO es facil, bajo ningun concepto pero se puede hacer, tampoco es imposible.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Zirrosis

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Sacar Direccion Del Entry Point
« Respuesta #8 en: Jueves 30 de Noviembre de 2006, 18:31 »
0
Con decir practica queria decir video....no se en que debia de pensar....jejejeje

Mi intencion es hacer algo parecido al upx, que compila el condigo del ejecutable y le agrega una rutina de desencritpacion/desempaquetacion y va ejecutando el codigo.

Se que en C/C++ o directamente ASM es mucho mas facil de hacer que en VB, pero se que es posible hacerlo en VB, por eso lo pregunte. :(

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Sacar Direccion Del Entry Point
« Respuesta #9 en: Jueves 30 de Noviembre de 2006, 19:49 »
0
Si, funciona como lo explique en el mensaje anterior y es posible hacerlo. Suerte con eso, no te puedo ayudar mas que en teorica ya que no trabajo con VB desde hace mucho tiempo.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Zirrosis

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Sacar Direccion Del Entry Point
« Respuesta #10 en: Jueves 30 de Noviembre de 2006, 20:15 »
0
Aparte del entry point hacia mi direccion de descodificacion, tendria que modificar algo mas para que al agregar mi funcion de desencritpacion no "crashease" el ejecutable???

fallenanngel

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Sacar Direccion Del Entry Point
« Respuesta #11 en: Viernes 1 de Diciembre de 2006, 18:04 »
0
Cita de: "Eternal Idol"
El archivo empieza con la cabecera MZ (IMAGE_DOS_HEADER), en la misma hay un campo llamado e_lfanew esa es la cantidad de bytes que tenes que "adelantar" para llegar a las cabeceras PE (IMAGE_PE_HEADERS). En las cabeceras PE vas a encontrar el campo AddressOfEntryPoint en OptionalHeader, ese es el offset del punto de entrada. Ademas ahi tenes tambien ImageBase que te sirve para calcular la direccion virtual (sumando estos dos campos). Y eso seria todo  :smartass:
Hola..

soy nueva aki    :D , este mensaje se lo dedico a eternal idol, xfavor necesito ayuda
sobre como ingresar un dato a la compu mediante el puerto paralelo, por favor si fueses tan amable de ayudarme o recomendarme sitios donde pueda encontrar informacion para hacer esto...

xfavorr  :)