Trouver adresse de base processus!

    Publicités

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)

Status
Not open for further replies.

moi4567

Membre
Dec 18, 2012
72
1
434
hl2.exe
Salut à tous :)

Je travail en ce moment sur un BOT pour wow et je n'arrive pas à trouver l'adresse de base de wow (celle sur laquelle je rajouterais les offset pour trouver les infos).
Je suis avec Auto Hot Key (AHK) qui est un peux un équivalent de AutoIt pour ceux qui ne connaîtrait pas. Ca fait 2-3 jours que je cherche un peux partout comment trouver cette adresse et je n'ai pas trouvé la solution (pas avec AHK en tout cas). J'ai essayé avec AutoIt, j'ai trouvé un script que j'ai revu pas mal de fois sur différent forum mais a chaque fois il me renvois 0. :suspect:
Voilà le script en question:

Code:
Func GetWoWBaseAddress($PID)
   $HSNAP = DllCall("Kernel32.dll", "HANDLE", "CreateToolhelp32Snapshot", "DWORD", 8, "DWORD", $PID)
   $STMODULE = DllStructCreate("DWORD dwSize;DWORD th32ModuleID;DWORD th32ProcessID;" & "DWORD GlblcntUsage;DWORD ProccntUsage;ptr modBaseAddr;" & "DWORD modBaseSize;HANDLE hModule;WCHAR szModule[256];" & "WCHAR szExePath[260]")
   DllStructSetData($STMODULE, "dwSize", DllStructGetSize($STMODULE))
   $RET = DllCall("Kernel32.dll", "BOOLEAN", "Module32FirstW", "HANDLE", $HSNAP[0], "ptr", DllStructGetPtr($STMODULE))
   IF ($RET[0] = False) Then
      DllCall("Kernel32.dll", "BOOLEAN", "CloseHandle", "HANDLE", $HSNAP[0])
      Return 0
   Else
      $RET[0] = True
      Do
         If DllStructGetData($STMODULE, "szModule") = "Wow.exe" Then
            DllCall("Kernel32.dll", "BOOLEAN", "CloseHandle", "HANDLE", $HSNAP[0])
            Return DllStructGetData($STMODULE, "modBaseAddr")
         EndIf
         $RET = DllCall("Kernel32.dll", "BOOLEAN", "Module32NextW", "HANDLE", $HSNAP[0], "ptr", DllStructGetPtr($STMODULE))
      Until $RET[0] = False
   EndIf
EndFunc

$PID = WinGetProcess("World of Warcraft")
$WowBase = GetWoWBaseAddress($PID)
MsgBox(0,"Titre",$WowBase)

Voilà donc ce que je cherche: Un moyen de trouver l'adresse de base automatiquement, je prend n'importe quel langage et j'adapterais avec AHK :)

Si je me suis mal expliqué ou si vous avez besoin de plus d'infos je suis là :)

Merci d'avance :)
 

7centdu75

Membre
Dec 24, 2012
49
0
211
31
Ce que tu cherche c'est une adresse ?
Tu ne devrais pas utiliser auto-it mais plutôt Cheat-Engine.

Sinon un moyen de trouver l'adresse de base ( Si tu parle de char base). Tu envois des packets pour prendre des dégâts et tu trouves l'adresse qui gère tes HP par exemple. Ensuite c'est l'adresse avant l'offset la base. Tu peut comparer avec les MP aussi pour t'assurer que ce soit la bonne adresse.
Tu fait un pointeur et le tour est joué.

Si ce n'est pas ce que tu voulais dire, re-pose ta question. Parce que j'ai eu un peu de mal a la comprendre.
 
Mar 30, 2011
1,014
1
944
In Your Ass
7centdu75 dans le cadre de l edition de memoire de wow ton approche n est pas la bonne .

Moi4567 pour pouvoir lire des infos en memoire dans un autre processus avec autoit il te manque quelques manipe.

1 tu doit passer l'option setdebug privilege a 1
2 il te manque "l ouverture du processus"
3 pour plus de tranquillité rajoute en debut de script un requiereadmin

sache que sous certaines conditions le script peu ne pas fonctionnner avec "F5" et parfaitement avec une compilation donc gaff quand tu debug

si tu cherche un peu sur le forum il doit y avoir pas mal de script qui reprennent ce shema

PS la fonction wowgetbaseadresse c est pour les wow a partir de 4.x.x
 

moi4567

Membre
Dec 18, 2012
72
1
434
hl2.exe
Merci à tous les deux 7centdu75 et casimir :)

7centdu75 said:
Ce que tu cherche c'est une adresse ?
Tu ne devrais pas utiliser auto-it mais plutôt Cheat-Engine.

Sinon un moyen de trouver l'adresse de base ( Si tu parle de char base). Tu envois des packets pour prendre des dégâts et tu trouves l'adresse qui gère tes HP par exemple. Ensuite c'est l'adresse avant l'offset la base. Tu peut comparer avec les MP aussi pour t'assurer que ce soit la bonne adresse.
Tu fait un pointeur et le tour est joué.

Si ce n'est pas ce que tu voulais dire, re-pose ta question. Parce que j'ai eu un peu de mal a la comprendre.

