WOW
CLASSIC
DIABLO IV
DIABLO III
DIABLO II
HEARTHSTONE
OVERWATCH
AUTRES SITES
Diablo Immortal
Diablo
Warcraft Rumble
Warcraft III
Warcraft II
Warcraft
StarCraft II
StarCraft
Heroes of the Storm
Heroes Builder
Legends
Film Warcraft
Destiny 2
StarCraft : Ghost
Forum
Accueil
Forums
Nouveaux messages
Rechercher dans les forums
Quoi de neuf
Nouveaux messages
Nouveaux messages de profil
Dernières activités
Membres
Visiteurs actuels
Nouveaux messages de profil
Rechercher dans les messages de profil
Connexion
S'inscrire
Quoi de neuf
Rechercher
Rechercher
Rechercher par titre uniquement
Par:
Nouveaux messages
Rechercher dans les forums
Menu
Connexion
S'inscrire
Installer l'application
Installer
Note:
This feature may not be available in some browsers.
Accueil
Forums
Diablo
Diablo 2
Classes
Amazone
Valkyrie en détail
JavaScript est désactivé. Pour une meilleure expérience, s'il vous plaît activer JavaScript dans votre navigateur avant de continuer.
Vous utilisez un navigateur obsolète. Il se peut qu'il n'affiche pas correctement ce site ou d'autres.
Vous devez le mettre à niveau ou utiliser un
navigateur alternatif
.
Répondre au sujet
Message
<blockquote data-quote="Myrdinn" data-source="post: 5632"><p>Voila un nouveau post sur le tracage de DLL.</p><p>C'est une démonstration du produit avant de passer à des exercices <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite8" alt=":D" title="Big grin :D" loading="lazy" data-shortname=":D" /> dans outils et exercices.</p><p>Ce post à trois buts</p><p>1) Démonstration de l'utilisation de OllyDBG</p><p>2) Quelques notions sur la méthodologie pour tracer les Dlls</p><p>3) Pour les allergiques à l'assembleur il reste les passages en couleur pour faire plus ample connaissance avec nos amies valkyries. Dans ce cas je vous invites à passer toutes les parties écrites en blanc <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite8" alt=":D" title="Big grin :D" loading="lazy" data-shortname=":D" /> Ce pourrait être utile pour déterminer le niveau idéale pour les valkyries par exemple.</p><p></p><p>Pour faire plaisir à Simon33 j'utiliserais la nomenclature 0x000... pour les chifres hexadécimaux hors du code.</p><p>J'ai fait un trace unique sur le code hier soir après avoir joué avec trombe. Je vous donne le résultat directement sans remaniement et donc avec des trous que l'on comblera ensemble plus tard.</p><p></p><p>J'ai choisis cet exemple car vous pouvez le faire sans tuer votre mercenaire (ce qu'il vaut mieux faire quant on trace un combat <img src="/data/assets/smilies/lol.gif" class="smilie" loading="lazy" alt=":lol:" title="lol :lol:" data-shortname=":lol:" /> ) et surtout vous pouvez le faire sans sortir de la ville.</p><p></p><p>Pour faire ce trace vous devez utiliser la méthode décrit dans le quatrième post de <a href="http://forum.judgehype.com/showthread.php3?s=&threadid=125058" target="_blank">Tracer les Dlls</a> .</p><p></p><p>Placer le brekpoint sur 6FCD6790 et invoquer votre valkyrie en ville.</p><p>Vous vous arreterez automatiquement sur ce qui suit <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite8" alt=":D" title="Big grin :D" loading="lazy" data-shortname=":D" /></p><p></p><p></p><p>La routine qui gèrela valkyrie débute en 6FCD6790 pour le patch 1.09B. Si vous voulez les offsets pour le patch 1.09D je les chercherais pour vous.</p><p></p><p></p><p>[code]Initalisation/sauvegarde des registres</p><p>6FCD6790 83EC 24 SUB ESP,24</p><p>6FCD6793 53 PUSH EBX</p><p>6FCD6794 55 PUSH EBP</p><p>6FCD6795 8BEA MOV EBP,EDX</p><p>6FCD6797 8BD9 MOV EBX,ECX</p><p>6FCD6797 8BD9 MOV EBX,ECX</p><p>6FCD6799 56 PUSH ESI</p><p>6FCD679A 57 PUSH EDI</p><p>[/code]</p><p></p><p>EBP=SLVL</p><p>EBX=GamePTr</p><p>EBP=EDX=PlrUnit</p><p>EBX=ECX=GamePtr</p><p>ESI=0x138 (312)???</p><p>EDI=PlrUnit</p><p></p><p>Bon comme d'habitude pour ceux qui ont suivi les posts tracer les Dlls.</p><p>On sauvegarde et initialise les différents registres.</p><p>A noter que je ne sais pas encore à quoi correspond le 312 contenu par ESI ?</p><p>Si c'est important on le saura assez vite.</p><p></p><p>Si vous voulez jouer avec les unités c'est le moment avant de continuer.</p><p></p><p>EBX=GamePtr. Si vous faite boutondroit/Follow in Dump vous verrez l'unité GAME.</p><p>Je devrais éditer mon post sur la structure du jeu, en attendant une petite explication.</p><p></p><p>Au démarrage d'une partie le jeu créé une structure qui contient les liens vers toutes les autres unités du jeu et également les valeurs spécifiques à la partie. </p><p>A partir de cette unité il est possible de trouver tous ce qui concerne la partie en cours</p><p></p><p>Exemple</p><p>Il contient la liste de tous les pointeurs des joueurs,monstres objets ....</p><p>Il contient également le type de jeu D2C ou LOD, L'heure actuelle en Frame, la Master Seed qui permet de générer les Seeds de toutes les unités créées, la difficulté ...</p><p></p><p>Dans le quatrième post je donne le lien vers <a href="http://www.ifrance.com/Myrdinn/Dll/PtUnit.xls" target="_blank">la structure</a> connue de cette unité. La première page excel vous permet de voir les différentes valeurs. Attention il y a un décalage de 0x20 ente la version 1.09B et la version 1.09D</p><p>Jetez un oeil et demandez moi si vous avez besoin d'aide.</p><p></p><p>Vous pouvez également regarder votre unité joueur c'est la deuxième page de fichier excel (es pages suivantes contiennent les structures filles de cette unité (inventaire, skills,stats ....) )</p><p>Toujours pareil clickdroit sur EBP / Follow in Dump et la méthode décrit dans le quatrième post.</p><p>Encore une fois n'hésitez pas à me demander des renseignement sur cette structure.</p><p></p><p></p><p>Avant de continuer une petite astuce d'ollydbg.</p><p>EBP contient le SLVL de la valkyrie.</p><p>Juste avant le PUSH vous pouvez faire un bouton droit sur EBP et faire Modify et entrez la valeur que vous voulez. De cette façon vous pouvez vous faire une Valkyrie niveau 90 <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite1" alt=":)" title="Smile :)" loading="lazy" data-shortname=":)" /> sans modifier votre perso.</p><p></p><p></p><p>[code] Modification du Flag Création d'unité de l'unité joueur</p><p>6FCD679B 8B8D E8000000 MOV ECX,DWORD PTR SS:[EBP+E8]</p><p>6FCD67A1 33C0 XOR EAX,EAX</p><p>6FCD67A3 83C9 40 OR ECX,40[/code]</p><p></p><p>Maintenant que la creation de la valkyrie à commencer, il faut modifier ce flag.</p><p></p><p>FLAG PlrUnit(+E8)=OOOOOOOE = initialize pointer </p><p>ECX=4E si ECX=0xE</p><p>Bon encore une fois l'occasion de regarder votre unité Joueur. En +E8 vous avez des Flags, normalement vous devriez avoir 0x0E, qui correspond à un Flag Creation.</p><p>On modifie cette valeur en ajoutant 0x40 on obtient 0x4E.</p><p></p><p></p><p></p><p>[code]Creation de structure</p><p>6FCD67A6 8D7C24 14 LEA EDI,DWORD PTR SS:[ESP+14]</p><p>6FCD67AA 898D E8000000 MOV DWORD PTR SS:[EBP+E8],ECX</p><p>6FCD67B0 B9 08000000 MOV ECX,8</p><p>6FCD67B5 F3:AB REP STOS DWORD PTR ES:[EDI][/code]</p><p>EDI = pointeur = Pile+14 on va voir a quoi ca sert très vite</p><p></p><p>On modifie l'unité joueur en fixant le Flag en +E8 avec la valeur 4E(c'est un reste de l'étape précedente</p><p></p><p>LE REP STOS Créé 8 lignes(défini par ECX) à partir de EDI (Ex ESP+14)</p><p>On vient de créer un nouvel espace pour accueillir une structure de 8 valeurs (DWORDs)</p><p>C'est probablement une structure transitoire car elle est créé sur la pile.</p><p></p><p></p><p>[code]6FCD67B7 8D5424 14 LEA EDX,DWORD PTR SS:[ESP+14]</p><p>6FCD67BB 8BCB MOV ECX,EBX</p><p>6FCD67BD 896C24 10 MOV DWORD PTR SS:[ESP+10],EBP</p><p>6FCD67C1 896C24 18 MOV DWORD PTR SS:[ESP+18],EBP</p><p>6FCD67C5 C74424 1C 650100>MOV DWORD PTR SS:[ESP+1C],165</p><p>6FCD67CD C74424 20 070000>MOV DWORD PTR SS:[ESP+20],7</p><p>6FCD67D5 C74424 24 010000>MOV DWORD PTR SS:[ESP+24],1</p><p>6FCD67DD C74424 30 020000>MOV DWORD PTR SS:[ESP+30],2[/code]</p><p></p><p>Initalisation de 2 registres pour la suite</p><p>EDX=Nouvelle Structure (Ptr (ESP+14)) que l'on vient de créer</p><p>ECX=EBX=GamePTR</p><p></p><p>Creation de la Structure EDX avec les valeurs suivantes</p><p></p><p>EDX-04 = EBP = PlayerPtr</p><p>EDX+04 = EBP = PlayerPtr</p><p>EDX+08 = 0x165</p><p>EDX+0C = 0x7</p><p>EDX+10 = 0x1</p><p>EDX+1C = 0x2</p><p></p><p>Bon pour l'instant ces chiffres ne sont pas parlant nous verrons bien pour la suite.</p><p></p><p></p><p>[code]Creation de la valkyrie</p><p>6FCD67E5 E8 16780100 CALL D2Game.6FCEE000</p><p>6FCD67EA 8BF0 MOV ESI,EAX</p><p>6FCD67EC 85F6 TEST ESI,ESI</p><p>6FCD67EE 75 0A JNZ SHORT D2Game.6FCD67FA</p><p>6FCD67F0 5F POP EDI</p><p>6FCD67F1 5E POP ESI</p><p>6FCD67F2 5D POP EBP</p><p>6FCD67F3 5B POP EBX</p><p>6FCD67F4 83C4 24 ADD ESP,24</p><p>6FCD67F7 C2 0400 RETN 4[/code]</p><p>Le Call appelle la routine de création d'un monstre.</p><p>C'est à cela que servait la structure transitoire.</p><p>Sans faire aucun trace, voici ce que l'on peut deviner rapidement.</p><p>En +08 </p><p>0x165 (357 en décimal)=ID de la valkyrie dans <a href="http://www.ifrance.com/Myrdinn/MpqTxt/weapons.txt" target="_blank">Monstats.txt</a></p><p>Si vous chercher la ligne valkyrie dans ce fichier sous excel (ligne 359) la colonne F correspond bien au populatedID=357</p><p>Et le 1 2 et 7?</p><p>Difficle de répondre pour le moment. Le 7 signifie probablement = Minion</p><p>Le 1 le nombre de valkyrie ...</p><p>Soit dit en passant avec ollyDBG vous pouvez modifier ces valeurs avant qu'elles ne soit utilisées en cliquantDroit / Modify.</p><p>Mais bon vous risquez probablement un crash <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite8" alt=":D" title="Big grin :D" loading="lazy" data-shortname=":D" /></p><p></p><p>Regradons ce qui se passe</p><p>EAX=Valkyrie Ptr</p><p>ESI = ValkyriePtr</p><p>On fait un test rapide suir l'existence du pointeur</p><p>Pas de valkyrie = EXIT Else continue</p><p></p><p>Cool une nouvelle unité est prête. L'unité Valkyrie.</p><p>Un petit dump de ce que j'ai obtenu <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite8" alt=":D" title="Big grin :D" loading="lazy" data-shortname=":D" /></p><p></p><p>[code]VALKYRIE UNIT DUMP</p><p>$ ==> >01 00 00 00 65 01 00 00 ...e..</p><p>$+8 >0F 00 00 00 01 00 00 00 ......</p><p>$+10 >00 00 00 00 00 00 00 00 ........</p><p>$+18 >80 4A 28 02 00 00 00 00 €J(....</p><p>$+20 >00 00 00 00 00 00 00 00 ........</p><p>$+28 >00 00 00 00 DA 07 46 4C ....ÚFL</p><p>$+30 >4E 5A 8C 32 E4 A4 D2 62 NZŒ2ä¤Òb</p><p>$+38 >00 EC 05 07 00 00 00 00 .ì....</p><p>$+40 >00 00 00 00 00 00 00 00 ........</p><p>$+48 >00 00 00 00 00 00 00 00 ........</p><p>$+50 >00 00 00 00 00 01 00 00 .......</p><p>$+58 >00 01 00 00 00 00 00 00 .......</p><p>$+60 >28 DD A8 04 00 00 00 00 (ݨ....</p><p>$+68 >00 00 00 00 00 EA 05 07 .....ê</p><p>$+70 >00 E2 71 05 00 00 00 00 .âq....</p><p>$+78 >00 00 00 00 00 00 00 00 ........</p><p>$+80 >00 00 00 00 00 D9 71 05 .....Ùq[/code]</p><p>J'ai mis les adresses en position relatives.</p><p>Toujours pareil si vous utilisez mon fichiers excel vous trouverez</p><p></p><p>+00 UnitType Ici (01 00 00 00) soit 0x1 (on lit les bytes de droite à gauche)LEs valkyries sont des unités Monstres. <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite8" alt=":D" title="Big grin :D" loading="lazy" data-shortname=":D" /></p><p></p><p>+04 UnitClass ici 0x165 on vient de le voir c'est le populated ID de monstats.txt.</p><p></p><p>+08 Unit UnisueID 0xF C'est l'ID unique séquentiel utilisé par le jeu pour identifier les unité de même type dans la partie. Bref ici c'est le 15eme monstres de la partie créé.</p><p>Bizarre on n'est même pas sortie en ville ????</p><p>Je suis prêt à parier que nos amis les NPCs, les poules et autres animaux sont aux nombres de 14. (Pas sur pour les NPCs d'ailleurs)</p><p></p><p>+0C MODE=0x1 Il faut consulter le fichier MonMode.txt je le fait pour vous ligne1=Neutral(NU) Bref la valkyrie est dans le mode Neutre pour le moment.</p><p></p><p>+2c/+30/+34 on peut voir la Seed (pour l'aléatoire)</p><p></p><p>+38 On trouve le pointeur sur la structure Hpath qui gère la position sur la carte/les déplacements/ les cibles ...</p><p></p><p>+58 Vitesse d'animation= 0x100 soit 256 c'est cette valeur qui est utilisé par les formules d'IAS pour gérer la vitesse d'attaque. Mais également par le FastCast,FastBlock ...</p><p></p><p>... vous regarderez mon fichier excel si vous voulez en apprendre plus.</p><p></p><p></p><p>Bon maintenant que la valkyrie est créée il va falloir la compléter <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite8" alt=":D" title="Big grin :D" loading="lazy" data-shortname=":D" /></p><p></p><p>C'est la suite qui devient plus intéressante <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite8" alt=":D" title="Big grin :D" loading="lazy" data-shortname=":D" /></p></blockquote><p></p>
[QUOTE="Myrdinn, post: 5632"] Voila un nouveau post sur le tracage de DLL. C'est une démonstration du produit avant de passer à des exercices :D dans outils et exercices. Ce post à trois buts 1) Démonstration de l'utilisation de OllyDBG 2) Quelques notions sur la méthodologie pour tracer les Dlls 3) Pour les allergiques à l'assembleur il reste les passages en couleur pour faire plus ample connaissance avec nos amies valkyries. Dans ce cas je vous invites à passer toutes les parties écrites en blanc :D Ce pourrait être utile pour déterminer le niveau idéale pour les valkyries par exemple. Pour faire plaisir à Simon33 j'utiliserais la nomenclature 0x000... pour les chifres hexadécimaux hors du code. J'ai fait un trace unique sur le code hier soir après avoir joué avec trombe. Je vous donne le résultat directement sans remaniement et donc avec des trous que l'on comblera ensemble plus tard. J'ai choisis cet exemple car vous pouvez le faire sans tuer votre mercenaire (ce qu'il vaut mieux faire quant on trace un combat :lol: ) et surtout vous pouvez le faire sans sortir de la ville. Pour faire ce trace vous devez utiliser la méthode décrit dans le quatrième post de [url=http://forum.judgehype.com/showthread.php3?s=&threadid=125058]Tracer les Dlls[/url] . Placer le brekpoint sur 6FCD6790 et invoquer votre valkyrie en ville. Vous vous arreterez automatiquement sur ce qui suit :D La routine qui gèrela valkyrie débute en 6FCD6790 pour le patch 1.09B. Si vous voulez les offsets pour le patch 1.09D je les chercherais pour vous. [code]Initalisation/sauvegarde des registres 6FCD6790 83EC 24 SUB ESP,24 6FCD6793 53 PUSH EBX 6FCD6794 55 PUSH EBP 6FCD6795 8BEA MOV EBP,EDX 6FCD6797 8BD9 MOV EBX,ECX 6FCD6797 8BD9 MOV EBX,ECX 6FCD6799 56 PUSH ESI 6FCD679A 57 PUSH EDI [/code] EBP=SLVL EBX=GamePTr EBP=EDX=PlrUnit EBX=ECX=GamePtr ESI=0x138 (312)??? EDI=PlrUnit Bon comme d'habitude pour ceux qui ont suivi les posts tracer les Dlls. On sauvegarde et initialise les différents registres. A noter que je ne sais pas encore à quoi correspond le 312 contenu par ESI ? Si c'est important on le saura assez vite. Si vous voulez jouer avec les unités c'est le moment avant de continuer. EBX=GamePtr. Si vous faite boutondroit/Follow in Dump vous verrez l'unité GAME. Je devrais éditer mon post sur la structure du jeu, en attendant une petite explication. Au démarrage d'une partie le jeu créé une structure qui contient les liens vers toutes les autres unités du jeu et également les valeurs spécifiques à la partie. A partir de cette unité il est possible de trouver tous ce qui concerne la partie en cours Exemple Il contient la liste de tous les pointeurs des joueurs,monstres objets .... Il contient également le type de jeu D2C ou LOD, L'heure actuelle en Frame, la Master Seed qui permet de générer les Seeds de toutes les unités créées, la difficulté ... Dans le quatrième post je donne le lien vers [url=http://www.ifrance.com/Myrdinn/Dll/PtUnit.xls]la structure[/url] connue de cette unité. La première page excel vous permet de voir les différentes valeurs. Attention il y a un décalage de 0x20 ente la version 1.09B et la version 1.09D Jetez un oeil et demandez moi si vous avez besoin d'aide. Vous pouvez également regarder votre unité joueur c'est la deuxième page de fichier excel (es pages suivantes contiennent les structures filles de cette unité (inventaire, skills,stats ....) ) Toujours pareil clickdroit sur EBP / Follow in Dump et la méthode décrit dans le quatrième post. Encore une fois n'hésitez pas à me demander des renseignement sur cette structure. Avant de continuer une petite astuce d'ollydbg. EBP contient le SLVL de la valkyrie. Juste avant le PUSH vous pouvez faire un bouton droit sur EBP et faire Modify et entrez la valeur que vous voulez. De cette façon vous pouvez vous faire une Valkyrie niveau 90 :) sans modifier votre perso. [code] Modification du Flag Création d'unité de l'unité joueur 6FCD679B 8B8D E8000000 MOV ECX,DWORD PTR SS:[EBP+E8] 6FCD67A1 33C0 XOR EAX,EAX 6FCD67A3 83C9 40 OR ECX,40[/code] Maintenant que la creation de la valkyrie à commencer, il faut modifier ce flag. FLAG PlrUnit(+E8)=OOOOOOOE = initialize pointer ECX=4E si ECX=0xE Bon encore une fois l'occasion de regarder votre unité Joueur. En +E8 vous avez des Flags, normalement vous devriez avoir 0x0E, qui correspond à un Flag Creation. On modifie cette valeur en ajoutant 0x40 on obtient 0x4E. [code]Creation de structure 6FCD67A6 8D7C24 14 LEA EDI,DWORD PTR SS:[ESP+14] 6FCD67AA 898D E8000000 MOV DWORD PTR SS:[EBP+E8],ECX 6FCD67B0 B9 08000000 MOV ECX,8 6FCD67B5 F3:AB REP STOS DWORD PTR ES:[EDI][/code] EDI = pointeur = Pile+14 on va voir a quoi ca sert très vite On modifie l'unité joueur en fixant le Flag en +E8 avec la valeur 4E(c'est un reste de l'étape précedente LE REP STOS Créé 8 lignes(défini par ECX) à partir de EDI (Ex ESP+14) On vient de créer un nouvel espace pour accueillir une structure de 8 valeurs (DWORDs) C'est probablement une structure transitoire car elle est créé sur la pile. [code]6FCD67B7 8D5424 14 LEA EDX,DWORD PTR SS:[ESP+14] 6FCD67BB 8BCB MOV ECX,EBX 6FCD67BD 896C24 10 MOV DWORD PTR SS:[ESP+10],EBP 6FCD67C1 896C24 18 MOV DWORD PTR SS:[ESP+18],EBP 6FCD67C5 C74424 1C 650100>MOV DWORD PTR SS:[ESP+1C],165 6FCD67CD C74424 20 070000>MOV DWORD PTR SS:[ESP+20],7 6FCD67D5 C74424 24 010000>MOV DWORD PTR SS:[ESP+24],1 6FCD67DD C74424 30 020000>MOV DWORD PTR SS:[ESP+30],2[/code] Initalisation de 2 registres pour la suite EDX=Nouvelle Structure (Ptr (ESP+14)) que l'on vient de créer ECX=EBX=GamePTR Creation de la Structure EDX avec les valeurs suivantes EDX-04 = EBP = PlayerPtr EDX+04 = EBP = PlayerPtr EDX+08 = 0x165 EDX+0C = 0x7 EDX+10 = 0x1 EDX+1C = 0x2 Bon pour l'instant ces chiffres ne sont pas parlant nous verrons bien pour la suite. [code]Creation de la valkyrie 6FCD67E5 E8 16780100 CALL D2Game.6FCEE000 6FCD67EA 8BF0 MOV ESI,EAX 6FCD67EC 85F6 TEST ESI,ESI 6FCD67EE 75 0A JNZ SHORT D2Game.6FCD67FA 6FCD67F0 5F POP EDI 6FCD67F1 5E POP ESI 6FCD67F2 5D POP EBP 6FCD67F3 5B POP EBX 6FCD67F4 83C4 24 ADD ESP,24 6FCD67F7 C2 0400 RETN 4[/code] Le Call appelle la routine de création d'un monstre. C'est à cela que servait la structure transitoire. Sans faire aucun trace, voici ce que l'on peut deviner rapidement. En +08 0x165 (357 en décimal)=ID de la valkyrie dans [url=http://www.ifrance.com/Myrdinn/MpqTxt/weapons.txt]Monstats.txt[/url] Si vous chercher la ligne valkyrie dans ce fichier sous excel (ligne 359) la colonne F correspond bien au populatedID=357 Et le 1 2 et 7? Difficle de répondre pour le moment. Le 7 signifie probablement = Minion Le 1 le nombre de valkyrie ... Soit dit en passant avec ollyDBG vous pouvez modifier ces valeurs avant qu'elles ne soit utilisées en cliquantDroit / Modify. Mais bon vous risquez probablement un crash :D Regradons ce qui se passe EAX=Valkyrie Ptr ESI = ValkyriePtr On fait un test rapide suir l'existence du pointeur Pas de valkyrie = EXIT Else continue Cool une nouvelle unité est prête. L'unité Valkyrie. Un petit dump de ce que j'ai obtenu :D [code]VALKYRIE UNIT DUMP $ ==> >01 00 00 00 65 01 00 00 ...e.. $+8 >0F 00 00 00 01 00 00 00 ...... $+10 >00 00 00 00 00 00 00 00 ........ $+18 >80 4A 28 02 00 00 00 00 €J(.... $+20 >00 00 00 00 00 00 00 00 ........ $+28 >00 00 00 00 DA 07 46 4C ....ÚFL $+30 >4E 5A 8C 32 E4 A4 D2 62 NZŒ2ä¤Òb $+38 >00 EC 05 07 00 00 00 00 .ì.... $+40 >00 00 00 00 00 00 00 00 ........ $+48 >00 00 00 00 00 00 00 00 ........ $+50 >00 00 00 00 00 01 00 00 ....... $+58 >00 01 00 00 00 00 00 00 ....... $+60 >28 DD A8 04 00 00 00 00 (ݨ.... $+68 >00 00 00 00 00 EA 05 07 .....ê $+70 >00 E2 71 05 00 00 00 00 .âq.... $+78 >00 00 00 00 00 00 00 00 ........ $+80 >00 00 00 00 00 D9 71 05 .....Ùq[/code] J'ai mis les adresses en position relatives. Toujours pareil si vous utilisez mon fichiers excel vous trouverez +00 UnitType Ici (01 00 00 00) soit 0x1 (on lit les bytes de droite à gauche)LEs valkyries sont des unités Monstres. :D +04 UnitClass ici 0x165 on vient de le voir c'est le populated ID de monstats.txt. +08 Unit UnisueID 0xF C'est l'ID unique séquentiel utilisé par le jeu pour identifier les unité de même type dans la partie. Bref ici c'est le 15eme monstres de la partie créé. Bizarre on n'est même pas sortie en ville ???? Je suis prêt à parier que nos amis les NPCs, les poules et autres animaux sont aux nombres de 14. (Pas sur pour les NPCs d'ailleurs) +0C MODE=0x1 Il faut consulter le fichier MonMode.txt je le fait pour vous ligne1=Neutral(NU) Bref la valkyrie est dans le mode Neutre pour le moment. +2c/+30/+34 on peut voir la Seed (pour l'aléatoire) +38 On trouve le pointeur sur la structure Hpath qui gère la position sur la carte/les déplacements/ les cibles ... +58 Vitesse d'animation= 0x100 soit 256 c'est cette valeur qui est utilisé par les formules d'IAS pour gérer la vitesse d'attaque. Mais également par le FastCast,FastBlock ... ... vous regarderez mon fichier excel si vous voulez en apprendre plus. Bon maintenant que la valkyrie est créée il va falloir la compléter :D C'est la suite qui devient plus intéressante :D [/QUOTE]
Nom d'utilisateur
Vérification
Poster une réponse
Accueil
Forums
Diablo
Diablo 2
Classes
Amazone
Valkyrie en détail
Haut