Page 1 sur 1

[..] _MemoryGetBaseAdress

Posté : ven. 18 oct. 2013 16:10
par Prorag
Bonjour Á tous!

Je ne sais pas par ou commencer ..

voici mon script :
► Afficher le texte
j'ai une erreur :

Code : Tout sélectionner

$BaseADDR = _MemoryGetBaseAddress($MemOpen, 1)
                    If @error Then
                     MsgBox(16, "ERROR", "_MemoryGetBaseAddress error n°  " & @error)
                     Exit
                  EndIfNuméro de l'érreur : 2 = Failed to find correct allocation address.
Ce script permet de lire le nombres maximal de place sur un TeamSpeak 3, rien de bien méchant.

NomadMemory.au3 :
► Afficher le texte
MemoryGetBaseAddressUDF:
► Afficher le texte

Re: [..]_MemoryGetBaseAdress

Posté : ven. 18 oct. 2013 16:15
par timmalos
Si tu n'as pas de réponses d'ici 2/3 jours, fais une demande sur le forum anglais, il y a surement plus de personnes aptes à debuguer NomadMemory.au3

N'est il pas possible que Teamspeak se protège justement contre ce genre d'intrusion mémoire? Je sais que ce genre de système existe.

Re: [..]_MemoryGetBaseAdress

Posté : ven. 18 oct. 2013 16:26
par Prorag
Attention je ne cherche pas à écrire la mémoire mais juste à lire des données.
j'ai utilisé Cheat Engine (6.3) pour avoir l'adresse static:
"ts3client_win64.exe"+00C3DA00

Donc il me faut l'adresse de Base + 00C3DA00

Code : Tout sélectionner

$FinalADDR = "0x" & Hex($BaseADDR + $StaticOffset)
Mais pour avoir l'adresse de base il faut :

Code : Tout sélectionner

$BaseADDR = _MemoryGetBaseAddress($MemOpen, 1)
Pour avoir $MemOpen :

Code : Tout sélectionner

$MemOpen = _MemoryOpen($ProcessID)
Pour avori le ProcessID :

Code : Tout sélectionner

$ProcessID = WinGetProcess("TeamSpeak 3", "")

Re: [..]_MemoryGetBaseAdress

Posté : ven. 18 oct. 2013 16:49
par Sea
Pourquoi ne pas utiliser l'udf de TS qui te permet de faire ceci?
http://www.autoitscript.com/forum/topic ... eak-3-udf/

Re: [..]_MemoryGetBaseAdress

Posté : ven. 18 oct. 2013 16:52
par Prorag
Car la c'était un test pour plus de simplicité, après le but c'est de faire ça dans d'autre applications.

Re: [..]_MemoryGetBaseAdress

Posté : ven. 18 oct. 2013 17:10
par Sea
Hum dans ce cas j'attend qu'un modo valide ou donne ça confirmation pour ce post ;)

Car après tout ce que tu demandes peux très bien être utilisé dans un bot ou autre ^^

Re: [..]_MemoryGetBaseAdress

Posté : ven. 18 oct. 2013 17:48
par Prorag
En fait j'aimerai savoir à quoi est égale : ts3client_win64.exe
et normalement il faut utiliser :

Code : Tout sélectionner

_MemoryGetBaseAddress($ah_Handle, $iHD)
Return Value(s).: On Success - Returns the 'allocation Base' address and sets @Error to 0.
J'ai donc besoin de : 'allocation Base'

Re: [..]_MemoryGetBaseAdress

Posté : ven. 18 oct. 2013 22:19
par Tlem
Sea a écrit :Hum dans ce cas j'attend qu'un modo valide ou donne ça confirmation pour ce post ;)
Je valide.

- TeamSpeak n'est pas un jeux.
- Jusqu'à preuve du contraire, il n'est pas question ici de faire un bot malveillant, mais juste de récupérer une valeur en mémoire.

Re: [..] _MemoryGetBaseAdress

Posté : sam. 19 oct. 2013 00:55
par Sea
Effectivement il semblerais que sous x64 cette fonction sois un peu capricieuse... Bref voila ce que tu souhaites :)

ps: Je pense que y'a moyen de faire plus propre mais bon ça fonctionne ^^'
► Afficher le texte

Re: [..] _MemoryGetBaseAdress

Posté : sam. 19 oct. 2013 01:14
par Prorag
Merci !
J'ai testé avec : ts3client_win64.exe
Je n'ais plus de message d'erreur mais BaseADDR = 0
donc fonctionne toujours pas..
► Afficher le texte

Re: [..] _MemoryGetBaseAdress

Posté : sam. 19 oct. 2013 01:50
par Sea
Effectivement ayant testé avec la version 32bit chez moi je n'avais pas ce problème ^^'
Essaye avec cette fonction normalement sa devrais marcher il suffisais de modifier l'API EnumProcessModules par EnumProcessModulesEx http://msdn.microsoft.com/en-us/library ... s.85).aspx une petite erreur de ma part plus très frais moi à 2h du mat xD

Code : Tout sélectionner

Func ProcessModuleGetBaseAddress($iProcessID, $sModuleName)

;on ouvre le processus
Local $hProcess = DllCall('kernel32.dll', _
   'HANDLE', 'OpenProcess', _
   'DWORD', 0x1F0FFF, _
   'BOOL', True, _
   'DWORD', $iProcessID)

;on recup les handles des module de notre process
Local $ModulesMax = DllStructCreate('ptr[1024]')
Local $iProcessModules = DllCall('psapi.dll', _
   'BOOL', 'EnumProcessModulesEx', _
   'HANDLE', $hProcess[0], _
   'ptr', DllStructGetPtr($ModulesMax), _
   'DWORD', DllStructGetSize($ModulesMax), _
   'DWORD*', '', _
   'DWORD','3')
Local $sModuleBaseName

;on parcour la liste des modules
For $i = 1 To $iProcessModules[4] / 4
  $sModuleBaseName = DllCall('psapi.dll', _
    'DWORD', 'GetModuleBaseNameW', _
    'HANDLE', $hProcess[0], _
    'ptr', DllStructGetData($ModulesMax, 1, $i), _
    'wstr', '', _
    'DWORD', 256)
    ;quand on a celui qui nous correspond on close notre Process et on retourne les valeurs en mémoire
    If $sModuleBaseName[3] = $sModuleName Then
        Local $bResult = DllCall('kernel32.dll', _
       'BOOL', 'CloseHandle', _
       'HANDLE', $hProcess[0])
        Return DllStructGetData($ModulesMax, 1, $i)
    EndIf
Next

EndFunc
 

Re: [..] _MemoryGetBaseAdress

Posté : sam. 19 oct. 2013 03:06
par Prorag
Je vien de tester ça :
► Afficher le texte
Avec :
► Afficher le texte
Donc en 64 bit ça marche pas.
BaseAddr = 0

Par contre J'ai fait la même chose pour le 32Bit :
► Afficher le texte
Avec :
► Afficher le texte
et j'ai BaseADDR = 0x00400000
FinalADDR = 00C78608 ; J'ai testé avec la Calculatrice windows c'est bon ^^
mais j'ai un soucis avec les offset :

Code : Tout sélectionner

 $Offset[0] = 0
                     $Offset[1] = Dec(-0x30)
                     $Offset[2] = Dec(-0x18)
                     $Offset[3] = Dec(-0x25c) 
                     $Offset[4] = Dec(-0x60)
                     $Offset[5] = Dec(-0x348)
Comme vous avez pus le constater, j'ai du mettre le Offset[2] à -0x30 pour avoir 003ca930

Re: [..] _MemoryGetBaseAdress

Posté : sam. 19 oct. 2013 04:00
par Sea
Mon code code
► Afficher le texte
Mon NomadMemory
► Afficher le texte
Perso j'ai tester application 32 bit sa me donne un resultat et appli 64 bit pareil donc essaye avec ce que je t'es donné ;)

Après effectivement tu as un problème d'offset mais bon c'est pas très grave ça ^^
http://img15.hostingpics.net/pics/505184Sanstitre.jpg

Re: [..] _MemoryGetBaseAdress

Posté : sam. 19 oct. 2013 14:26
par Prorag
Je suis désolé mais mois ça ne fonctionne pas.
► Afficher le texte
Nomad Memory : J'ai copié le tien pour être sur ^^
► Afficher le texte
et le ProcessModuleGetBaseAddress64 je l'ai renommé 64 car tu m'en avait donné un autre pour le 32bit :
► Afficher le texte
http://www.hostingpics.net/viewer.php?i ... 3win64.png
http://www.hostingpics.net/viewer.php?i ... 3win64.png

Re: [..] _MemoryGetBaseAdress

Posté : sam. 19 oct. 2013 15:08
par Sea
Tu es sur quel OS?
La dernières version que je t'es envoyé est compatible 64 et 32 bit hein ;)

Et j'ai test avec ton script et tout fonctionne sur mon ordi (win 7 x64)

Re: [..] _MemoryGetBaseAdress

Posté : sam. 19 oct. 2013 15:11
par Prorag
Windows 8.1 64bit

Re: [..] _MemoryGetBaseAdress

Posté : sam. 19 oct. 2013 17:10
par Sea
Malheureusement je ne pourrais t'aider les API que j'utilise sont normalement aussi pressente dans Win8 et n'ayant pas de windows 8 pour tester je ne peux faire plus désolé :?

Re: [..] _MemoryGetBaseAdress

Posté : sam. 19 oct. 2013 17:30
par Prorag
Bon alors continuons sur le 32bit.
► Afficher le texte
http://www.hostingpics.net/viewer.php?i ... 3win32.png
http://www.hostingpics.net/viewer.php?i ... 3win32.png

Pourquoi ça marche pas? lol