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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda , Opengl Wallhack DLL
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda , Opengl Wallhack DLL  (Leído 6,840 veces)
Luchoz95

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Ayuda , Opengl Wallhack DLL
« en: 17 Marzo 2013, 07:41 am »

hola que tal , estoy tratando de hacer un wallhack para un juego y estoy aprendiendo de post de aca del foro, y me salio esto ..
Código
  1. #include <windows.h>
  2. #include <gl/gl.h>
  3. #include <gl/glu.h>
  4.  
  5. void __stdcall glBegin( GLenum mode )
  6. {
  7.  
  8. if(!(mode==GL_TRIANGLES||mode==GL_TRIANGLE_STRIP||mode==GL_TRIANGLE_FAN||mode==GL_QUADS))
  9. {
  10. GLfloat curcol[4];
  11. glGetFloatv(GL_CURRENT_COLOR, curcol);
  12. glDisable(GL_DEPTH_TEST);
  13. glEnable(GL_BLEND);
  14. glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
  15. glColor4f(curcol[0],curcol[1],curcol[2],0.5f);
  16. glClearColor(0.0f,0.0f,0.0f,0.0f);
  17. }
  18. glBegin(mode);
  19. }
  20.  
  21. BOOL __stdcall DllMain(HANDLE hInst, DWORD dwReason, LPVOID lpReserved)
  22. {
  23. if (dwReason == DLL_PROCESS_ATTACH)
  24. {
  25. MessageBox(NULL,L"inject!",L"luchoooo",MB_ICONWARNING | MB_OK);
  26. }
  27. return TRUE;
  28. }
  29. }
Compila todo de 10 la dll, pero cuando la inyecto , no pasa nada en el juego , el Messagebox injecta , pero lo de opengl no , alguien tiene idea que me hace falta ? saludos !


En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.524


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Ayuda , Opengl Wallhack DLL
« Respuesta #1 en: 17 Marzo 2013, 08:18 am »

El programa está llamando a glBegin de tu DLL?
Estás exportando la función?
Quizás deberías parchear la IAT del EXE en runtime para que redireccione a tu DLL?


En línea

MCKSys Argentina

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

85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Ayuda , Opengl Wallhack DLL
« Respuesta #2 en: 17 Marzo 2013, 11:01 am »

Lo que te dice MCKSys Argentina está bien, digamos son las preguntas que deberías hacerte. Pero para este juego necesitás hacer otra cosa.
fijate primero esta imagen, son los imports del ejecutable del juego


utiliza GetProcAddress para resolver Opengl32,

fijate el log de GetProcAddress Luchoz95


El log completo
http://www.mediafire.com/?zdqbvczz20g33zf

Esto es justo lo que estábamos hablando el otro día MCKSys Argentina XD, sobre lo de interceptar GPA para luego interceptar Opengl32


En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
Luchoz95

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Ayuda , Opengl Wallhack DLL
« Respuesta #3 en: 17 Marzo 2013, 16:41 pm »

a ver voy de apoco ... no soy muy bueno en programacion por eso , no entiendo mcuho ....
MCKSys Argentina
Citar
El programa está llamando a glBegin de tu DLL?
Cuando te referis al programa , que programa decis vos ? hl?
Citar
Estás exportando la función?
La funcion es glBegin no ? y no se exporta con void __stdcall ?
Citar
Quizás deberías parchear la IAT del EXE en runtime para que redireccione a tu DLL?
me mataste . ja!
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.524


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Ayuda , Opengl Wallhack DLL
« Respuesta #4 en: 17 Marzo 2013, 19:31 pm »

Me refiero al ejecutable del juego que estés intentando parchear. (Al parecer es el de Half-Life)

No conozco mucho de programación en C++, por eso te pregunto si estás exportando la función (en ASM no basta sólo la declaración, debe especificarse por separado para que se exporte.)

Si el programa importa la función buscada, directamente desde la IAT, sólo es cuestión de parchearla y redireccionarla al momento de cargar la DLL y listo (fijate las imagenes de 85).
Si está usando GetProcAddress para obtener la dirección, sería algo parecido: reemplazar el valor obtenido por tu direccion.

Ahora, en el último caso (direccion calculada con GetProcAddress) hay otros problemas que pueden ocurrir:

1) Que la dirección se calcule LUEGO de que tu DLL se carga. Ahi deberas tratar de hacer un callback o hook para que tu codigo se ejecute nuevamente. Acá debes recordar que hookear una API en mejor que tocar el propio EXE.

2) Que la direccion donde se guardará la direccion de GetProcAddress se calcule en runtime. De esta forma es dificil calcular luego la direccion, pues se crea en tiempo de ejecucion y normalmente no hay muchas referencias a dicha direccion (a menos que cometan el error de copiarla a una sección del EXE).

Saludos!
En línea

MCKSys Argentina

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

BloodSharp


Desconectado Desconectado

Mensajes: 814


¡ Hiperfoco !


Ver Perfil WWW
Re: Ayuda , Opengl Wallhack DLL
« Respuesta #5 en: 17 Marzo 2013, 20:58 pm »

