CREACION DE CHEATS - CS 1.6

Iniciado por J0SS3, 8 Enero 2011, 23:09 PM

0 Miembros y 1 Visitante están viendo este tema.

J0SS3

Hola Amiigos! Bueno, hace muxoo q no entraba al foro, y tuve q crearme otra cuenta jaja...estuve ocupado con trabajo y estudio  :P Bueno en fin... lo que queria decirles es q estoii hace 1 año estudiando porgramación y eh estudiado de los viejos post de el foro de como crear un cheat para cs... hace unos meses me fue bien, pero me olvide de todo.. ahora keria empezar otra vez... pero como no me acuerdo muxo.. queria preg como puedo compilar un codigo fuente de la dll de un wallhack... del conocido karman, kien se inicio como programador de cheats aca en este foro je...  ;)

Intente compilarla con Visual C++ 6.0, con Dev C++ y hasta con ASM... pero nada, siempre me tira errores..  me gustaria que alguien me enseñe xq juro q no me acuerdo nada.. jaja..

Por cierto, estaria bueno hacer un manual de como crear un cheat de 0, xq los post q hay aca no estan taaann claros de como empezarlo (para alguien novato)... yo x suerte entendi y arranke a armarme los cheats... (obvio sin pasar el sxe, xq todavia no se me dio x eso), pero me costo bastante entender.. je.. x eso seria bueno si alguien podria hacer un manual de hasta q codigos van en los .cpp y los .h  , etc je.


Si alguien es amable y me ayuda, se lo agradezco de corazon, ayudenme a compilar este codigo fuente...

asi ya empiezo a armar mis cheats y estudiar para tratar de pasar el sxe...

ahora q tengo tiempo je...

aca esa el codigo


Citar#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <shlwapi.h>
#include <stdio.h>
#include <sys/stat.h>
#include <gl/gl.h>
#include <gl/glu.h>
//#include "wallhack.h" //redefine resources

typedef void (WINAPI *TBE)(GLuint);
typedef void (WINAPI *TGLED)(GLenum);
typedef void (WINAPI *TGFV)(GLenum,GLfloat *);
typedef void (WINAPI *TC3F)(GLfloat,GLfloat,GLfloat);
typedef void (WINAPI *TC4F)(GLfloat,GLfloat,GLfloat,GLfloat);
typedef void (WINAPI *TV2F)(GLfloat,GLfloat);
typedef void (WINAPI *TV3F)(GLfloat x, GLfloat y, GLfloat z);
typedef void (WINAPI *TV3FV)(const GLfloat *v);
typedef void (WINAPI *TC)(GLbitfield);
typedef void (WINAPI *TCC)(GLclampf,GLclampf,GLclampf,GLclampf);
typedef void (WINAPI *TBF)(GLenum,GLenum);
typedef void (WINAPI *TTE)(GLenum,GLenum,GLenum);
typedef void (WINAPI *TVP)(GLint,GLint,GLsizei,GLsizei);
typedef void (WINAPI *TPM)(void);
typedef void (WINAPI *TGIV)(GLenum,GLint*);
typedef void (WINAPI *TLW)(GLfloat);
typedef void (WINAPI *TV2I)(GLint,GLint);

typedef PVOID (*TGEBI)(int);

typedef struct _cheat_cfg{
BOOL bWall;
BOOL bWhiteWalls;
BOOL bNoSmoke;
BOOL bNoFlash;
BOOL bNoSky;
BOOL bLambert;
BOOL bFullbright;
BOOL bExtraCrosshair;
}cheat_cfg,*pcheat_cfg;

typedef struct PACKED _UserMgsList{
DWORD unknown1,unknown2;
CHAR msgname[16];
struct _UserMgsList *next;
DWORD address;
}UserMgsList,*PUserMgsList;

HANDLE hThread=NULL;WNDPROC pHLWndProc=NULL;HMENU hMenu=NULL;

TGFV pglGetFloatv;TV3FV pglVertex3fv;TLW pglLineWidth;
TV2F pglVertex2f;TC3F pglColor3f;TC4F pglColor4f;
TC pglClear;TCC pglClearColor;TV3F pglVertex3f;
TBE pglBegin,pglEnd;TGLED pglEnable,pglDisable;
TBF pglBlendFunc;TTE pglTexEnvi;TV2I pglVertex2i;
TPM pglPushMatrix,pglPopMatrix;TGIV pglGetIntegerv;

TGEBI pGetEntityByIndex;

