web-dev-qa-db-fra.com

Comment fonctionne le hack de vitesse de CheatEngine?

Cheat Engine est livré avec une fonctionnalité appelée speed hack qui peut essentiellement ralentir ou augmenter la vitesse du jeu. En fait, non seulement les jeux, s'il existe un logiciel avec une horloge qui le fait fonctionner, cela peut également accélérer cela. Comment ça marche? Je pourrais imaginer qu'il y a une horloge interne sur laquelle ces choses fonctionnent, mais je ne sais pas comment ces choses se produisent à bas niveau.

Bien que cette fonctionnalité ait fonctionné sur la plupart des jeux que j'ai essayés, elle a également échoué sur de nombreux jeux, par exemple pour NFS Most. Pourquoi? Y a-t-il un mécanisme différent sur lequel ces jeux fonctionnent ou c'est juste un anti-triche?

24
Shubham

Moteurs de triche Vieux Speedhack:

  • Exécute l'application dans un thread de très haute priorité
  • Utilise le sommeil programmé pour accélérer le jeu
  • Lorsqu'une fonction est appelée, elle reçoit un temporisateur émulé qui est accéléré

Moteurs de triche Nouveau Speedhack:

  • Lorsque la DLL de vitesse de Cheat Engine est injectée dans le programme, elle est modifiée à la vitesse que vous avez sélectionnée dans le panneau Cheat Engine
  • Définit une référence de base de l'heure actuelle
  • temps retourné = basetime + ((currenttime-basetime) * speed

Détection:

  • Les deux méthodes sont faciles à détecter en envoyant un paquet avec le temps toutes les deux secondes à valider par un serveur
  • Le jeu peut détecter la DLL injectée

Source: http://wiki.cheatengine.org/index.php?title=Cheat_Engine:Internals#Speedhack

17
Harold

Trois ans plus tard, je pense que j'en sais assez pour répondre à ma propre question. :)

Un programme informatique communique généralement avec le noyau en utilisant des fonctions prédéfinies appelées appels système. Chaque système d'exploitation a un ensemble d'appels différent, mais souvent, ils font des choses similaires, comme allouer de la mémoire, lire et écrire des fichiers ou gérer des processus. Selon cette page , il y a environ 480+ appels système dans le noyau Windows NT.

Pour tout objectif qui concerne le matériel, les programmes ont généralement recours aux appels système, car c'est ce que le système d'exploitation fait le mieux et l'une de ces choses est de connaître le temps. Les jeux informatiques doivent souvent rendre 60 images/seconde et pour y arriver, ils doivent appeler la fonction de rendu toutes les 16,6 ms . Sous Windows, " GetTickCount () " est généralement utilisé pour cela, qui renvoie le nombre de millisecondes écoulées depuis la fin de Windows ("Si aucun millisecondes écoulé depuis le dernier décompte est supérieur à 16 ms , restituez un nouveau cadre sinon continuez. ").

SpeedHacking, en général, fonctionne en injectant du code dans le processus en cours et en piratant les fonctions de chronométrage pour renvoyer des "ticks" accélérés/ralentis pour modifier la vitesse d'exécution du programme.

Bien que je ne puisse pas être sûr de la façon exacte dont CE y est parvenu (le code source est assez difficile à comprendre), mais un autre programmeur a réalisé une chose similaire ( vidéo ) sous Linux. Dans le code source , vous pouvez voir comment l'auteur a modifié un appel système similaire pour Linux (" gettimeofday () ") pour cela.

go gettimeofday_orig;

int val;
gettimeofday_orig=(go)dlsym(RTLD_NEXT,"gettimeofday");

if (!timezero)
{
    timezero = new timeval;
    val = gettimeofday_orig(timezero,tz);
    (*tv) = (*timezero);
    return val;
}

Je ne sais pas comment il est détecté mais j'irais avec l'idée de @ Harold que le jeu repère probablement le DLL se faisant injecter.

12
Shubham

Je pense que la raison pour laquelle cela ne fonctionne pas dans certaines applications (principalement des jeux) est que certains jeux relient l'horloge du jeu aux images par seconde. Par conséquent, votre jeu ralentira ou plantera si vous essayez de le pirater rapidement.

Source: http://hackerbot.net/tutorials/353-speed-up-hack-slow-down-cheat

Personnellement, je n'ai rencontré que très peu de jeux qui ne réagiraient pas au speedhack. Même s'ils sont liés au FPS, vous pouvez toujours l'accélérer dans une certaine mesure.

4
Techinator