C# DofusMemory - Memory made easy

Inscrit
2 Juin 2009
Messages
45
Reactions
35
#1
Bonjour,

Je suis en train de réaliser un projet en C# nommé DofusMemory, c'est une librairie qui a pour but de faciliter l'accès à la mémoire de Dofus, en lecture et en écriture.

C'est une charge de travail assez importante car il faut que je trouve les pointeurs ainsi que les offsets des différents éléments à implémenter dans l'API.

Exemple de fonctions qui pourraient être disponibles via l'API :
- getXXX (XXX = characterName, characterLevel, currentPos, currentMapId etc...)
- setXXX
- DisableInactivityManager
- HavenBagUnlocker
- FreeAutopilot
- et plein d'autres

Sur ce sujet je vais répertorier l'adresse de base des clients ainsi que les offsets nécessaires pour lire/écrire les différentes données.
Je vais aussi essayer d'intégrer des fonctions permettant d’exécuter du code se trouvant en mémoire :D

Client 2.58.1.1 (Windows, 64 bits !!!) :
GAME_BASE : Adobe AIR.dll+0x0151E300
CELL_ID OFFSETS : {0x830, 0x380, 0x8, 0x18, 0x20, 0x5F0, 0x2C} -> int
MAP_ID OFFSETS : {} -> double

& plus à venir !

Bon pour l'instant ce sujet fait plus "PoC" mais je vais pouvoir vérifier demain si l'adresse de base et/ou les offsets changent :)
 
Dernière édition:
Inscrit
26 Janvier 2016
Messages
99
Reactions
28
#2
J'ai du mal à imaginer l’intérêt par rapport à un mitm , mais ça peux faire une belle API pour la commu !
je me demande comment ça se comporte en multi compte :teeth:
 
Inscrit
8 Aout 2020
Messages
2
Reactions
1
#3
Ciao, did you make any improvements?
 
Inscrit
1 Février 2017
Messages
20
Reactions
5
#4
Je suis curieux de l'avancement du projet également!
 
Inscrit
2 Juin 2009
Messages
45
Reactions
35
#5
Hello,

Merci de votre intérêt pour le projet.

Au niveau de l'avancement sur les pointeurs, j'en ai trouvé plusieurs pointant des objets qui correspondent aux classes instanciées dans le jeu :inlove: (Player, Mount etc..)

Le problème que je rencontre actuellement est que dès que je redémarre mon PC, l'adresse GAME_BASE à l'air de changer ce qui n'est évidemment pas normal et pratique.
Je suis du coup en train de voir si il y a de l'ASLR

https://fr.wikipedia.org/wiki/Address_space_layout_randomization


@Brasvengeur Au niveau du multi-comptes je vais laisser l'utilisateur final gérer ses instances, je comptes pas implémenter un gestionnaire d'instances dans l'API.
J'ai déjà préparé une méthode pour récupérer le processus Dofus associé à un pseudonyme.
Cette méthode ne fonctionne uniquement quand un compte est connecté.

Dampen59
 
Inscrit
14 Decembre 2012
Messages
44
Reactions
0
#6
Je suis curieux de voir comment tu comptes faire pour le hooking/modification mémoire. J'avais essayé de patch la RDM y'a quelques mois mais j'y suis jamais arrivé (je modifiais bien avant le JIT, donc dans mon cas avant de me connecter). Peut-être que je m'y suis mal pris, au cas ou: https://cadernis.com/index.php?threads/patcher-le-rawdatamessage-en-runtime.2504
Je peux te donner un coup de main si tu veux, j'aime bien l'idée du projet ;)
 
Dernière édition:
Inscrit
14 Mai 2019
Messages
41
Reactions
13
#7
Intéressant comme projet, tu utilises cheat engine pour récupérer les adresses mémoires ?
 
Inscrit
10 Mai 2015
Messages
341
Reactions
37
#9
Je suis pas du tout un expert dans le domaine mais je vais essayer d'apporter mon aide, @dampenfr31. Quand tu dis que l'adresse change à chaque fois que tu relances le processus, il me semble que c'est normal. Quand je voulais modifier la mémoire, je scannais le processus à partir d'une suite Hexadécimal pour récupérer l'adresse.
 
Inscrit
2 Juin 2009
Messages
45
Reactions
35
#10
@Brizze Merci ;)
Oui c'est tout à fait normal que les adresses changent, mais normalement avec un pointeur statique ça ne devrait pas être un problème.

La technique à laquelle tu fais référence est une recherche par pattern, elle est fonctionnelle également mais est plus longue à l'exécution car nécessite de scanner toute la mémoire.

C'est uniquement après un redémarrage de mon ordinateur que mes pointeurs ne pointent plus sur les bonnes adresses.
Je suspecte mon pointeur GAME_BASE de changer mais il faut encore que je vérifie, Ankama effectuant une mise à jour du jeu demain, j'en profiterais pour vérifier les offsets des pointeurs que j'ai déjà.

Si de l'ASLR est présente dans tous les cas ça peut être contourné j'ai lu quelques articles sur Internet, il y a plusieurs méthodes pour contourner l'ASLR dans les environnements AIR
 
Haut Bas