Páginas: 1 [2] 3 4
|
 |
|
Autor
|
Tema: EMPEZAR A CODEAR TU PROPIO CHEAT (Half - Life) (Leído 7213 veces)
|
EL PRINTERO
Desconectado
Mensajes: 72
|
estuve probando wallhacks, es decir buscando alguno que pueda a llegar a ser "perfect" y probé el wh de opterman ese que usa engfuncs, es bueno pero tira las fps, acá dejo uno que no me tira las fps pruébenlo ustedes, es puro opengl. http://img61.imageshack.us/img61/4072/detrain0000kz5.jpg http://img61.imageshack.us/img61/3491/detrain0003ui0.jpg// hecho por sharkboy 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); }
pglBegin(mode);
|
|
|
|
|
En línea
|
TIGRE CAPO CHACA GATO
|
|
|
|
sirdarckcat
|
Si el printero quiere ayuda para hacer un hack, no esta en contra de ninguna regla. si siguen peleando, el post se va a cerrar.
|
|
|
|
|
En línea
|
|
|
|
Ferсhu
Desconectado
Mensajes: 1.221
Menos palabras y Mas codigos.
|
y ami por q me borraste el post Sdc?? jaja si yo no era el q estaba peleando.
buenoo decia q me gustaria aprender sobre la parte del juego, lo demas lo se.
y Hasta ahora solo se los conceptos basicos y "las ventajas" q se pueden obtener.
Pero nose q hay q modificar ni donde estan esos datos para modificarlos.
Saludos!!
|
|
|
|
|
En línea
|
|
|
|
EL PRINTERO
Desconectado
Mensajes: 72
|
gracias sirdarckcat, y por mi parte no hay más discusión mientras no vuelvan a referirse a mi ni incitarme para discutir. y ya no necesito ayuda ahora trataré sólo de postear cosas para mejorar el thread. para continuar con el tema, dejo como pueden hacer un nosky (aunke ya estaba explicado), pero esta ves dejo directo el code: globales: int sky = 1; bool nosky = false; en glbeginvoid APIENTRY hooked_glBegin(GLenum mode) { if(sky == 1 && mode== GL_QUADS) // No Sky { nosky = true;} else { nosky = false;}
d_glBegin(mode); }
en glvertex3fvvoid APIENTRY hooked_glVertex3fv (const GLfloat *v) { if(nosky == true) { return; } d_glVertex3fv(v); }
y en glclearvoid APIENTRY hooked_glClear (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);
} d_glClear(mask); }
|
|
|
|
« Última modificación: 14 Septiembre 2007, 05:50 por el printero »
|
En línea
|
TIGRE CAPO CHACA GATO
|
|
|
Ferсhu
Desconectado
Mensajes: 1.221
Menos palabras y Mas codigos.
|
aver...yo te digo con ojo de kien no conoce el tema.....con cambiar una variable cambias la configuracion??? no me suena logico.
es decir sky la estas declarando osea la creas vos y la otra tambien, en donde modificas el codigo del juego, o de opengl. me explicas por q eso no tiene mucho sentido?
|
|
|
|
|
En línea
|
|
|
|
EL PRINTERO
Desconectado
Mensajes: 72
|
escuchá cuando vos iniciás el juego, se alistan todos los módulos en cuestión, entonces cuando abrís el juego, lo q ocurre es que las funciones del motor del juego y las de opengl hacen su trabajo. es decir te rellenan con texturas, dibujan, permiten el movimiento de los jugadores, manejo de sonidos, etc absolutamente todo. entonces vos lo que tenés que hacer es lógicamente usar esas funciones si tenés pensado modificar algo, bueno para eso te escribís un hack en el cual llamás a esas funciones, ponés tu code para lo que quieras que hagan, y luego las usás llamándolas.. algo así como este ejemplo con HUD_Redraw
nuestra HUD_Redraw es llamada
llamamos a la HUD_Redraw original y guardamos el valor de retorno como un entero.
ponemos nuestro code después que HUD_Redraw ha finalizado
retornamos al caller, con el valor de retorno de la HUD_Redraw original.
entendés la idea, entonces de esto se trata y de ninguna otra cosa, sólo hacés hooking, pero lo que tenés que hacer es escribir en memoria tu code, para eso inyectás una dll en el espacio de memoria del juego, por ejemplo en el proceso del half life, entonces de esa forma vas a poder interceptar o llamar a las funciones originales, poner tu code y luego llamarlas de vuelta.. entendés se trata de eso. y sobre las funciones opengl ya están disponibles entre las dlls del juego y las hookeás a cada una usando winapi. cualquier duda preguntá pero tratá de mirar código también...
|
|
|
|
|
En línea
|
TIGRE CAPO CHACA GATO
|
|
|
Ferсhu
Desconectado
Mensajes: 1.221
Menos palabras y Mas codigos.
|
aver eso lo entiendo pero yo lo q veo ahi es q creaste tus propias funciones, y luego llamas a la original sin cambiarle los datos....(eso no entiendo) es decir yo espero algo asi en pseudocodigo... funcion hook_cielo(visible as boolean){ si visible=true entonces pones visible=false cielo_original(visible); return; } pero en ningun momento modificas nada de la original void APIENTRY hooked_glVertex3fv (const GLfloat *v) { if(nosky == true) { return; } d_glVertex3fv(v); } a mi entender esta es la original d_glVertex3fv(v);, cuando nosky esta en true la funcion cuando es llamda no hace nada. osea q la funcion d_glVertex3fv solo sirve para modificar el cielo?? asi tan simple. Y solo modificas nosky (creada por vos) en una parte pero nunca la pasas como parametro.
|
|
|
|
« Última modificación: 14 Septiembre 2007, 07:44 por <~>FeRcHu<~> »
|
En línea
|
|
|
|
De@th (L1zb3th)
TROLL
Desconectado
Mensajes: 619
<-[Rin]->
|
aver eso lo entiendo pero yo lo q veo ahi es q creaste tus propias funciones, y luego llamas a la original sin cambiarle los datos....(eso no entiendo) es decir yo espero algo asi en pseudocodigo... funcion hook_cielo(visible as boolean){ si visible=true entonces pones visible=false cielo_original(visible); return; } pero en ningun momento modificas nada de la original void APIENTRY hooked_glVertex3fv (const GLfloat *v) { if(nosky == true) { return; } d_glVertex3fv(v); } a mi entender esta es la original d_glVertex3fv(v);, cuando nosky esta en true la funcion cuando es llamda no hace nada. osea q la funcion d_glVertex3fv solo sirve para modificar el cielo?? asi tan simple. Y solo modificas nosky (creada por vos) en una parte pero nunca la pasas como parametro. hookeo una funcion de opengl, o sea, si en el cheat se puso NoSky, hace el return sin llamar a la funcion de OpenGL,caso contrario, dibuja el cielo ... que se suele hacer usando esa funcion ... NoSky debe ser global, obvio que no se pasa como parametro xD Au Revoir !
|
|
|
|
|
En línea
|
|
|
|
Ferсhu
Desconectado
Mensajes: 1.221
Menos palabras y Mas codigos.
|
entonces d_glVertex3fv solo es para dibujar el cielo....y para nada mas??
nosky es global....pero de su modulo por q el la crea. Solo esta para uso propio
quiero creer q declaro 2 variables y 3 funciones para tener la posiblidad de activar y desactivar por q sino es algo tan simple como hookear glVertex3fv y poner return y chau.
|
|
|
|
|
En línea
|
|
|
|
®®
Colaborador
Conectado
Mensajes: 5.269
|
claro hookeas pero tienes que poder activar y desactivar el cheat. digamos que son variables de configuracion no hay que pasarlas como parametro simplemente comprobar su estado.
|
|
|
|
|
En línea
|
|
|
|
EL PRINTERO
Desconectado
Mensajes: 72
|
estaba aburrido y me puse a boludear con el cs, y probé este code para wiremodels haha es divertido pero no sirve para nada... if(mode != GL_POLYGON && (mode==GL_TRIANGLES||mode==GL_TRIANGLE_STRIP||mode==GL_TRIANGLE_FAN)) { glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); glLineWidth(2); } else { glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); } http://img208.imageshack.us/img208/4807/csmilitia0000gc1.jpghttp://img208.imageshack.us/img208/7484/csmilitia0006km7.jpgcol, y pudiste avanzar algo con pasar el sXe  ese anticheat realmente me cansó, no puedo creer que un anticheat dure tanto grrrrrr encima es duro, ni los coders famosos han sacado nada efectivo todavia. algo como un emulador no.
|
|
|
|
|
En línea
|
TIGRE CAPO CHACA GATO
|
|
|
®®
Colaborador
Conectado
Mensajes: 5.269
|
he llegado a injectar mi wh, pero se chapa el sxe con exception not handled despues de empezar a decir como un loko "INDEX N INDEX N" y peta el sxe jeje. se ve que detecta el hook en modo usuario, pero he pensado otra cosa y ya tengo casi todo el codigo escrito, digamos que es aislar el proceso de momento ni process explorer ni otros similares pueden cerrar el proceso lo aplicare a este caso a ver que tal.
|
|
|
|
|
En línea
|
|
|
|
EL PRINTERO
Desconectado
Mensajes: 72
|
|
|
|
|
|
En línea
|
TIGRE CAPO CHACA GATO
|
|
|
EL PRINTERO
Desconectado
Mensajes: 72
|
aimbot en kernelmode con funciones del juego (HL1) --> snippet esto lo extraje de un post de ORGANNER que es el hombre que en estos momentos fabrica los cheats en kernelmode y los vende, aunke también hace algunos para el público... acá nos da una idea de como ir haciendo algo no es mucho pero es algo lo mismo si en la web hay algo www.organner.pl---- primero necesitamos un lugar para ejecutar nuestro code, el mio es NtUserValidateHandleSecure porque es llamado en HUD_Redraw. vas a necesitar hookear NtUserValidateHandleSecure y obtener un puntero a NtGetAsyncKeyState, ambas están guardadas en win32k.sys DWORD new_NtUserValidateHandleSecure( DWORD dwUnknown ) { GetProcessName(szProcName);
if( !strcmp(szProcName, "hl.exe") ) { if( NtGetAsyncKeyState(iTranslateKey(g_CVAR.PanicKey)) < 0 ) { if( !g_bPanicKey ) { g_bPanicKey = TRUE;
if( !g_bCheatActive ) { g_bCheatActive = TRUE; } else { g_bCheatActive = FALSE; } } } else { g_bPanicKey = FALSE; }
if( NtGetAsyncKeyState(iTranslateKey(g_CVAR.AimKey)) < 0 ) { bAiming = TRUE; } else { bAiming = FALSE; }
__try { if( !enginefunc_ptr ) enginefunc_ptr = (cl_enginefunc_t*)g_CVAR.dwEngineFuncsPtr; if( !studio_api_ptr ) studio_api_ptr = (engine_studio_api_t*)g_CVAR.dwStudioPtr; if( !playermove_ptr ) playermove_ptr = (playermove_t*)g_CVAR.dwPlayerMovePtr; if( !fov_pointer ) fov_pointer = g_CVAR.dwFovPtr;
if( g_bCheatActive ) { if( enginefunc_ptr != 0 && playermove_ptr != 0 && studio_api_ptr != 0 ) { if( enginefunc_ptr->GetLocalPlayer() != NULL ) { if( g_CVAR.Aimbot ) { pTargetEntity = NULL; }
for(i = 1; i < 33; i++) { pEntity = enginefunc_ptr->GetEntityByIndex(i);
if( !pEntity || !pEntity->player ) continue;
enginefunc_ptr->pfnGetPlayerInfo(pEntity->index, &pEntityInfo);
if( pEntityInfo.thisplayer ) { if( pEntityInfo.model != 0 && pEntityInfo.model[0] != 0 ) { g_iPlayerTeam = iGetTeam(pEntityInfo.model); } } else { if( pEntity->curstate.solid && pEntity->curstate.messagenum + 5 > enginefunc_ptr->GetLocalPlayer()->curstate.messagenum ) { if( pEntityInfo.model != 0 && pEntityInfo.model[0] != 0 ) { iCurrentEntityTeam = iGetTeam(pEntityInfo.model); }
if( g_iPlayerTeam != iCurrentEntityTeam ) { if( g_CVAR.Aimbot && enginefunc_ptr->GetLocalPlayer()->curstate.solid ) { bContinue = TRUE;
if( !g_CVAR.ThruWall ) { enginefunc_ptr->pEventAPI->EV_LocalPlayerViewheight(Temp);
Temp[0] += enginefunc_ptr->GetLocalPlayer()->origin[0]; Temp[1] += enginefunc_ptr->GetLocalPlayer()->origin[1]; Temp[2] += enginefunc_ptr->GetLocalPlayer()->origin[2];
enginefunc_ptr->pEventAPI->EV_SetTraceHull(2); enginefunc_ptr->pEventAPI->EV_PlayerTrace(Temp, pEntity->origin, PM_GLASS_IGNORE, enginefunc_ptr->GetLocalPlayer()->index, &PlayerTrace);
if( &PlayerTrace != NULL ) { if( PlayerTrace.fraction != 1.0f ) { bContinue = FALSE; } } }
if( bContinue ) { CalculateAiming(pEntity, Temp);
if( bCalcScreen(Temp, ScreenPos) ) { if( (ScreenPos[0] >= g_iCenterX - g_CVAR.Fov) && (ScreenPos[0] <= g_iCenterX + g_CVAR.Fov) && (ScreenPos[1] >= g_iCenterY - g_CVAR.Fov) && (ScreenPos[1] <= g_iCenterY + g_CVAR.Fov) ) { pTargetEntity = pEntity; } } } } } } } }
if( g_CVAR.Aimbot && enginefunc_ptr->GetLocalPlayer()->curstate.solid ) { if( bAiming && pTargetEntity != NULL ) { bDisableAim = FALSE;
if( !bDisableAim ) { LocalToTarget(pTargetEntity, Temp); VectorAngles(Temp, AimViewAngels);
AimViewAngels[0] *= -1;
if(AimViewAngels[0] > 180) AimViewAngels[0] -= 360;
if(AimViewAngels[1] > 180) AimViewAngels[1] -= 360;
enginefunc_ptr->SetViewAngles(AimViewAngels); } } } } } } } __except(EXCEPTION_EXECUTE_HANDLER) { return org_NtUserValidateHandleSecure(dwUnknown); } }
return org_NtUserValidateHandleSecure(dwUnknown); }
+ OGC CODE:
VOID CalculateAiming(cl_entity_t* pEntity, float* out) { vec3_t vecEnd, up, right, forward, angels; if( pEntity == 0 ) return;
out[0] = pEntity->origin[0]; out[1] = pEntity->origin[1]; out[2] = pEntity->origin[2];
enginefunc_ptr->pfnAngleVectors(pEntity->angles, forward, right, up); forward[2] = -forward[2];
if( pEntity->curstate.usehull ) { out[0] = out[0] + forward[0] * g_CVAR.vDuck_f + up[0] * g_CVAR.vDuck_h + right[0] * g_CVAR.vDuck_r; out[1] = out[1] + forward[1] * g_CVAR.vDuck_f + up[1] * g_CVAR.vDuck_h + right[1] * g_CVAR.vDuck_r; out[2] = out[2] + forward[2] * g_CVAR.vDuck_f + up[2] * g_CVAR.vDuck_h + right[2] * g_CVAR.vDuck_r; } else { out[0] = out[0] + forward[0] * g_CVAR.vStand_f + up[0] * g_CVAR.vStand_h + right[0] * g_CVAR.vStand_r; out[1] = out[1] + forward[1] * g_CVAR.vStand_f + up[1] * g_CVAR.vStand_h + right[1] * g_CVAR.vStand_r; out[2] = out[2] + forward[2] * g_CVAR.vStand_f + up[2] * g_CVAR.vStand_h + right[2] * g_CVAR.vStand_r; } }
VOID LocalToTarget(cl_entity_t* pEntity, float* out) { vec3_t view_ofs, EntViewOrg;
if( pEntity == 0 ) return;
CalculateAiming(pEntity, EntViewOrg);
enginefunc_ptr->pEventAPI->EV_LocalPlayerViewheight(view_ofs);
out[0] = EntViewOrg[0] - (enginefunc_ptr->GetLocalPlayer()->origin[0] + view_ofs[0]); out[1] = EntViewOrg[1] - (enginefunc_ptr->GetLocalPlayer()->origin[1] + view_ofs[1]); out[2] = EntViewOrg[2] - (enginefunc_ptr->GetLocalPlayer()->origin[2] + view_ofs[2]); }
|
|
|
|
« Última modificación: 09 Diciembre 2007, 03:06 por El PrInTeRo »
|
En línea
|
TIGRE CAPO CHACA GATO
|
|
|
K-19
Desconectado
Mensajes: 464
Sarah Wayne
|
Me interesa bastante el tema de los chetos para hl, pero mis conocimientos en C/C++ son nulos  Haber si me leo algún texto para comienzos en C/C++
|
|
|
|
|
En línea
|
|
|
|
|
Páginas: 1 [2] 3 4
|
|
|
|