elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Solucionado]Convertir el AddressOfEntryPoint de DWORD a LPSTR? [C]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado]Convertir el AddressOfEntryPoint de DWORD a LPSTR? [C]  (Leído 4,017 veces)
linkgl

Desconectado Desconectado

Mensajes: 2


Ver Perfil
[Solucionado]Convertir el AddressOfEntryPoint de DWORD a LPSTR? [C]
« en: 1 Enero 2011, 00:06 am »

Buenas, pues estoy sacando el EntryPoint de un ejecutable con image_nt_headers, el problema viene a que me ví con la necesida de pasarlo a LPSTR o char *, entonces hago

//estructuras
IMAGE_NT_HEADERS inh;
IMAGE_DOS_HEADER idh;
...

LPSTR szBuffer;
szBuffer=(LPSTR)inh.OptionalHeader.AddressOfEntryPoint; // <- si dejo el code hasta aquí no me da error al correr el programa
MessageBox(NULL,szBuffer,"",MB_OK); //<-Cuando pongo esta linea me salta el error

Cuando pongo la linea del MessageBox para mostrar el entrypoint tipo LPSTR me marca un error al leer la memoria, dice que no se puede "read" la direccion en memoria 0x0000xxxx

¿Por qué sucederá esto, o cómo podría ese entero(DWORD) a string(LPSTR)?

Gracias por leer el post, recién estoy leyendo documentación sobre el PE y sus estructuras jeje pero no encontré nada al respecto


« Última modificación: 1 Enero 2011, 02:37 am por linkgl » En línea

m4rtyr

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Convertir el AddressOfEntryPoint de DWORD a LPSTR? [C]
« Respuesta #1 en: 1 Enero 2011, 01:46 am »

eh probado
int xxx=inh->OptionalHeader.AddressOfEntryPoint;
   MessageBox(NULL,&xxx,"",MB_OK);
no me da error pero no tiene mensage
el messagebox solo puede printar Ascci o unicode , y el entrypoint no es ni Ascci o unicode

usa printf("%X",inh->OptionalHeader.AddressOfEntryPoint);
// offtopic me registre solo para responderte xD
saludos


« Última modificación: 1 Enero 2011, 01:49 am por m4rtyr » En línea

linkgl

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Convertir el AddressOfEntryPoint de DWORD a LPSTR? [C]
« Respuesta #2 en: 1 Enero 2011, 02:07 am »

m4rty! que gusto verte por acá haha de haberlo sabido habría posteado en indetectables también xD, pues te comento con printf si funciona con %x (hex) y %d (entero), pero lo que pasa es que no estoy haciendo el programa para la consola, estoy usando las librerías de wx para crear una GUI, y necesito pasar el parámetro como una string de tipo char * o LPSTR, así:

Wx.Edit->SetValue(entrypoint);

Sólo quiero convertir el valor del entrypoint en una string para mostrarlo en pantalla!. He intentado con el & (cómo no lo puse anteriormente) y ahora no me marca error pero me imprime caracteres raros

WxEdit->SetValue((char *)&inh.OptionalHeader.AddressOfEntryPoint); // salida -> ”

 :rolleyes: Alguna otra idea? jeje

->Edito
Ya recorde que al hacerle (char *) a un int te lo convierte a ascii... Al parecer toma el valor DWORD del entry point y convierte los números a ascii, pero de ahí creo que me las puedo arreglar lo que hace es esto:

DWORD xxx=65;
WxEdit->SetValue((char *)&xxx)); // salida -> A

jeje bueno si alguien tiene una idea de como hacer que salga el numero sin convertirlo a ascii pues que lo diga haha mientras voy a intentar otras formas y sigo publicando  :rolleyes:

--> Edito 2
Ya lo he solucionado he utilizado itoa, no quería usarlo por no ser "estandar" pero bue.. funciona y es lo que vale supongo, ojala y el tema le sirva a alguien que intente algo similar en un futuro! salu2:

Código:
// ejemplo de solucion al problema ->

    int entrypoint;
    char buffer[30];

        entrypoint=inh.OptionalHeader.AddressOfEntryPoint;
        itoa(entrypoint,buffer,10);
        //WxEdit1->SetValue(buffer);

Gracias m4rty nos estamos viendo capo

-> Edito por tercera vez...
Seguí experimentando, otra solución alternativa:
Código:
        entrypoint=inh.OptionalHeader.AddressOfEntryPoint;
        sprintf(buffer,"%d",entrypoint);

Se almacena ya convertido en char en buffer :P
« Última modificación: 1 Enero 2011, 02:57 am por linkgl » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Modificar Valor a DWORD en el registro
Programación Visual Basic
Ch3ck 1 4,811 Último mensaje 6 Septiembre 2007, 03:55 am
por APOKLIPTICO
Registros DWord desde VB
Programación Visual Basic
ytggm 1 1,765 Último mensaje 14 Febrero 2008, 04:48 am
por krackwar
¿Que son DWORD FS y <TSLindex>?
Ingeniería Inversa
Zequez 3 2,801 Último mensaje 22 Febrero 2010, 18:07 pm
por Zequez
Como determinar cuando ha sido modificada la AddressOfEntryPoint de un PE
Análisis y Diseño de Malware
vvictoristudio 4 4,104 Último mensaje 29 Abril 2011, 10:40 am
por Karcrack
Convertir tipos de datos a DWORD Y WCHAR
Programación C/C++
el_doctor 3 2,391 Último mensaje 12 Septiembre 2013, 21:56 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines