Décryptage MMORPG Protocole de Codage
Je plan sur la rédaction d'un robot de recherche automatisé pour un jeu.
La partie la plus délicate est de savoir comment ils ont codé leur protocole... Pour faire le bot courir autour de est facile, il suffit de rendre le personnage exécuter et enregistrer ce qu'il fait dans wireshark. Cependant, l'interprétation de l'environnement est plus difficile... Il reçoit environ 5 paquets, chaque seconde, si vous êtes inactif, donc beaucoup de garbarge.
Mon plan: Parce que le jeu fonctionne sous TCP, je vais utiliser freecap (http://www.freecap.ru/eng) pour forcer le jeu pour vous connecter à un proxy en cours d'exécution sur ma machine. J'aurai besoin de ce proxy pour être capable de l'injection de paquets, ou peut-être un serveur qui est capable de renvoyer les paquets capturés. De cette façon, je peux recréer et bricoler avec ce que le serveur envoie, et de comprendre leur protocole de codage.
- Personne ne sait où je peux obtenir un proxy qui permet l'injection de paquets ou où je peux effectuer l'injection de paquets (pas via le matériel, comme c'est le cas avec ou sans fil, n'importe quoi!)
- Où de si je peux trouver un serveur proxy, qui renvoie les paquets capturés (ie: les replays une connexion).
- Mieux d'outils ou de méthodologies pour la correspondance de modèle? Quelque chose qui peut mettre en évidence des motifs à partir de plusieurs messages.
OU, est-il une meilleure façon de déchiffrer ce ici? Éventuellement un dissasembly stratégie (via l'accrochage d'un winsock fonction et de départ de la dissassembly à partir de là) ? Je n'ai pas fait avant, donc je ne suis pas sûr. OU , d'autres idées?
OriginalL'auteur Zombies | 2009-02-12
Vous devez vous connecter pour publier un commentaire.
Réseau de trafic d'interception et d'analyse de protocole est généralement la moins favorisée de la méthode pour accomplir votre but ici. Pour la plupart des jeux modernes, le chiffrement est un facteur sérieux, et il y a de graves maux de tête associés à l'analyse de protocole pour tout, mais trivial facteurs les plus courantes gameplay scénarios.
Plus modernes implémentations* de ce que vous essayez de faire de s'appuyer sur la lecture et la manipulation de l'espace de la mémoire et des processus de l'exécution d'un client. Le client aura déjà fait toutes les parties dures pour vous, y compris de déchiffrer le trafic et le tri en beaucoup plus facile à lire structures de données. Pour interagir avec le serveur, vous pouvez appeler des fonctions intégrées dans le client au lieu de l'artisanat de l'ensemble de la série de paquets à partir de zéro. Le plus de cette approche est que vous avez à faire beaucoup moins de travail pour interpréter les données et de produire de l'activité. Du moins, c'est qu'il y a souvent des données dans le réseau de circulation qui pourraient être utiles à un bot, mais est éliminé par le client, ou que vous souhaitez envoyer le trafic vers le serveur que le client ne peut pas produire (ce qui, dans mon propre bien développé de la hiérarchie, est à quelques pas plus loin sur la "tricherie" de la pente).
*...Je dis cela après avoir vu l'évolution de la majorité des MMORPG bot/piratage communautés de protocole réseau analyseurs comme ShowEQ et Odin Yeux /Excalibur à base de mémoire des applications comme MacroQuest et InnerSpace. Sur cette note, InnerSpace fournit un excellent cadre extensible pour la mémoire de traitement variante de ce que vous essayez, et vous devriez vous en tant que base pour votre projet, si vous abandonnez le réseau approche de l'analyse.
Votre question implique un malentendu. Pour autant que je sache, personne n'a jamais déchiffrer un code source fermé jeu MMO protocole suffisamment pour remplacer le client avec un autonome bot. Chaque mise en œuvre que j'ai vu, de réseau ou de mémoire de base, exige que le client d'origine pour être en cours d'exécution.
Hm, j'ai vu beaucoup de robots qui semblent être conscients de leur environnement et de savoir comment aller à des endroits. Je suppose qu'ils savent comment voir les x/y coords que le serveur indique au client où le joueur char est.
Ils ont lu le x/y coords de le trafic réseau vers le client ou à partir de la mémoire du client. De toute façon, le client est toujours en cours d'exécution.
Peut-être qu'ils exécuter plusieurs machines virtuelles, parce que normalement, je vois comme 4-6 à la fois.
OriginalL'auteur
Comme je l'ai fait un peu de jeu robots dans le passé (pour le fun, pas de profit ou de griefing de cours - rédaction de bots jeu est un beaucoup de plaisir), je recommande ce qui suit:
Dans la plupart des scénarios, le plus cool des méthodes (code de la rétro-ingénierie et accès direct à la mémoire) ont tendance à être les moins productives. Ils exigent beaucoup de compétence (pour comprendre le code) et dans le temps, à la fois initiale (aller à travers tout le code et de le développer du code pour interagir avec la structure de données) et de maintenance (dans le cas où le jeu est en cours de mise à jour). (Bien sûr, parfois, ils ne permettent de faire des trucs cool qui est impossible à faire avec le client officiel, mais la plupart du temps, c'est évident que flagrante tricherie, et susceptible d'attirer la GMs rapidement). La plupart du temps, les robots sont fait en remplaçant les graphismes du jeu/des textures avec des aplats de couleurs, et la création de simple "pixel" les robots de recherche pour certaines couleurs sur l'écran et de réagir en conséquence (par exemple, cliquez sur eux).
Espère que cette aide, et rappelez - vous que la tricherie est amusant quand il ne rend pas le jeu moins amusant pour tout le monde 😉
Bien sûr. Vous pouvez utiliser n'importe quel nombre de méthodes, en commençant avec la virtualisation complète (de l'exécution de chaque copie dans une machine virtuelle, pour une meilleure compatibilité), l'exécutant sur différents ordinateurs de bureau ou des sessions de terminal, ou tout simplement de cacher la fenêtre avec ShowWindow() la fonction selon le jeu.
>Si il n'y a pas de triche de protection vous empêche de le faire, je ne comprends pas très bien. Parlez-vous de la troisième partie de la mémoire de programmes de surveillance? Sont-ils vraiment travailler assez bien pour éviter cela complètement ou sont-ils simplement la liste noire de certains programmes de la mémoire?
Les plus populaires sont ceux qui font les deux. La plupart d'entre eux utilisent un ensemble de générique des méthodes de protection, telles que la surveillance de la fonction de l'API adresses (pour contrecarrer l'API crochets), ou même d'en charger un pilote en mode noyau pour obtenir un plus haut degré de contrôle sur le système.
Ils ont généralement également analyser les processus en cours d'exécution pour certaines chaînes, afin d'identifier les processus qu'ils ne voudrais pas voir en cours d'exécution sur votre système (par exemple, le débogage et la rétro-ingénierie d'outils).
OriginalL'auteur
A) je joue à un MMO et ne prennent pas en charge les bots, droit de vote...
B) Télécharger Backtrack v. 3, exécutez une arpspoof sur votre passerelle par défaut et votre hôte. Il y a une application qui va usurper l'hôte distant du SSL cert sslmitm (je crois que c'est le nom) ce qui vous permettra de créer une connexion complète par le biais de votre hôte. Puis fireup tcpdump/ethereal/wireshark (choisissez votre ppce poison) et de se déplacer autour de faire des trucs aléatoires pour trouver ce paquet fait quoi. Qui sera votre plus grand défi; mais le proxy avec un Homme au Milieu attaque sur vous-même est le chemin à parcourir.
C) je ne tolère pas cette activité, cette information est uniquement fourni à titre d'information gratuit.
Haha, je vous remercie de votre avis; et les bots sont la raison pour laquelle vous pouvez jouer à de nombreux MMO. Mais j'ai effectivement voté cet article. La raison pour laquelle je place voté à la place? Parce que mon parcours est dans la sécurité du réseau, donc j'aime casser les protocoles réseau. Le décodage de protocoles, c'est AMUSANT!!
Suroot -- ce qui est une bonne méthode pour l'analyse de divers paquets et de les comparer simultanément... je suppose que je suis un peu comme un au-delà de comparer plusieurs fichiers...
D) Promets-moi de ne pas le faire. 🙂
Je dirais qu'à l'aide de tcpdump et la lecture de la .fichier pcap avec ethereal (maintenant Wireshark) pour voir ce qui se passe dans le flux tcp.
OriginalL'auteur
Il y a probablement un peu des hypothèses raisonnables, vous pouvez faire ce que devrait simplifier votre tâche énormément. Toutefois, pour utiliser le meilleur d'entre eux, vous aurez probablement besoin de plus de confort avec des manches roulées à la programmation qu'on dirait que vous avez.
Tout d'abord, il y a fort à parier que le chiffrement ils utilisent tombe dans l'une des trois catégories suivantes:
De la cote du moyen de cas est très faible.
Ensuite, il y a fort à parier que les paquets sont chiffrés /déchiffré près du bord du programme (à droite d'arrivée, avant de sortir) et que le corps du jeu traite avec eux sous forme décryptée.
Enfin, le protocole qu'ils utilisent le plus probable consiste en
Afin de faire un peu de reniflage de paquets avec un jeu de cartes en mode promiscuous non chiffrées ascii. Si vous voyez quelques, grands, vous êtes en avance sur le jeu. Mais si vous ne donnez pas vers le haut l'ensemble de l'tapant sur la ligne d'idée et au lieu de commencer à suivre le code de retour de l'envoi de données par breakpointing et pas à pas avec un débogueur. La Figure la couche la plus externe ou trois seront réseau standard trucs, puis viendra la couche de cryptage, et, au-delà de l'énorme masse de choses qui traite avec le protocole non chiffré.
Vous devriez être en mesure d'obtenir ce bien, dans une heure si vous êtes chauds, un week-end si vous êtes raisonnablement qualifié, motivé et assidu, et jamais si vous êtes désespéré. Mais il est, en principe, possible (et sans doute beaucoup plus facile dans la pratique) de faire de cette façon.
Une fois que vous obtenez à l'endroit où quelque chose qui ressemble non chiffrés goo vient, se mungled, et la mungled va, puis commencent à s'inquiéter de ce que cela signifie.
-- MarkusQ
le chat et le jeu peuvent être sur des canaux différents, avec des protocoles différents.
RG est en droit, mais aussi longtemps que vous faites des progrès, garder à elle. L'astuce consiste à identifier correctement lorsque vous êtes aboiements le mauvais arbre et d'essayer quelque chose d'autre, sans abandonner chaque fois que vous frappez un dos d'âne.
OriginalL'auteur
Sonne comme il n'y a pas de cryptage, alors vous pourriez faire une approche en réseau.
Un excellent endroit pour commencer serait de trouver le paquet ID - la plupart du temps, quelque chose près de l'avant du paquet va être un ID de type de paquet. Par exemple, pourrait être de 1, tirer tiré pourrait être "2", le chat pourrait être "4".
Vous pouvez écrire votre propre proxy qui écoute sur un port de votre jeu pour se connecter, puis se connecte au serveur. Vous pouvez faire des combinaisons de touches à votre mandataire de déclencher des commandes, ou vous pouvez faire votre proxy écrire les informations de débogage pour vous aider à aller plus loin.
(J'ai écrit un bot pour un en ligne dans le jeu en PHP - de toutes choses.)
OriginalL'auteur