JustNao / Karrelage

MITM pour Dofus 2.XX
17 stars 8 forks source link

Question Build Protocol. Erreur sniff #3

Closed xenouch closed 9 months ago

xenouch commented 9 months ago

Salut,

Petite question, j'utilise tes scripts afin de build mon protocole.pk.

Mon bat pour décompiler le dofusInvoker

set dofInvoker="DofusInvoker.swf"
set pathDecompile="protocol" 

ffdec.exe -config parallelSpeedUp=0 -selectclass com.ankamagames.dofus.BuildInfos,com.ankamagames.dofus.network.++,com.ankamagames.jerakine.network.++ -export script %pathDecompile% %dofInvoker% 

J'utilise ensuite python build_protocol.py

Afin de créer mon protocol.pk dcxddd

Mon fichier protocol.pk fait 409ko et j'ai énormément de crash avec le sniffer notamment avec les packet "MapComplementaryInformationsDataMessage".

Cependant avec ton protocol.pk que tu as commit hier je n'ai aucun crash.

Le tient fais 419ko et je souhaitais savoir la cause des différentes tailles et des crash. old

D'avance merci

JustNao commented 9 months ago

Quelle erreur est-ce que tu as quand ça crash ? Si ça vient de tes MapComplementaryInformationsDataMessage, ça vient sûrement des ressources de jeu qui ne sont pas à jour (i.e. un nom de monstre inconnu qui fait crash le traitement du packet). Tu ne rencontre pas de crash avec l'ancien protocol.pk parce qu'il n'est pas à jour, donc ne trigger pas la fonction de handle, donc ne crash pas aux monstres inconnus. Télécharge la dernière version de Karrelage, j'ai mis hier à jour les ressources de jeu.

xenouch commented 9 months ago

Justement je n'ai aucune erreur quand j'utilise le protocol.pk que tu as update hier.

J'ai des erreurs quand j'utilise mon propre protocole.pk en compilant les sources que j'ai décompiler du dofusinvoker de la 2.69.2.4.

Souhaitant être dépendant des maj du protocol.pk j'essaie de savoir d'où cela peut venir. Surtout que j'utilise les scripts que tu fournis

JustNao commented 9 months ago

La taille du protocol.pk varie de jour en jour, ils peuvent faire des modifications à tout moment sur le contenu de DofusInvoker sans toucher aux ids ou structures des packets, surtout en ce moment où ils peuvent avoir à patch des trucs par ci par là avec Osatopia 2. Par exemple là si je recompile, mon protocol fait 415 Ko, mais la version à 419 Ko et 415 Ko marchent bien l'une comme l'autre. Quelle erreur précisément est-ce que tu as quand tu crash avec ta version du protocol.pk ?

xenouch commented 9 months ago

ERROR

La j'étais sur Labot,m et elle provient du packet: "MapComplementaryInformationsDataMessage". Sur karrelage j'ai ce type d'erreur.

Je comprend mais mon protocol.pk devrais fonctionner comme le tiens.

Édit: Je n'avais pas de problème avec mes build du protocole.pk jusqu'à présent. Le problème est depuis la maj 2.69.

Possible d'avoir ton dofusinvoker décompiler afin de voir les différences ?

JustNao commented 9 months ago

Labot n'a pas de failsafe pour sa lecture de packet, si quelque chose est mal lu à n'importe quel moment, tout le sniffer crash. C'est fait exprès, puisque les packets sont lus par buffer, donc si quelque chose ne fonctionne pas à un moment donné, la lecture du reste du buffer est compromise. Dans Karrelage j'ai rafistolé la lecture des packets pour remettre à zéro le sniffer dès qu'il rencontre un problème de lecture (je flush le buffer entre autre), ce qui permet de skip le packet problématique et continuer la lecture des packets suivants. Au début du projet c'était une solution simple et adéquate à mon utilisation, où 99.9% des packets reçus par le client ne sont pas exploités, donc si 1 ou 2 sautent par moment, on s'en fou. Dans ton cas tu peux prendre la fonction fromRaw de LaBot et la remplacer par la mienne. Ça devrait te permettre de debug sans que ça crash à tout va. Si tu veux comparer le swf décompilé : https://we.tl/t-ji3sOh5TFd.

xenouch commented 9 months ago

Merci pour le partage.

Très bizarre tes sources du dofusInvoker sont tres différente des miennes. Quand je compile avec tes source, mon protocol.pk fais bien 415ko comme tu l'avais indiqué et je n'ai aucun crash...

Pourtant je décompile bien mon dofusInvoker pour le client 2.69.2.4 se trouvant dans C:\Users\user\AppData\Local\Ankama\Dofus. Il a comme taille 7721ko.

Étrange de ne pas avoir les même source alors que je décompile avec tes scripts

Edit: j'utilise déjà tes modif avec Labot, jamais eu de problème en 2.68.

JustNao commented 9 months ago

Test avec la version 14.6 de FFDec

xenouch commented 9 months ago

Tu es un monstre !

J'utilisai la dernière stable "18.5". Jamais je n'aurais pensé de telles différences entre les version du décompiler...

En tout cas avec la 14.6 de FFDec plus aucun crash. Étonnant que la 18.5 fonctionnais avec le dofusInvoker de la 2.68

Un grand merci pour ton aide et Karrelage