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!