BOOL bSmoke=FALSE,bSky=FALSE,bFlash=FALSE,bTex=FALSE,bDisabled=FALSE;
cheat_cfg cfg={FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE};

void *DetourFunc(BYTE *src, const BYTE *dst, const int len,const int type){
PBYTE jmp;DWORD dwback;
if(src&&*src==0xE9){
if(type==1)
src=(src+*(PDWORD)(src+1)+5)+34;//SXE HOOK Offset1
else
src=(src+*(PDWORD)(src+1)+5)+57;//SXE HOOK Offset2
//rare hook
jmp=(PBYTE)malloc(len+5);
while(!VirtualProtect(src,len+5,PAGE_READWRITE,&dwback));
memcpy(jmp,src,len);jmp+=len;
jmp[0] = 0xE9;
*(DWORD*)(jmp+1)=(DWORD)(*(DWORD*)(src+len+1)-(DWORD)jmp)-5;
*(DWORD*)(src+len+1)=(DWORD)dst;
while(!VirtualProtect(src,len+5,dwback,&dwback));
return (jmp-len);
}
return NULL;
}

PBYTE GetRealAddress(PBYTE pf,BYTE offset){
if(*pf==0xE9)pf=(pf+*(PDWORD)(pf+1)+5)+offset;
return pf;
}

void *GetProcAddress2(HMODULE hModule,char *func){
PBYTE pf=(PBYTE)GetProcAddress(hModule,func);
return GetRealAddress(pf,34);//SXE HOOK Offset
}

void *GetProcAddress3(HMODULE hModule,char *func){
PBYTE pf=(PBYTE)GetProcAddress(hModule,func);
return GetRealAddress(pf,57);//SXE HOOK Offset
}

void WINAPI hglBegin(GLenum mode){
float col[4];
if(!bDisabled){
switch(cfg.bWall){
case 1:
if(mode==GL_TRIANGLE_STRIP||mode==GL_TRIANGLE_FAN)
pglDisable(GL_DEPTH_TEST);
else if(mode!=GL_QUADS&&mode!=GL_LINES)
pglEnable(GL_DEPTH_TEST);
break;
case 2:
if(!(mode==GL_TRIANGLE_STRIP||mode==GL_TRIANGLE_FAN||mode==GL_QUADS)){
pglGetFloatv(GL_CURRENT_COLOR, col);
pglDisable(GL_DEPTH_TEST);
pglEnable(GL_BLEND);
pglBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA_SATURATE);
pglColor4f(col[0], col[1], col[2],.667f);
}else
if(mode==GL_TRIANGLES || mode==GL_TRIANGLE_STRIP || mode==GL_TRIANGLE_FAN){
pglEnable(GL_DEPTH_TEST);
pglDisable(GL_BLEND);
}
break;
default:break;
}
if(!(mode==GL_TRIANGLES||mode==GL_TRIANGLE_STRIP||mode==GL_TRIANGLE_FAN||mode==GL_QUADS)){
if(cfg.bWhiteWalls)
pglTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);
if(cfg.bFullbright&&bTex)
pglDisable(GL_TEXTURE_2D);
}
if(mode==GL_QUADS){
if(cfg.bNoFlash||cfg.bNoSmoke){
pglGetFloatv(GL_CURRENT_COLOR, col);
bSmoke = (col[0] == col[1] && col[0] == col[2] && col[0] != 0.0 && col[0] != 1.0);
bFlash = (col[0] >= 0.80 && col[1] >= 0.80 && col[2] >= 0.80 && col[3] > 0.2);//AntiFlash Fix (:S)
//bFlash = (col[0] == 1.0 && col[1] == 1.0 && col[2] == 1.0 && col[3] > 0.2);
}   
bSky=TRUE;
}else
bSky=FALSE;
}
pglBegin(mode);
}

void WINAPI hglVertex3fv(const GLfloat *v){
if(!bDisabled){
if(bSmoke)return;
if((cfg.bWall==2||cfg.bNoSky)&&bSky)return;
}
pglVertex3fv(v);
}

void WINAPI hglVertex2f(GLfloat x, GLfloat y){
if(!bDisabled&&bFlash&&x==0.0&&y==0.0)
pglColor4f(1.0f, 1.0f, 1.0f, 0.2f);
pglVertex2f(x, y);
}

void WINAPI hglVertex3f(GLfloat x, GLfloat y, GLfloat z){
if(!bDisabled&&cfg.bLambert)
pglColor3f(1.0f,1.0f,1.0f);
pglVertex3f(x,y,z);
}

void WINAPI hglClear(GLbitfield mask){
if(!bDisabled&&mask==GL_DEPTH_BUFFER_BIT){
mask+=GL_COLOR_BUFFER_BIT;
pglClearColor(0.0f, 0.0f, 0.0f, 0.0f);
}
pglClear(mask);
}

void WINAPI hglDisable(GLenum mode){
if(!bDisabled&&mode==GL_TEXTURE_2D)bTex=FALSE;
pglDisable(mode);
}

#ifdef __GNUC__
PVOID hGetEntityByIndex(int index);//ONLY GCC, VC NOT IMPLEMENTED
asm(
".globl _hGetEntityByIndex\n"
"_hGetEntityByIndex:\n"
"pop %eax;\n\t"
"xor $0xFF,%eax;\n\t"
"mov %eax,0x8(%esp);\n\t"
"jmp *_pGetEntityByIndex;\n\t"
);
#else
//VC Implementation
#endif

LRESULT CALLBACK NewHLWndProc(HWND hWnd,UINT uMsg,WPARAM wParam, LPARAM lParam){
BOOL bCallDefault=TRUE;LRESULT result=0;BYTE ct;
switch(uMsg){
case WM_COMMAND:
switch(wParam){
case IDM_NONE:case IDM_XQZ:case IDM_ASUS:
cfg.bWall=wParam-IDM_NONE;
break;
case IDM_NOSMOKE:
cfg.bNoSmoke=!cfg.bNoSmoke;
break;
case IDM_NOFLASH:
cfg.bNoFlash=!cfg.bNoFlash;
break;
case IDM_NOSKY:
cfg.bNoSky=!cfg.bNoSky;
break;
case IDM_LAMBERT:
cfg.bLambert=!cfg.bLambert;
break;
case IDM_FULLBRIGHT:
cfg.bFullbright=!cfg.bFullbright;
if(cfg.bFullbright&&cfg.bWhiteWalls)
cfg.bWhiteWalls=!cfg.bWhiteWalls;
break;
case IDM_WHITEWALLS:
cfg.bWhiteWalls=!cfg.bWhiteWalls;
if(cfg.bWhiteWalls&&cfg.bFullbright)
cfg.bFullbright=!cfg.bFullbright;
break;
case IDM_DISABLE:
bDisabled=!bDisabled;
break;
default:break;
}
break;
case WM_KEYDOWN:
switch (wParam){
case VK_F3:
bDisabled=!bDisabled;
break;
case VK_F4:
for(ct=0;ct<3;ct++)
CheckMenuItem(hMenu,IDM_NONE+ct,MF_BYCOMMAND|((cfg.bWall==ct)?MF_CHECKED:MF_UNCHECKED));
CheckMenuItem(hMenu,IDM_NOSMOKE,MF_BYCOMMAND|(cfg.bNoSmoke?MF_CHECKED:MF_UNCHECKED));
CheckMenuItem(hMenu,IDM_NOFLASH,MF_BYCOMMAND|(cfg.bNoFlash?MF_CHECKED:MF_UNCHECKED));
CheckMenuItem(hMenu,IDM_NOSKY,MF_BYCOMMAND|(cfg.bNoSky?MF_CHECKED:MF_UNCHECKED));
CheckMenuItem(hMenu,IDM_LAMBERT,MF_BYCOMMAND|(cfg.bLambert?MF_CHECKED:MF_UNCHECKED));
CheckMenuItem(hMenu,IDM_FULLBRIGHT,MF_BYCOMMAND|(cfg.bFullbright?MF_CHECKED:MF_UNCHECKED));
CheckMenuItem(hMenu,IDM_WHITEWALLS,MF_BYCOMMAND|(cfg.bWhiteWalls?MF_CHECKED:MF_UNCHECKED));
if(bDisabled)
ModifyMenu(hMenu,IDM_DISABLE,MF_BYCOMMAND|MF_STRING,IDM_DISABLE,"Enable");
else
ModifyMenu(hMenu,IDM_DISABLE,MF_BYCOMMAND|MF_STRING,IDM_DISABLE,"Disable");
TrackPopupMenu(GetSubMenu(hMenu,0),TPM_LEFTALIGN|TPM_TOPALIGN|TPM_HORIZONTAL|TPM_VERTICAL,100,100,0,hWnd,NULL);
break;
default:break;
}
break;
default:break;
}
if(bCallDefault)
return CallWindowProc(pHLWndProc, hWnd, uMsg, wParam, lParam);
return result;
}

DWORD SetUserMsgHook(PBYTE address,PCHAR name,DWORD address2){
PUserMgsList uml=*(PUserMgsList*)(*(PDWORD)(((address+=0x1A)+*(PDWORD)(address+1)+5)+0x0D));
while(uml){
if(!strncmp(uml->msgname,name,16)){
uml->address=address2;
return TRUE;
}
uml=uml->next;
}
return FALSE;
}

static int MysXeSS(const char *pszName, int iSize, void *pbuf){
return 0;
}

DLLEXPORT VOID Init(){//DisableSS
DWORD address=0x1d0d450;//gEngfuncs.pfnHookUserMsg
if(address)
SetUserMsgHook((PBYTE)address,"sXe-SS",(DWORD)MysXeSS);
}

DWORD WINAPI HookOpenGL(LPVOID lpParam){
DWORD dwThreadId,dwProcessId;
HWND hdHalfLife;HMODULE hModule;

while(
((hdHalfLife=FindWindow("Valve001",NULL))==NULL)&&
((hdHalfLife=FindWindow(NULL,"Counter-Strike"))==NULL)
)Sleep(100);

while((hModule=GetModuleHandle("opengl32.dll"))==NULL)Sleep(100);

dwThreadId=GetWindowThreadProcessId(hdHalfLife,&dwProcessId);
HANDLE hThread=OpenThread(THREAD_GET_CONTEXT|THREAD_SUSPEND_RESUME|THREAD_QUERY_INFORMATION,FALSE,dwThreadId);

if(!hThread){
CloseHandle(hThread);
ExitThread(0);
return 0;
}

MessageBox(hdHalfLife,"www.inexinferis.com.ar","Inexinferis Lite 2 - SXE 9.0",0);

SuspendThread(hThread);

Init();

pHLWndProc=(WNDPROC)SetWindowLongPtr(hdHalfLife,GWLP_WNDPROC,(INT_PTR)NewHLWndProc);

pglGetFloatv=(TGFV)GetProcAddress2(hModule,"glGetFloatv");
pglColor3f=(TC3F)GetProcAddress2(hModule,"glColor3f");
pglColor4f=(TC4F)GetProcAddress2(hModule,"glColor4f");
pglClearColor=(TCC)GetProcAddress2(hModule,"glClearColor");
pglBlendFunc=(TBF)GetProcAddress2(hModule,"glBlendFunc");
pglTexEnvi=(TTE)GetProcAddress2(hModule,"glTexEnvi");
pglPushMatrix=(TPM)GetProcAddress3(hModule,"glPushMatrix");
pglPopMatrix=(TPM)GetProcAddress3(hModule,"glPopMatrix");
pglEnd=(TBE)GetProcAddress2(hModule,"glEnd");
pglGetIntegerv=(TGIV)GetProcAddress2(hModule,"glGetIntegerv");
pglLineWidth=(TLW)GetProcAddress2(hModule,"glLineWidth");
pglVertex2i=(TV2I)GetProcAddress2(hModule,"glVertex2i");
pglEnable=(TGLED)GetProcAddress2(hModule,"glEnable");

pglDisable=(TGLED)DetourFunc((PBYTE)GetProcAddress(hModule,"glDisable"),(PBYTE)hglDisable,6,1);
pglVertex3f=(TV3F)DetourFunc((PBYTE)GetProcAddress(hModule,"glVertex3f"),(PBYTE)hglVertex3f,6,1);
pglVertex3fv=(TV3FV)DetourFunc((PBYTE)GetProcAddress(hModule,"glVertex3fv"),(PBYTE)hglVertex3fv,6,1);
pglBegin=(TBE)DetourFunc((PBYTE)GetProcAddress(hModule,"glBegin"),(PBYTE)hglBegin,6,1);
pglVertex2f=(TV2F)DetourFunc((PBYTE)GetProcAddress(hModule,"glVertex2f"),(PBYTE)hglVertex2f,6,1);
pglClear=(TC)DetourFunc((PBYTE)GetProcAddress(hModule,"glClear"),(PBYTE)hglClear,7,2);

//anti-anti-wallhack... GetEntityByIndex
#ifdef __GNUC__
pGetEntityByIndex=(TGEBI)DetourFunc((PBYTE)0x01D0ECC0,(PBYTE)hGetEntityByIndex,5,2);
#else
//VC Implementation
#endif

ResumeThread(hThread);
CloseHandle(hThread);
ExitThread(0);
return 0;
}

BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason, LPVOID lpvReserved){
if(fdwReason==DLL_PROCESS_ATTACH){
hMenu=LoadMenu(hInstance,MAKEINTRESOURCE(IDR_WALLMENU));
hThread=CreateThread(NULL,0,HookOpenGL,NULL,0,NULL);
}
if(fdwReason==DLL_PROCESS_DETACH){
TerminateThread(hThread,0);
DestroyMenu(hMenu);
}
return TRUE;



abrazos amigos,  ;D

Khronos14

Si no sabes programar, ¿cómo pretendes hacer un sistema de cheats? ¿copiando y pegando de otro sistema?
Cada persona debe conocer sus limitaciones...

Niko^

Cita de: Khronos14 en  9 Enero 2011, 00:05 AM
Si no sabes programar, ¿cómo pretendes hacer un sistema de cheats? ¿copiando y pegando de otro sistema?
Cada persona debe conocer sus limitaciones...
concuerdo totalmente..

karman hace los cheats en devcpp. primero tendrias que leer algun manual groso de c++ o si ya sabes lo basico estudia dll injection, (asm para ingenieria inversa supongo), glut (opengl) y no se la libreria sys me parece que es algo en relacion a los drivers. yo ni idea de esto lo digo por las librerias que utiliza :p

y boe te digo como compilarlo ¬¬ abri el devcpp archivo nuevo, dll, en el cpp copias ese codigo .. y al .h le cambias el nombre por wallhack.h pero de todas formas me parece que en el .h necesita otros defines ni idea. xD

Garfield07

En Google tiene que haber algo...
Si tienes experiencia en programacion pero se te ha ido, empieza con cosas sencillas, pero rapido no te pases siglos xD...


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

J0SS3

Hola Muchachos Buen diia! je... gracias x todas las respuestas, acepto todas las criticas, no es q kiera pasarme siglos je.. yo ssabia algo de esto, solo q se me fue con el tiempo x el fucking job! jajaja.. igual gracias a todos  ;) con respecto a lo de compilar lo del codigo... lo hicce de esa forma cambiando el nombre del Header x "wallhack.h" pero es vdd hay q agregarle otras cosillas... sino tira errores... igual, seguire intentando de nuevas formas je.


Pero con respecto a lo de los manuales, en google y en paginas extrangeras hoy en dia , no se encuentran "como hacer cheats desde 0", cosa q antes si veia, x eso aprendi. Cuando aprendi lo hice de una pagina norte americana, como tengo conocimiento en ingles, aprendi facil... pero ya no existe mas. Y en game deception n hay mas tutos como los de antes je.

Espero si alguno postea algun manual de como empezar un cheat de 0, asi me acuerdo bien bien.

Estoii intentandolo, pero se q me olvido cosas.

Aclaro q el manual de la creacion de cheats q posteo Printero hace un par de años, es muii completo... pero no dice dnd va cada codigo, q cosa va en .cpp, en .h , etc.

Algo me acuerdo, y pude compilar un par de cheats... pero estan incompletos..

je...

Bueno, espero q me puedan ayudar amiigos.

Acepto todas las criticas.. xq en estos momentos, soii un kesito para esto.

Bueno, mis saludos..


Abrazos a todos...


Jooose..  :)

Destro-

#5
je,yo estoy haciendo lo contrario :P,ya que el sxe no se puede usar en varios modos.

pd:se puede hacer este tipo de comentarios?

J0SS3

q cosa destro, q tas haciendo? je... si sabes algo de c++, te interesaria q confeccionemos un cheat?  :D

Destro-

na,yo estoy en lo contrario.Anti-Cheat,pero para los mod donde no se puede usar el sxe (zp,surf,kz,sh).

enzo8208

Holaa men! Mira yo no tengo ni idea de este tema de hack.. pero me encantaria aprender y voy a estudiar algo medio parecido. Pero tengo mis dudas.. ¿Vos que estas estudiando? ¿es mucha matematicas? ¿en que universidad estudias? queria saber mas o menos eso! Muchas gracias espero tu respuesta

david_BS

me imagino que los que quieren crear cheats debe ser para usarlos con el sXe, en ese caso les conviene entender lo que es por un lado crear un cheat y por otro lado pasar los bloqueos y las detecciones de un anticheat. Son dos cosas completamente distintas pero que se combinan para crear un cheat indetectable.

si están interesados solamente en crear hacks para cs1.6, sin la necesidad de que sean indetectables, les dejo el proyecto de mi hack:

Hurricane

lo mantuve en mantenimiento por varios años, finales del 2006 en adelante, y lo publiqué al año pasado.. compilan bien todos los proyectos de las diferentes versiones.