Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Luchoz95 en 6 Abril 2013, 06:19 am



Título: Codigo Fuente, Cheat Cs 1.6
Publicado por: Luchoz95 en 6 Abril 2013, 06:19 am
Buenaas gente, queria compartirle con ustedes un cheat que hice con ayuda de variaas personas , simplemente lo que hace es hookear las direcciones de Opengl32, como me aconsejaron no es muy bueno usar este metodo , pero por ahora aprendi de esta manera , ja!
main.cpp
Código
  1. #include <windows.h>
  2. #include <gl/gl.h>
  3. #include <gl/glu.h>
  4.  
  5. DWORD* glClearPtr=(DWORD*)0x027E85CC;
  6. DWORD* glBeginPtr=(DWORD*)0x027E89EC;
  7. DWORD* glvertexPtr=(DWORD*)0x027E851C;
  8.  
  9. int sky = 1;
  10. bool nosky = false;
  11.  
  12. void APIENTRY NewglBegin( GLenum mode )
  13. {
  14.  
  15. //PERFECT WALLHACK
  16. if(!(mode==GL_TRIANGLES||mode==GL_TRIANGLE_STRIP||mode==GL_TRIANGLE_FAN||mode==GL_QUADS))
  17. {
  18. GLfloat curcol[4];
  19. glGetFloatv(GL_CURRENT_COLOR, curcol);
  20. glDisable(GL_DEPTH_TEST);
  21. glEnable(GL_BLEND);
  22. glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
  23. glColor4f(curcol[0],curcol[1],curcol[2],0.5f);
  24. glClearColor(0.0f,0.0f,0.0f,0.0f);
  25. }
  26. //SIMPLEWALLHACK
  27. if(mode==GL_TRIANGLES||mode==GL_TRIANGLE_STRIP||mode==GL_TRIANGLE_FAN)
  28. {
  29. glDisable(GL_DEPTH_TEST);
  30. }
  31. //WHITEWALLS
  32. if ( mode != GL_TRIANGLES && mode != GL_TRIANGLE_STRIP && mode != GL_TRIANGLE_FAN && mode != GL_QUADS )
  33. {
  34. glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
  35. }
  36. //LAMBERT
  37. if(mode == GL_TRIANGLE_STRIP)
  38. {
  39.     glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);
  40. }
  41. //NO SKY
  42. if(sky == 1 && mode== GL_QUADS)
  43. { nosky = true;}
  44. else
  45. { nosky = false;}
  46.  
  47.  
  48. glBegin(mode);
  49. }
  50.  
  51.  
  52.  
  53. void APIENTRY NewglClear(GLbitfield mask)
  54. {
  55. if (mask == GL_DEPTH_BUFFER_BIT)
  56.  
  57. {
  58. glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
  59. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  60.  
  61.  
  62. }
  63. glClear(mask);
  64. }
  65.  
  66.  
  67. void APIENTRY NewglVertex3fv(const GLfloat *v)
  68. {
  69. if(nosky == true)
  70. {
  71. return;
  72. }
  73.    glVertex3fv(v);
  74. }
  75.  
  76.  
  77.  
  78. //FUNCION PRINCIPAL DE DLL
  79. BOOL APIENTRY DllMain(HANDLE hInst, DWORD dwReason, LPVOID lpReserved)
  80. {
  81. if (dwReason == DLL_PROCESS_ATTACH)//SI LA DLL SI INJECTA ...
  82. {
  83.  
  84. MessageBox(NULL,"WallHack Activated!","Message",MB_OK);
  85.               *glBeginPtr=(DWORD)NewglBegin;
  86.       *glClearPtr=(DWORD)NewglClear;
  87.       *glvertexPtr=(DWORD)NewglVertex3fv;
  88.  
  89. }
  90. return TRUE;
  91. }

Es muy problame que a varios no les funcione , porque pueden tener distinta version del CS , y a su vez distintas direcciones de las funciones de Opengl, pero ACA (http://foro.elhacker.net/programacion_cc/ayuda_opengl_wallhack_dll-t385689.0.html;msg1837528#msg1837528) el usuario 85 explica como obtener esas direcciones ... bueno espero que les sirva de algo!

S2!


Título: Re: Codigo Fuente, Cheat Cs 1.6
Publicado por: El Che Guevara en 6 Abril 2013, 06:24 am
 :P VIEJO VICIO QUE SOLIA JUGAR!! ME ACUERDO QUE ME CEBABA MAL CON EL CHEAT 'LIQUID' O EL 'CD-HACK DISABLED' ...HASTA QUE SALIO EL ANTICHEAT SXE PERO ME SIRVIO PARA SALIR DE ESE VICIO  :xD


Título: Re: Codigo Fuente, Cheat Cs 1.6
Publicado por: 85 en 6 Abril 2013, 15:55 pm
Si, vos lo dijiste.. eso es una demostración muy específica que te di para lograr un wallhack en el CS 3266, muy específico de esa versión.
Mi intención no era que lo tomés como el método a seguir.
Yo antes que mostrarte eso, te había dicho que la mayoría de los hacks (al menos los primeros), interceptaban GetProcAddress para "engañar" al juego por decirlo así.
Fijate si podés utilizar 'Detours' con las funciones de Opengl32, fijate los códigos de karman, si no lo conocés, es un usuario de este foro que se ha dedicado a estas cosas..

Si tu intención no es pasar las detecciones modernas de sistemas antitrampas, podés empezar con 'Detours', seguir con otras formas de 'patching', fijate los códigos de karman por ejemplo, más adelante vas a aprender otras técnicas, por ejemplo hardware breakpoints.
Eso que preguntaste sobre "codecaves" en otro post tuyo, eso es relacionado al 'patching', y son la mayoría métodos intrusivos.
Los breakpoints de hardware, son no intrusivos ya que no parchean nada.


Título: Re: Codigo Fuente, Cheat Cs 1.6
Publicado por: Luchoz95 en 6 Abril 2013, 21:52 pm
Gracias por lo consejos como siempre 85!


Título: Re: Codigo Fuente, Cheat Cs 1.6
Publicado por: mr.blood en 6 Abril 2013, 22:00 pm
Para que hagas un Hook decente :P.

http://foro.elhacker.net/analisis_y_diseno_de_malware/libreria_c_hook_a_la_iat-t381524.0.html

Sa1uDoS


Título: Re: Codigo Fuente, Cheat Cs 1.6
Publicado por: 85 en 7 Abril 2013, 16:49 pm
Si en un orden de decencia, sería algo así (para Opengl32):

- HWBP (Aunque sólo 4 por hilo)
- IAT hook (GPA)
- EAT hook (Opengl32)
- Detours (Opengl32, TIB, o GPA)
- MS Detours (Opengl32 o GPA)
- Wrapper de Opengl32
- parchear el juego (Lo que hicistes vos Luchoz95 XD)

Aunque sólo te estamos diciendo que busqués otros métodos, no tiene nada de malo parchear el juego, lo que pasa es que eso no hace al hook precisamente portable hacia otras versiones del juego.

Saludos


Título: Re: Codigo Fuente, Cheat Cs 1.6
Publicado por: Luchoz95 en 8 Abril 2013, 00:56 am
Siempre se empieza de abajo (? ja! , todas esos metodos son en modo usuario o alguno usas ring0 ?


Título: Re: Codigo Fuente, Cheat Cs 1.6
Publicado por: 85 en 8 Abril 2013, 01:04 am
Nop, Ring0 ak no tiene nada que ver. Vos sabés que para ejecutar código en modo Ring0 se requiere un driver, y las librerías son otras que las de modo Ring3 (usuario). Es decir es otro tema XD, se requiere una DDK para compilar drivers, es otro tema

Todo esto es desde Ring3. Pero si te interesa saber si se puede hacer desde Ring0, la respuesta es si, todo o casi todo se puede hacer desde ese nivel.
Sólo que es otra programación (otras librerías).

Andá escalando XD, ya sabés lo que es parchear el juego, sabés lo que es un 'wrapper' de DLL, sabés acerca de usar 'Detours' que también es parchear.
Y también deberías saber acerca de EAT y IAT debido a los múltiples temas que se han publicado al respecto. Por ejemplo el link de mr.blood


Título: Re: Codigo Fuente, Cheat Cs 1.6
Publicado por: Luchoz95 en 8 Abril 2013, 01:35 am
aah, claro voy a tratar de ir escalando por metodo


Título: Re: Codigo Fuente, Cheat Cs 1.6
Publicado por: 85 en 9 Abril 2013, 21:29 pm
aah, claro voy a tratar de ir escalando por metodo

La verdad, esto que hiciste se puede considerar parchear el juego, pero en realidad se aplica a cuando cambiás bytes en la memoria del proceso en la parte del código, los punteros son datos aunque podemos considerarlo un parche el hecho de reemplazar un valor por otro.

Los 'Detours' también es "parchear el juego".

Los hooks del tipo EAT y IAT también se trata de parchear, lo mismo, osea punteros.

Pero eso te dije que son métodos instrusivos.

Son fáciles de detectar y de restaurar.
Por eso cuando uno parchea algo que tiene comprobaciones de seguridad, lo que se debe hacer también es parchear esas comprobaciones XD, para que no te detecten



Título: Re: Codigo Fuente, Cheat Cs 1.6
Publicado por: Luchoz95 en 10 Abril 2013, 00:53 am
entonces haciendo un HWBP se puede pasar las comprobaciones de seguridad ?


Título: Re: Codigo Fuente, Cheat Cs 1.6
Publicado por: 85 en 10 Abril 2013, 03:21 am
Si se tratan de medidas de seguridad que tratan de detectar modificaciones en la memoria es obvio que no van a detectar un breakpoint de hardware ya que como te dije, se trata de un método no intrusivo.
Pero hay métodos de detectar o bloquear el uso de breakpoints de hardware, inclusive desde un driver. Pero también se pueden tomar medidas acerca de este tipo de seguridad. Es decir, hay medidas y contramedidas.

Los breakpoints de software por ejemplo, si son intrusivos, ya que deben modificar la memoria insertando un byte correspondiente al INT 3 o interrupción de software (Es como hace el OllyDBG si observás bien con los bpm).

Si hablamos del sXe, no lo uso hace tiempo (años), pero lo instalé recientemente para mostrarte una idea de lo que puede hacer un sistema de seguridad desde un driver.

(http://img443.imageshack.us/img443/5453/sxe1.png) (http://imageshack.us/photo/my-images/443/sxe1.png/)

(http://img692.imageshack.us/img692/3104/sxe2.png) (http://imageshack.us/photo/my-images/692/sxe2.png/)

(http://img690.imageshack.us/img690/1231/sxe3.png) (http://imageshack.us/photo/my-images/690/sxe3.png/)

Inyectado en el juego..
(http://img607.imageshack.us/img607/6596/sxe4.png) (http://imageshack.us/photo/my-images/607/sxe4.png/)

De paso fijate todo lo que intercepta el Chrome XD
Esto es una idea nada más de lo que puede hacer, tendrías que depurar a fondo el sistema de seguridad para realmente saber que comprobaciones tiene (Y primero deshabilitar las protecciones anticracking XD)

Ah y para estrenarlo, me tiró un log con el CS3266, pero con el 4554 no  ;-)
Código:
2013/04/09 21:13:04 - [CLT] - 
2013/04/09 21:13:04 - [CLT] - sXe Injected starting...
2013/04/09 21:13:04 - [CLT] - [D:\SXE]
2013/04/09 21:13:05 - [CLT] - Checking hosts file...
2013/04/09 21:13:05 - [CLT] - Checking hosts file done
2013/04/09 21:13:05 - [CLT] - Win XP (5.1.2600 Service Pack 3) [0]
2013/04/09 21:13:05 - [CLT] - version: 13.3 (Fix 1)
2013/04/09 21:13:05 - [CLT] - [ send in the clowns ]
2013/04/09 21:13:05 - [CLT] - Platform: x86 detected
2013/04/09 21:13:05 - [CLT] - Starting Device Driver
2013/04/09 21:13:05 - [CLT] - service [D:\sXe\ddsxei.sys]
2013/04/09 21:13:05 - [CLT] - Open manager OK
2013/04/09 21:13:06 - [CLT] - Create Service OK
2013/04/09 21:13:06 - [CLT] - Start Service OK
2013/04/09 21:13:06 - [CLT] - Service ready
2013/04/09 21:13:06 - [CLT] - Trying to open device[1]...
2013/04/09 21:13:06 - [CLT] - Service Handle OK
2013/04/09 21:13:06 - [CLT] -  [35][7C91D190]
2013/04/09 21:13:06 - [CLT] -  [32][7C91D160]
2013/04/09 21:13:06 - [CLT] -  [74][7C91D580]
2013/04/09 21:13:06 - [CLT] -  [AD][7C91D910]
2013/04/09 21:13:06 - [CLT] -  [7A][7C91D5E0]
2013/04/09 21:13:06 - [CLT] -  [D5][7C91DB90]
2013/04/09 21:13:06 - [CLT] -  [89][7C91D6D0]
2013/04/09 21:13:06 - [CLT] -  [FE][7C91DE20]
2013/04/09 21:13:07 - [CLT] - Waiting for game...
2013/04/09 21:15:53 - [CLT] - Proceso [explorer.exe](1652) injecting on PID (3748) -> (ALLOW)[1]
2013/04/09 21:15:53 - [CLT] - Intercepting game... [3748][hl.exe]
2013/04/09 21:15:53 - [CLT] - [D:\Counter-Strike1\hl.exe] -> Incorrect version [fb4905ec0f3636455c3ec35f35863d1e](BLOCKED)
2013/04/09 21:15:54 - [CLT] - Injecting: [D:\sXe\sxe.dll]
2013/04/09 21:15:54 - [CLT] - Injected OK
2013/04/09 21:15:57 - [CLT] - DEP configured for [D:\Counter-Strike1\hl.exe]
2013/04/09 21:15:57 - [CLT] -  * Sending shutdown
2013/04/09 21:15:57 - [CLT] -  * Termination
2013/04/09 21:15:57 - [CLT] - Game closed!
2013/04/09 21:15:59 - [CLT] -  * Cleaning
2013/04/09 21:15:59 - [CLT] -  * Stoping service
2013/04/09 21:15:59 - [CLT] -  * Service stopped
2013/04/09 21:15:59 - [CLT] -  * Service deleted
2013/04/09 21:16:07 - [CLT] -  * Cleaning
2013/04/09 21:16:07 - [CLT] - GetLastError(1060)(El servicio especificado no existe como servicio instalado.

)
2013/04/09 21:16:07 - [CLT] - Open service error
2013/04/09 21:16:08 - [CLT] -  * Cleaning
2013/04/09 21:16:08 - [CLT] - GetLastError(1060)(El servicio especificado no existe como servicio instalado.

)
2013/04/09 21:16:08 - [CLT] - Open service error

DEP
http://en.wikipedia.org/wiki/Data_Execution_Prevention
http://www.microsoft.com/latam/technet/articulos/mediumbus/depcnfxp.mspx