Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Juanma_faust en 6 Junio 2010, 21:20 pm



Título: Duda con el lenguaje C++/C
Publicado por: Juanma_faust en 6 Junio 2010, 21:20 pm
Hola muy buenas,soy nuevo en este foro y espero me puedan ayudar.

Verán me gustaría aprender a hacer parches en este lenguaje,dicho de otra forma,escribir alguna instruccion como puede ser un MessageBox,un CreateFile o alguna API mas en otro ejecutable todo eso mediante un programa en C++,serian 2 ejecutables,simplemente me gustaria saber que APIs puedo utilizar para eso y si alguien tiene algún ejemplo de un parche pues mucho mejor.


Gracias


Título: Re: Duda con el lenguaje C++/C
Publicado por: Falso Positivo en 6 Junio 2010, 21:34 pm
Hola Juanmma_faust,

Me late que éste tema va mas por el lado de cracking.

Si ya tienes el 1.exe (original)  y el 2.exe (original modificado) , entonces puedes usar ésto (http://diablo2oo2.di.funpic.de/dup.htm) para crear el parche, el cual contrendrá solo la data necesaria para convertir 1.exe a 2.exe.

Saludos.


Título: Re: Duda con el lenguaje C++/C
Publicado por: Eternal Idol en 6 Junio 2010, 21:44 pm
Consulta estas funcoiones en la MSDN y te vas a dar una idea:
CreateFile
WriteFile
MapViewOfFile
CreateFileMapping
VirtualProtect
UnmapViewOfFile
CloseHandle


Título: Re: Duda con el lenguaje C++/C
Publicado por: Juanma_faust en 6 Junio 2010, 22:18 pm
Hola muchisimas gracias por vuestra ayuda,una cosa Eternal Idol,con esas APIs imagino que debo proyectar un archivo en memoria,y modificarlo i despues se guarda en disco es asin?

lo que yo no capto es como pasar los bytes de una funcion como las que menciona anteriormente al otro ejecutable,si podria pasar una cadena de caracteres mediante memcpy,pero no se como pasar instrucciones de un exe a otro


Muchas gracias de antemano


Título: Re: Duda con el lenguaje C++/C
Publicado por: Eternal Idol en 7 Junio 2010, 00:47 am
Si, mappearlo en memoria (al final trabajas con punteros) es una de las opciones, la otra es leer y escribir con ReadFile y WriteFile. Una funcion al final de cuentas es un conjunto de bytes pero tenes algunas restricciones para que se pueda copiar directamente (por ejemplo si llamas a una API de Windows necesitas que es este importada en el ejecutable y referirte a la sección del PE correspondiente), eso te va a tocar investigarlo y sin saber assembly es dificil.