El lo que realmente quiere hacer es hookear la función glBegin. En cuanto a GetProcAddress el juego al tener múltiples opciones de video software, opengl, d3d no puede tener los módulos cargados al principio (eso creo), por lo que lo carga en algún lado con LoadLibrary y después mediante GetProcAddress va metiendo las direcciones (en este caso de opengl) en un array de direcciones...




B#
En línea



85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Ayuda , Opengl Wallhack DLL
« Respuesta #6 en: 18 Marzo 2013, 01:59 am »

Bienvenido IEAX  ;D gracias por tu contribución

como dijo my friend IEAX se trata de las direcciones de Opengl32 que se guardaron en un array. Te mostramos como tenés que hacer con el depurador para llegar a obtener las direcciones que quieras.

Lo primero es obtener la dirección de la función (glBegin)



Ponés un BP y cuando llegás al punto en el que fue llamada, vas
a tener que mirar la pila, específicamente la dirección de retorno,
que es donde estabas anteriormente (trace back).


Entonces vas a esa dirección y te encontrás con algo así..


Copiás esa dirección



Y la ponés en una variable puntero, así
Código:
DWORD* Ptr=(DWORD*)0x027E89EC;

y luego reemplazás su valor por el de la dirección de tu glBegin.
(función de reemplazo o hook).
Código:
*Ptr=(DWORD) Mi_glBegin;


Código
  1. void __stdcall Mi_glBegin( GLenum mode )
  2. {
  3. glBegin(mode);
  4. }
  5.  

En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
Luchoz95

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Ayuda , Opengl Wallhack DLL
« Respuesta #7 en: 18 Marzo 2013, 02:41 am »

Si genteee logreee hacer el wallhack !!
Muchsisisiisimaaaas gracias a todoos !
aca dejo el  source
Código
  1. #include <windows.h>
  2. #include <gl/gl.h>
  3. #include <gl/glu.h>
  4.  
  5. DWORD* Ptr=(DWORD*)0x027E89EC;
  6.  
  7.  
  8. void __stdcall NewglBegin( GLenum mode )
  9. {
  10. if(mode == GL_TRIANGLE_STRIP)
  11.  
  12. {
  13.  
  14. glDisable(GL_DEPTH_TEST);
  15.  
  16. }
  17. glBegin(mode);
  18. }
  19.  
  20. BOOL __stdcall DllMain(HANDLE hInst, DWORD dwReason, LPVOID lpReserved)
  21. {
  22. if (dwReason == DLL_PROCESS_ATTACH)
  23. {
  24. *Ptr=(DWORD) NewglBegin;
  25. }
  26. return TRUE;
  27. }
En línea

85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Ayuda , Opengl Wallhack DLL
« Respuesta #8 en: 18 Marzo 2013, 02:55 am »

Nice  ::)
En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
BloodSharp


Desconectado Desconectado

Mensajes: 814


¡ Hiperfoco !


Ver Perfil WWW
Re: Ayuda , Opengl Wallhack DLL
« Respuesta #9 en: 18 Marzo 2013, 03:50 am »

Bienvenido IEAX  ;D gracias por tu contribución

De nada  ;D

Y la ponés en una variable puntero, así
Código:
DWORD* Ptr=(DWORD*)0x027E89EC;

y luego reemplazás su valor por el de la dirección de tu glBegin.
(función de reemplazo o hook).
Código:
*Ptr=(DWORD) Mi_glBegin;


Código
  1. void __stdcall Mi_glBegin( GLenum mode )
  2. {
  3. glBegin(mode);
  4. }
  5.  

El ejemplo está muy bien, el único problema de poner esa dirección directamente como le sugerís a lucho es que solo va a funcionar para un par de versiones del juego. Esto se debe a que en las versiones antiguas los módulos no eran cargados normalmente, me refiero a que son mapeados directamente siempre en una misma zona específica de memoria, por lo cual siempre le va a funcionar con la misma dirección.
En las versiones del juego más actuales las dll son cargadas normalmente y seguramente estarán en otras posiciones de memoria cada vez que inicie el juego...


B#
« Última modificación: 18 Marzo 2013, 03:57 am por IEAX » En línea



Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Necesito un wallhack porfas (?)
Juegos y Consolas
b182 0 1,681 Último mensaje 22 Noviembre 2008, 17:42 pm
por b182
X-Spec 1.1 Demo Wallhack
Juegos y Consolas
SmopuiM 0 3,518 Último mensaje 27 Septiembre 2009, 18:15 pm
por SmopuiM
Se acabo el Wallhack de Karman??¿ « 1 2 »
Juegos y Consolas
skabio_10 16 14,186 Último mensaje 13 Noviembre 2009, 19:37 pm
por Artikbot
(Ayuda) Sentar las bases en OpenGL
Programación C/C++
Seyro97 4 2,714 Último mensaje 6 Octubre 2014, 22:53 pm
por Seyro97
(Ayuda - OpenGL) Problemas de vocabulario
Programación C/C++
Seyro97 5 3,184 Último mensaje 30 Noviembre 2014, 19:35 pm
por zShackra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines