Codigo Fuente, Cheat Cs 1.6

Iniciado por Luchoz95, 6 Abril 2013, 06:19 AM

0 Miembros y 2 Visitantes están viendo este tema.

Luchoz95

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
#include <windows.h>
#include <gl/gl.h>
#include <gl/glu.h>

DWORD* glClearPtr=(DWORD*)0x027E85CC;
DWORD* glBeginPtr=(DWORD*)0x027E89EC;
DWORD* glvertexPtr=(DWORD*)0x027E851C;

int sky = 1;
bool nosky = false;

void APIENTRY NewglBegin( GLenum mode )
{

//PERFECT WALLHACK
if(!(mode==GL_TRIANGLES||mode==GL_TRIANGLE_STRIP||mode==GL_TRIANGLE_FAN||mode==GL_QUADS))
{
GLfloat curcol[4];
glGetFloatv(GL_CURRENT_COLOR, curcol);
glDisable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glColor4f(curcol[0],curcol[1],curcol[2],0.5f);
glClearColor(0.0f,0.0f,0.0f,0.0f);
}
//SIMPLEWALLHACK
if(mode==GL_TRIANGLES||mode==GL_TRIANGLE_STRIP||mode==GL_TRIANGLE_FAN)
{
glDisable(GL_DEPTH_TEST);
}
//WHITEWALLS
if ( mode != GL_TRIANGLES && mode != GL_TRIANGLE_STRIP && mode != GL_TRIANGLE_FAN && mode != GL_QUADS )
{
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
}
//LAMBERT
if(mode == GL_TRIANGLE_STRIP)
{
    glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);
}
//NO SKY
if(sky == 1 && mode== GL_QUADS)
{ nosky = true;}
else
{ nosky = false;}


glBegin(mode);
}



void APIENTRY NewglClear(GLbitfield mask)
{
if (mask == GL_DEPTH_BUFFER_BIT)

{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

       
}
glClear(mask);
}


void APIENTRY NewglVertex3fv(const GLfloat *v)
{
if(nosky == true)
{
return;
}
    glVertex3fv(v);
}



//FUNCION PRINCIPAL DE DLL
BOOL APIENTRY DllMain(HANDLE hInst, DWORD dwReason, LPVOID lpReserved)
{
if (dwReason == DLL_PROCESS_ATTACH)//SI LA DLL SI INJECTA ...
{

MessageBox(NULL,"WallHack Activated!","Message",MB_OK);
               *glBeginPtr=(DWORD)NewglBegin;
       *glClearPtr=(DWORD)NewglClear;
       *glvertexPtr=(DWORD)NewglVertex3fv;

}
return TRUE;
}


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 el usuario 85 explica como obtener esas direcciones ... bueno espero que les sirva de algo!

S2!

El Che Guevara

 :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
"la unica verdad es la realidad" (Domingo Peron)

85

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.
Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

Luchoz95

Gracias por lo consejos como siempre 85!


85

#5
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
Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

Luchoz95

Siempre se empieza de abajo (? ja! , todas esos metodos son en modo usuario o alguno usas ring0 ?

85

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
Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/

Luchoz95

aah, claro voy a tratar de ir escalando por metodo

85

Cita de: Luchoz95 en  8 Abril 2013, 01:35 AM
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

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