Trouver les adresses où sont stockés les valeurs que je cherche ce n'est pas un problème pour moi (avec Cheat Engine en tout cas sinon je ne serrais pas là x)). Ce que je cherche c'est un moyen de "locatliser" l'adresse avant les offsets automatiquement et j'aimerais savoir le faire pour une bonne et simple raison, si jamais il y a une MAJ je n'arriverais pas à retrouver les nouveaux offsets donc plus de bot, je serrais dépendant, voilà pourquoi je cherche à trouver cette adresse. :)
Quoi qu'il en soit merci quant même, tu m'as fait penser que je pouvais toujours trouver l'adresse de base avec Cheat Engine (ce que je cherche encore ^^) et recalculer tout les offsets à chaque MAJ si vraiment je m'en sort pas. :)

EDIT: J'ai rien dit, en y reflechissant il me faut obliguatoirement l'adresse de base ou alors une valeur quelconque que je peux trouver automatiquement.

7centdu75 dans le cadre de l edition de memoire de wow ton approche n est pas la bonne .

Moi4567 pour pouvoir lire des infos en memoire dans un autre processus avec autoit il te manque quelques manipe.

1 tu doit passer l'option setdebug privilege a 1
2 il te manque "l ouverture du processus"
3 pour plus de tranquillité rajoute en debut de script un requiereadmin

sache que sous certaines conditions le script peu ne pas fonctionnner avec "F5" et parfaitement avec une compilation donc gaff quand tu debug

si tu cherche un peu sur le forum il doit y avoir pas mal de script qui reprennent ce shema

PS la fonction wowgetbaseadresse c est pour les wow a partir de 4.x.x

J'ai suivit tes conseils et j'ai apporté quelques modifications à mon script. Maintenant il me revois toujours la même valeur quand wow est lancé, du début jusqu'à ce qu'il soit fermé. :hein: Il me semble bien que cette adresse change à chaque chargement (d'où le changement d'adresse des informations).

En ce qui concerne le script voilà ce que j'ai rajouté:

- #RequireAdmin au début de mon script comme tu me l'as conseillé
- _MemoryOpen() pour "l'ouverture" du processus
- SetPrivilege("SeDebugPrivilege", 1)

Voilà mon script, j'espère ne pas avoir fait d'erreur :)

Code:
#RequireAdmin
#Include <NomadMemory.au3>

Func GETWOWBASEADDRESS($PID)
	$HSNAP = DllCall("Kernel32.dll", "HANDLE", "CreateToolhelp32Snapshot", "DWORD", 8, "DWORD", $PID)

	$STMODULE = DllStructCreate("DWORD dwSize;DWORD th32ModuleID;DWORD th32ProcessID;" & "DWORD GlblcntUsage;DWORD ProccntUsage;ptr modBaseAddr;" & "DWORD modBaseSize;HANDLE hModule;WCHAR szModule[256];" & "WCHAR szExePath[260]")

	DllStructSetData($STMODULE, "dwSize", DllStructGetSize($STMODULE))

	$RET = DllCall("Kernel32.dll", "BOOLEAN", "Module32FirstW", "HANDLE", $HSNAP[0], "ptr", DllStructGetPtr($STMODULE))

	IF ($RET[0] = False) Then
		DllCall("Kernel32.dll", "BOOLEAN", "CloseHandle", "HANDLE", $HSNAP[0])
		Return 0
	Else
		$RET[0] = True
		Do
			If DllStructGetData($STMODULE, "szModule") = "Wow.exe" Then

				DllCall("Kernel32.dll", "BOOLEAN", "CloseHandle", "HANDLE", $HSNAP[0])

				Return DllStructGetData($STMODULE, "modBaseAddr")
			EndIf
			$RET = DllCall("Kernel32.dll", "BOOLEAN", "Module32NextW", "HANDLE", $HSNAP[0], "ptr", DllStructGetPtr($STMODULE))
		Until $RET[0] = False
	EndIf
EndFunc   ;==>GETWOWBASEADDRESS

SetPrivilege("SeDebugPrivilege", 1)
_MemoryOpen(WinGetProcess("World of Warcraft"))
$PID = WinGetProcess("World of Warcraft")
Global $WowBase = GetWoWBaseAddress($PID)
MsgBox(0,"Titre",$WowBase)
 
Last edited:

moi4567

Membre
Dec 18, 2012
72
1
434
hl2.exe
:up:

J'ai pas mal cherché depuis la dernière fois et je pense avoir compris ou ça bloque.
Je crois que c'est "l'ouverture" du processus qui pose problème. J'ai essayer d'afficher ça valeur avec cette commande: $WowProcess = _MemoryOpen($ProcessID) mais aucunes valeurs ne m'est retournées. Je suppose donc que c'est l'ouverture du processus qui a un problème.

Après plusieurs recherches je n'ai rien trouver sur internet en ce qui concerne ce problème. Quelqu'un connaîtrait la solution plz? :)


EDIT: J'ai trouvé ce que je cherchais, en fait le script que j'avais marchais très bien c'est juste moi qui n'ai pas réussi à l'interpréter ^^'
Du coup pour ceux qui chercherais l'adresse de base comme moi, l dernier script que "j'ai fait" fonction pour wow en 5.3. :)
En tout cas merci :)
 
Last edited:
Status
Not open for further replies.