Un anti-cheat fonctionnant à 100%

Statut
N'est pas ouverte pour d'autres réponses.

sANCHEZ_-

POKERPADAWAN
j'aime bien "the Wall"

ca me rappel mes moments cartes magic :)
 
dommage que la thèse de base soit erronée, sinon ca aurait pu le faire =p
 
1er
OP
neku

neku

Codeur roumain
Kuzco El Lama a dit:
dommage que la thèse de base soit erronée, sinon ca aurait pu le faire =p
Soit plus clair ...
Car rien de ce qui à été dis n'est faux ...

Je sais pas pourquoi, mais c'est la deuxième fois que j'ai affaire à toi et à chaque fois tu critique sans donner de détail sur ta critique et une critique pour avoir de la valeur ce doit d'être développé...
 
bonne idee mnt reste a voir si ton projet se concrétise si les gens seront d'accord de l'utilisé regarde cheating death a une époque personne n'en voulait :/
 

TeXx

Elite
Bonne idée, reste à savoir si maintenant tu sais la réaliser ;) à suivre !
 

GUMBAL

💎💎💎💎💎
Kuzco El Lama a dit:
dommage que la thèse de base soit erronée, sinon ca aurait pu le faire =p
explique ?

Zor, on utilise pas cd, normal les lans ne le demandent pas, la plus part des leagues idem, si l'on fait une tournoi et qu'on oblige les personnes à l'avoir, elles n'auront pas d'autres choix, c'est cela ou ne pas pouvoir acceder au server, tu fais comment alors ?

Lorsque tu n'as plus le choix, c'est encore plus facile d'obliger à avoir cela.
 
neku a dit:
Soit plus clair ...
Car rien de ce qui à été dis n'est faux ...

Je sais pas pourquoi, mais c'est la deuxième fois que j'ai affaire à toi et à chaque fois tu critique sans donner de détail sur ta critique et une critique pour avoir de la valeur ce doit d'être développé...
Je dis juste que ce n'est pas parce que tu lances un anti cheat en hook cs que ca empechera un hack de fonctionner. En bricolant, il sera vite fait de contourner ton anti-cheat. Pour l'instant je vois deux méthodes possibles, mais bon c'est sur que ca arrettera la plupart des gens.





