Oh tiens un mec d'Ankama ^^
Sinon, je pense qu'il y a plusieurs aspects à considérer :
- A quel point est-il facile de décompiler ton client ? Par exemple Dofus est facile à décompiler parce que c'est codé avec Adobe Air, et les sources sont lisibles : les noms des classes et des fonctions apparaissent en clair. Ankama pourrait aussi obfusquer ses sources, mais je pense que ça compliquerait le debug etc. A l'inverse, si ton jeu est codé en C++, il est beaucoup plus dur de lire ses sources. Il y a aussi des jeux codés en js mais qui sont si obfusqués (ou juste qui sortent de emscripten) qu'il est vraiment dur de lire leur code. Tu peux également modifier régulièrement les noms de tes fonctions, introduire des mini variations de ton protocole etc…
- Est-ce que ton protocole est facile à décoder ? Dans Dofus 1, le protocole était si simple que n'importe qui aurait pu le comprendre sans même décompiler. Le protocole de Dofus est un peu plus compliqué mais il pourrait également être décodé (c'est plus difficile à comprendre si on n'a pas la correspondance id - nom du paquet, mais c'est faisable).
- Est-ce que le protocole est chiffré ? Activer ssl (ou tls ou n'importe quelle méthode pour crypter) est aussi très intéressant puisque quelqu'un aura besoin de changer la clef intégrée au client avant de pouvoir passer à l'étape précédente. Pour peu qu'il y ait quelques obfuscations dans le code ce sera pas si facile.
- Est-ce qu'un bot pixel peut facilement marcher ? Cela dépend surtout de ton jeu, c'est difficile à évaluer.
Avec ça les bots socket et MITM devraient déjà être assez occupés.
Tu peux aussi rajouter des "challenges" faciles à résoudre par ton programme / par un humain mais difficiles pour un bot : par exemple le rawdatamessage permet de vérifier l'intégrité de certains fichiers (mais ce n'est pas forcément une bonne idée de le reproduire à l'identique, certains réussissent à faire exécuter du code as arbitraire par le client). Rajouter un CAPTCHA périodiquement avec un ban pour les comptes qui ne les résolvent jamais est également envisageable, mais tu peux aussi présenter cela sous la forme de mini-jeux qui rapportent une récompense au joueur qui les résout, et qui demanderaient à un bot de pouvoir reconnaître des images.
Enfin, tu peux faire de l'analyse comportementale assez simple : quel est l'uptime de tel compte ? combien de temps y a-t-il entre ses actions ? y a-t-il des paquets mal formés ?
Il y a vraiment moyen d'être sournois et d'empêcher les gens de développer un bot en faisant des bans lors d'émission de paquets mal formés.
Je pense qu'avec ça il est vraiment très difficile de développer un bot.