[..] _MemoryGetBaseAdress

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Prorag
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 05 avr. 2011 04:05
Localisation : France
Status : Hors ligne

[..] _MemoryGetBaseAdress

#1

Message 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
Modifié en dernier par Prorag le ven. 18 oct. 2013 20:18, modifié 3 fois.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..]_MemoryGetBaseAdress

#2

Message 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.
Avatar du membre
Prorag
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 05 avr. 2011 04:05
Localisation : France
Status : Hors ligne

Re: [..]_MemoryGetBaseAdress

#3

Message 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", "")
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..]_MemoryGetBaseAdress

#4

Message 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/
Avatar du membre
Prorag
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 05 avr. 2011 04:05
Localisation : France
Status : Hors ligne

Re: [..]_MemoryGetBaseAdress

#5

Message 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.
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..]_MemoryGetBaseAdress

#6

Message 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 ^^
Modifié en dernier par Sea le ven. 18 oct. 2013 19:54, modifié 1 fois.
Avatar du membre
Prorag
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 05 avr. 2011 04:05
Localisation : France
Status : Hors ligne

Re: [..]_MemoryGetBaseAdress

#7

Message 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'
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..]_MemoryGetBaseAdress

#8

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] _MemoryGetBaseAdress

#9

Message 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
Avatar du membre
Prorag
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 05 avr. 2011 04:05
Localisation : France
Status : Hors ligne

Re: [..] _MemoryGetBaseAdress

#10

Message 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
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] _MemoryGetBaseAdress

#11

Message 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
 
Avatar du membre
Prorag
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 05 avr. 2011 04:05
Localisation : France
Status : Hors ligne

Re: [..] _MemoryGetBaseAdress

#12

Message 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
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] _MemoryGetBaseAdress

#13

Message 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
Avatar du membre
Prorag
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 05 avr. 2011 04:05
Localisation : France
Status : Hors ligne

Re: [..] _MemoryGetBaseAdress

#14

Message 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
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] _MemoryGetBaseAdress

#15

Message 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)
Avatar du membre
Prorag
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 05 avr. 2011 04:05
Localisation : France
Status : Hors ligne

Re: [..] _MemoryGetBaseAdress

#16

Message par Prorag »

Windows 8.1 64bit
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [..] _MemoryGetBaseAdress

#17

Message 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é :?
Avatar du membre
Prorag
Niveau 2
Niveau 2
Messages : 24
Enregistré le : mar. 05 avr. 2011 04:05
Localisation : France
Status : Hors ligne

Re: [..] _MemoryGetBaseAdress

#18

Message 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
Répondre