Déso de pas être naïf comme la plupart des gens, si je ne me trompe pas en plus, ce projet a déja été pensé (j'ai oublié le nom, mais tu es surement plus renseigné que moi Oo)
 
GUMBAL a dit:
explique ?

Zor, on utilise pas cd, normal les lans ne le demandent pas, la plus part des leagues idem, si l'on fait une tournoi et qu'on oblige les personnes à l'avoir, elles n'auront pas d'autres choix, c'est cela ou ne pas pouvoir acceder au server, tu fais comment alors ?

Lorsque tu n'as plus le choix, c'est encore plus facile d'obliger à avoir cela.
oui tu as raison ^^
 
1er
OP
neku

neku

Codeur roumain
Kuzco El Lama a dit:
Je dis juste que ce n'est pas parce que tu lances un anti cheat en hook cs que ca empechera un hack de fonctionner. En bricolant, il sera vite fait de contourner ton anti-cheat. Pour l'instant je vois deux méthodes possibles, mais bon c'est sur que ca arrettera la plupart des gens.





Déso de pas être naïf comme la plupart des gens, si je ne me trompe pas en plus, ce projet a déja été pensé (j'ai oublié le nom, mais tu es surement plus renseigné que moi Oo)
A savoir que les cheats utilise OpenGl pour faire Wh il suffit d'utiliser detour.h sur chaque fonction OpenGl importante (glBegin, glEnd, glViewport, glSwapBuffers,glBlendFunc, ...)
sans oublier que detours redéfini l'adresse d'une fonction ... ce qui peut pas être fait 2x dans le même processus ... Après on fait de même avec QueryPerformanceCounter qui sert à effectuer le detour OpenGl et Engine de HL1 car il est appelè juste après le chargement du moteur donc c'est juste à ce moment la qu'il faut chercher les offsets de l'engine ...
Et on fais un hook sur HW_Decode_DLL pour être sur

Car sans connaître les offsets du moteur par de hack ..
Et à la limite si on les connais on sera pas utiliser les fonctions graphique opengl

Et si l'idée d'utiliser pfnFillDraw (fonction graphique du moteur HL1) leurs viendrais un hook serais placé dessus aussi

Maintenant ne me dis pas que je raconte n'importe quoi :/

Et si cela peux faire plaisir à monsieur voila mes jumpgate et hook engine

Code:
//==================================================================================

// jumpgates...

//==================================================================================

DWORD retaddress;



__declspec( naked )void Gateway2_V_CalcRefdef( void )

{

	__asm

	{

		call PostV_CalcRefdef;

		jmp retaddress;

	}

}



DWORD CalcRef = (DWORD)&Gateway2_V_CalcRefdef;

__declspec( naked )void Gateway1_V_CalcRefdef( void )

{

	

	__asm

	{

		push esi;

		mov esi,dword ptr ss:[esp+0x10];

		push esi;

		call PreV_CalcRefdef;

		add esp,4;

		mov esi,dword ptr ss:[esp+0x0c];

		mov retaddress,esi;

		push CalcRef;

		pop esi;

		mov dword ptr ss:[esp+0x0c],esi;

		pop esi;

		ret;

	}

}



__declspec( naked )void Gateway2_CL_CreateMove( void )

{

	__asm

	{

		call CL_CreateMove;

		jmp retaddress;

	}

}



DWORD CreateMove = (DWORD)&Gateway2_CL_CreateMove;

__declspec( naked )void Gateway1_CL_CreateMove( void )

{

	

	__asm

	{

		push esi;

		mov esi,dword ptr ss:[esp+0x28];

		mov retaddress,esi;

		push CreateMove;

		pop esi;

		mov dword ptr ss:[esp+0x28],esi;

		pop esi;

		ret;

	}

}



__declspec( naked )void Gateway2_HUD_Redraw( void )

{

	__asm

	{

		call HUD_Redraw;

		jmp retaddress;

	}

}



DWORD Redraw= (DWORD)&Gateway2_HUD_Redraw;

__declspec( naked )void Gateway1_HUD_Redraw( void )

{

	__asm

	{

		push esi;

		mov esi,dword ptr ss:[esp+0x10];

		mov retaddress,esi;

		push Redraw

		pop esi;

		mov dword ptr ss:[esp+0x10],esi;

		pop esi;

		ret;

	}

}



__declspec( naked )void Gateway2_HUD_PostRunCmd( void )

{

	__asm

	{

		call HUD_PostRunCmd;

		jmp retaddress;

	}

}



DWORD PostRunCmd= (DWORD)&Gateway2_HUD_PostRunCmd;

__declspec( naked )void Gateway1_HUD_PostRunCmd( void )

{

	__asm

	{

		push esi;

		mov esi,dword ptr ss:[esp+0x38];

		mov retaddress,esi;

		push PostRunCmd

		pop esi;

		mov dword ptr ss:[esp+0x38],esi;

		pop esi;

		ret;

	}

}



__declspec( naked )void Gateway2_HUD_PlayerMove( void )

{

	__asm

	{

		call HUD_PlayerMove;

		jmp retaddress;

	}

}



DWORD PlayerMove = (DWORD)&Gateway2_HUD_PlayerMove;

__declspec( naked )void Gateway1_HUD_PlayerMove( void )

{

	

	__asm

	{

		push esi;

		mov esi,dword ptr ss:[esp+0x10];

		mov retaddress,esi;

		push PlayerMove

		pop esi;

		mov dword ptr ss:[esp+0x10],esi;

		pop esi;

		ret;

	}

}



__declspec( naked )void Gateway2_HUD_Init( void )

{

	__asm

	{

		call HUD_Init;

		jmp retaddress;

	}

}



DWORD Init = (DWORD)&Gateway2_HUD_Init;

__declspec( naked )void Gateway1_HUD_Init( void )

{

	

	__asm

	{

		push esi;

		mov esi,dword ptr ss:[esp+0x08];

		mov retaddress,esi;

		push Init

		pop esi;

		mov dword ptr ss:[esp+0x08],esi;

		pop esi;

		ret;

	}

}

extern int AddEntResult;

__declspec( naked )void Gateway2_HUD_AddEntity( void )

{

	__asm

	{

		mov AddEntResult, eax;

		call HUD_AddEntity;

		mov eax, AddEntResult;

		jmp retaddress;

	}

}



DWORD AddEnt = (DWORD)&Gateway2_HUD_AddEntity;

__declspec( naked )void Gateway1_HUD_AddEntity( void )

{

	

	__asm

	{

		push esi;

		mov esi,dword ptr ss:[esp+0x14];

		mov retaddress,esi;

		push AddEnt

		pop esi;

		mov dword ptr ss:[esp+0x14],esi;

		pop esi;

		ret;

	}

}

extern int KeyEventResult;

__declspec( naked )void Gateway2_HUD_Key_Event( void )

{

	__asm

	{

		mov KeyEventResult, eax;

		call HUD_Key_Event;

		mov eax, KeyEventResult;

		jmp retaddress;

	}

}



DWORD KeyEvent = (DWORD)&Gateway2_HUD_Key_Event;

__declspec( naked )void Gateway1_HUD_Key_Event( void )

{

	

	__asm

	{

		push esi;

		mov esi,dword ptr ss:[esp+0x14];

		mov retaddress,esi;

		push KeyEvent

		pop esi;

		mov dword ptr ss:[esp+0x14],esi;

		pop esi;

		ret;

	}

}



__declspec(naked) void NullStub()

{

	_asm ret;

}



//==================================================================================

//==================================================================================

bool ActivateClient()

{

	dwClientPtr = 0x01A179F0;



	if ( !IsBadReadPtr( ( LPCVOID )dwClientPtr, sizeof DWORD ) )

	{

		if ( *( ( DWORD* )dwClientPtr ) != NULL )

		{

			DWORD dwClientRealPtr;



			__asm {

				push eax;			

				push edx;					

				mov edx, dwClientPtr;		

				mov eax, [edx];				

				mov dwClientRealPtr, eax;	

				pop edx;					

				pop eax;					

			}



		

			memcpy( &gClient, ( LPVOID )dwClientRealPtr, sizeof CLIENT );



		

			gClient.HUD_Init =						( HUD_INIT_FUNCTION )			&Gateway1_HUD_Init;

			gClient.HUD_Redraw =					( HUD_REDRAW_FUNCTION )			&Gateway1_HUD_Redraw;

			gClient.HUD_PlayerMove =				( HUD_CLIENTMOVE_FUNCTION)		&Gateway1_HUD_PlayerMove;

			gClient.CL_CreateMove =					( HUD_CL_CREATEMOVE_FUNCTION )	&Gateway1_CL_CreateMove;

			gClient.V_CalcRefdef =					( HUD_V_CALCREFDEF_FUNCTION )	&Gateway1_V_CalcRefdef;

			gClient.HUD_AddEntity =					( HUD_ADDENTITY_FUNCTION )		&Gateway1_HUD_AddEntity;

			gClient.HUD_PostRunCmd =				( HUD_POSTRUNCMD_FUNCTION )		&Gateway1_HUD_PostRunCmd;

			gClient.HUD_Key_Event =					( HUD_KEY_EVENT_FUNCTION )		&Gateway1_HUD_Key_Event;

			

			

			DWORD dwClientNewPtr = ( DWORD ) &gClient;



			__asm {

				push eax;					

				push edx;					

				mov edx, dwClientPtr;		

				mov eax, dwClientNewPtr;	

				mov [edx], eax;				

				pop edx;					

				pop eax;				

			}



			bClientActive = TRUE;

			return TRUE;

		} else {

			return FALSE;

		}

	} else {

		return FALSE;

	}

	return TRUE;

}







//==================================================================================

//==================================================================================

bool ActivateEngine()

{

	if( pEngfuncs->pfnHookUserMsg && pEngfuncs->pfnHookEvent )

	{

		

		memcpy( &gEngfuncs, pEngfuncs, sizeof( cl_enginefunc_t ) );

		if( pStudio->GetModelByIndex )

		{

			memcpy( &IEngineStudio, pStudio, sizeof( IEngineStudio ) );

		} else {

			return FALSE;

		}



		pEngfuncs->pfnSPR_Load =				&SPR_Load;

		pEngfuncs->pfnSPR_Set =					&SPR_Set;

		pEngfuncs->pfnSPR_Draw =				&SPR_Draw;

		pEngfuncs->pfnSPR_DrawHoles =			&SPR_DrawHoles;

		pEngfuncs->pfnSPR_DrawAdditive =		&SPR_DrawAdditive;

		pEngfuncs->pfnDrawCharacter =			&DrawCharacter;

		pEngfuncs->pfnDrawConsoleString =		&DrawConsoleString;

		pEngfuncs->pfnFillRGBA =				&FillRGBA;

		pEngfuncs->pfnHookUserMsg =				&HookUserMsg;



		bEngineActive = TRUE;



	} else {

		return FALSE;

	}

	return TRUE;

}

//==================================================================================
 
écoute moi, je te dis que c'est possible à contourner. Maintenant que tu tiennes compte de mes commentaires ou pas, j'en ai rien à foutre en fait. Sors ton brol, et quand j'aurai le temps, je te montrerai qu'il ne fonctionne pas a 100% mais bien à 99%.
 
1er
OP
neku

neku

Codeur roumain
Kuzco El Lama a dit:
écoute moi, je te dis que c'est possible à contourner. Maintenant que tu tiennes compte de mes commentaires ou pas, j'en ai rien à foutre en fait. Sors ton brol, et quand j'aurai le temps, je te montrerai qu'il ne fonctionne pas a 100% mais bien à 99%.
Je vois bien que cela ne sert à rien de me fatiguer avec toi car tu n'as même pas le courage de t'expliquer donc t'es commentaire n'ont pas de valeur ... c'est comme si tu n'en avais pas.
Tu n'est même pas capable de prouver ce que tu avance...

Quand tu aura compris que tu ferais mieux de t'expliquer au lieu de parler pour rien dire tu me pm ;)
 
neku a dit:
Je vois bien que cela ne sert à rien de me fatiguer avec toi car tu n'as même pas le courage de t'expliquer donc t'es commentaire n'ont pas de valeur ... c'est comme si tu n'en avais pas.
Tu n'est même pas capable de prouver ce que tu avance...

Quand tu aura compris que tu ferais mieux de t'expliquer au lieu de parler pour rien dire tu me pm ;)
j'suis pas la pour te convaincre, juste pour t'informer.



et perso, j'ai pas envie de déballer des sources privées pour prouver que j'ai raison, je préfère m'écraser plutôt :)
 
1er
OP
neku

neku

Codeur roumain
Kuzco El Lama a dit:
j'suis pas la pour te convaincre, juste pour t'informer.

et perso, j'ai pas envie de déballer des sources privées pour prouver que j'ai raison, je préfère m'écraser plutôt :)
Hahaha pas envie de déballer des sources privées .... dis plutôt que tu crois tout savoir, mais que tu sais rien ...
En plus égoïste :/

Enfin bref ... des gars comme toi j'en croise tout les jours.
 

1mpro

Elite
Tfacon le mieux c'est de le faire puis ensuite de constaté et le perdant devra tondre le jadrin de l'autre vétu d'une robe de sa femme..
 
1er
OP
neku

neku

Codeur roumain
1mpro a dit:
Tfacon le mieux c'est de le faire puis ensuite de constaté et le perdant devra tondre le jadrin de l'autre vétu d'une robe de sa femme..
+1
Je need la robe :p
 
neku a dit:
Hahaha pas envie de déballer des sources privées .... dis plutôt que tu crois tout savoir, mais que tu sais rien ...
En plus égoïste :/

Enfin bref ... des gars comme toi j'en croise tout les jours.
J'avoue, je n'y connais rien, tu es un dieu pour l'humanité. Tu vas sauver cs grace à ton anti-cheat inviolable.



Bon allez, bonne chance pour ton anti-cheat, on en reparlera plus tard (ah non, puisque je n'y connais rien, il est inutile que je repasse sur ce post :-( )
 
1er
OP
neku

neku

Codeur roumain
Dispute de geek 0mg, je kiff trop, ca me rappel les cours de programation avec mon ami Michael Camphyn ^^ On étais tourjous occuper à coder des trucs à deux mais tourjous occuper de gueuler l'un sur l'autre car on était pas d'accord sur un truc ou l'autre...
Le bon temps :D
 

nqstoR_

Elite
Je pense comme Kuzco El Lama, c'est à dire que ton idée aurait deja étée pensée.

J'attend de voir le résultat ;).
 

sANCHEZ_-

POKERPADAWAN
Ceci dit neku, ecoutes qd mm Djau, c'est pas le dernier des noobs la dedans, crois moi niveau hax il s'y connait :-D

J'ai mm un jour vu son pote Statler colle un HS ... pour te dire sa force !

( k ) Djau

ps: bosser ensemble au lieu de crier !
 
1er
OP
neku

neku

Codeur roumain
Comme je l'ai dis à Gumball je n'ai rien envers la personne elle même mais je rage sur sa réaction, c'est le fait de dire "moi je sais, tu as tord, mais je dirai rien .." c'est ca qui me met en colère, car ne pas partager sont savoir c'est être egoïste et les personnes qui réagissent ainsi pour moi elle ne vallent pas la peine que je m'en occupe, maintenant si il désire de changer sa possition et d'expliquer même en privé sont idée je l'accepterai.
Je sais très bien que rien est infaillible mais c'est pas en restant tapi dans l'ombre aulieu d'aider que quelque chose bougera ...
Le cheat est un réel problème alors si il peut m'aider à développer ca avec d'autre solution c'est nikel, à savoir que je ne suis pas le seul à travailler sur ce projet mais que ce projet est soutenu par des personne de nexen et games-services (organisateur de l'eswc) pour qui j'ai déjà développé XStats qui à servi à receuillir les informations sur l'état des joeurs et parties Cs lors de l'évenement, pour ceux qui y sont allé il ont bien du voir le board afficher sur les écrans géant lors des matchs Cs.
Maintenant je ne suis pas la science infuse donc je ne connais pas tout, donc comme tout le monde je fais des erreurs
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut