Page 1 sur 1
[..] Un problème de Array apparement ...
Posté : ven. 22 oct. 2010 20:48
par MaxDog
Bonjour !
Voilà, je débute un peu, et je cherche à faire un truc pour faire des photos d'un jeu ...
Je souhaiterai enfaite, pouvoir me servir d'un menu d'un jeu, pour pouvoir y mettre ce qu'on veut comme texte dedans ...
Exemple : Couleur : Bleu - Texte : Bonjour ! - Texte Bouton Fermer : Bye
*Un menu s'ouvre dans le jeu en cours*
J'ai presque fini, je doit être a 70 %, couleurs, texte ...
Mais voilà, il va falloir lire la mémoire pour faire ceci, et là, un code trouvé sur le net bug (enfin une include, mais c'est seulement la partie lecture de mémoire qui bug) :
► Afficher le texte*Click*
Code : Tout sélectionner
Func _MemoryRead($iv_Address, $ah_Handle, $sv_Type = 'dword')
If Not IsArray($ah_Handle) Then
SetError(1)
Return 0
EndIf
Local $v_Buffer = DllStructCreate($sv_Type)
If @Error Then
SetError(@Error + 1)
Return 0
EndIf
[color=#FF0000]DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')[/color]
If Not @Error Then
Local $v_Value = DllStructGetData($v_Buffer, 1)
Return $v_Value
Else
SetError(6)
Return 0
EndIf
EndFunc
Le message d'erreur est le suivant :
Le reste de l'include marche bien ...
Merci de votre aide, car 3 jours de recherche & rien :/
Bye !
Re: [..] Un problème de Array apparement ...
Posté : sam. 23 oct. 2010 17:30
par bloodwolff
Le problème doit provenir d'un autre endroit , il serait bien d'avoir le reste du script surtout l'endroit où tu utilise la fonction et les variable que tu lui envois car d'après moi ( je ne suis pas toujours une référence) le problème se situe dans le $ah_Handle que tu lui envois
Re: [..] Un problème de Array apparement ...
Posté : sam. 23 oct. 2010 18:56
par timmalos
Exact, ne touchez pas à l'include elle est correcte, mais ce que vous cherchez apparemment à faire est tres compliqué, il va nous falloir le code complet pour vous aider.
Re: [..] Un problème de Array apparement ...
Posté : dim. 24 oct. 2010 15:46
par sylvanie
Bonjour,
A tout hasard, est ce que _MemoryOpen n'aurait pas retourné une erreur et malgrès celà, _MemoryRead serait appelée ?
ou bien y aurait il eu une modification du tableau reatourné par _MemoryOpen avant l'appel à _MemoryRead
[EDIT]
JE viens de jouer un peu avec l'udf en question, je n'ai pas rencontré ce problème, cependant j'ai rmarqué qu'elle n'arrive pas à lire lorsqu'on compile en 64bits (sur machine 64 bits bienûr ...). Par contre avec le même code, ça marche bien si les deux exe (le programme qui se fait interrogé, et l'interrogeur (celui qu'on programme en ce momment) sont compilé en 32 bits.) ça sent un peut le soucis qu'une addresse 64 bits ce fait tronquée sur 32 par un mauvais cast
[REEDIT]
Banco ! (du moins pour le problème que j'ai évoqué). Pour faire marcher cette udf en 64 bits, il faut modifier l'appel à la dll dans la fonction de lecture :
DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'INT64', $ah_Handle[1], 'INT64', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'INT64', '')
En gros va falloir dépossiérer l'UDF pour fair un swich entre appel 32bits/64bits sachant que c'est l'exe interrogé qui va conditionner la donne.