Un anti-cheat fonctionnant à 100%

Discussion dans 'Action, Shooters' créé par neku, 30 Août 2006.

Statut de la discussion:
Fermée.
  1. Offline
    sANCHEZ_- POKERPADAWAN
    j'aime bien "the Wall"

    ca me rappel mes moments cartes magic :)
    sANCHEZ_-, 31 Août 2006
    #21
  2. Offline
    Kuzco El Lama Bazinga!
    dommage que la thèse de base soit erronée, sinon ca aurait pu le faire =p
    Kuzco El Lama, 31 Août 2006
    #22
  3. Offline
    neku Codeur roumain
    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é...
    neku, 31 Août 2006
    #23
  4. Offline
    ZOR_ *
    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 :/
    ZOR_, 31 Août 2006
    #24
  5. Offline
    TeXx Elite
    Bonne idée, reste à savoir si maintenant tu sais la réaliser ;) à suivre !
    TeXx, 31 Août 2006
    #25
  6. Offline
    GUMBAL 1337
    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.
    GUMBAL, 31 Août 2006
    #26
  7. Offline
    Kuzco El Lama Bazinga!
    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)
    Kuzco El Lama, 31 Août 2006
    #27
  8. Offline
    ZOR_ *
    oui tu as raison :p
    ZOR_, 31 Août 2006
    #28
  9. Offline
    neku Codeur roumain
    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;
    
    }
    
    //==================================================================================
    
    neku, 31 Août 2006
    #29
  10. Offline
    Kuzco El Lama Bazinga!
    é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%.
    Kuzco El Lama, 31 Août 2006
    #30
  11. Offline
    neku Codeur roumain
    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, 31 Août 2006
    #31
  12. Offline
    Kuzco El Lama Bazinga!
    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 :)
    Kuzco El Lama, 31 Août 2006
    #32
  13. Offline
    neku Codeur roumain
    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.
    neku, 31 Août 2006
    #33
  14. Offline
    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..
    1mpro, 31 Août 2006
    #34
  15. Offline
    neku Codeur roumain
    +1
    Je need la robe :p
    neku, 31 Août 2006
    #35
  16. Offline
    Kuzco El Lama Bazinga!
    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 :-( )
    Kuzco El Lama, 31 Août 2006
    #36
  17. Offline
    neku Codeur roumain
    Dispute de geek 0mg, je kiff trop, ca me rappel les cours de programation avec mon ami Michael Camphyn :p 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
    neku, 31 Août 2006
    #37
  18. Offline
    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 ;).
    nqstoR_, 31 Août 2006
    #38
  19. Offline
    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 !
    sANCHEZ_-, 31 Août 2006
    #39
  20. Offline
    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
    neku, 31 Août 2006
    #40
Statut de la discussion:
Fermée.