Page 4 sur 5

Re: Cheater_Lib

Publié : sam. 20/févr./2010 15:39
par Backup
je viens de mettre a l'epreuve ma fonction
cheater_map("prg_cible.exe","MAP_PROCESS")

en utilisant mon prg_cible , et en comparant aux résultats de memHack

j'obtiens bien les segments du process , et plus particulièrement le segment ou se trouve ma variable de test.....

j'ai pu ensuite utiliser la meme adresse de variable (vérifié sur memHack) pour lire ou ecrire une nouvelle valeurs ....

il me semble donc que cette fonction est bonne ..

par contre je vais faire une nouvelle version de la Librairie
car actuellement la fonction cheater_map("prg_cible.exe","MAP_PROCESS")
renvoie le champ d'adresse qui par de l'entry point ( au alentour de $1000 )
alors que finalement les segments qui nous intéressent commence généralement a $400000 , ça va réduire la taille du champ mémoire pour les recherches
je prends exemple sur les prg de scan qui existent et qui commencent tous leur scan a partir de $400000 !

effectivement un prg contient plusieurs sections, je suppose que $400000 doit correspondre a l'adresse de base ou se trouve les variables....

finalement ma fonction ne sert qu'a connaitre l'adresse d'un segment mais surtout sa taille , mais mon petit doigt me dit que si on scan directement avec une boucle du genre :

Code : Tout sélectionner

For ad=$400000 To  $800000  ; 
    If  cheater_R_byte("prg_cible.exe" , ad) =125 ; on lit les octets 
        Debug "trouvé "+ Hex(ad)
    EndIf  
Next ad      
ça marche tres bien !! (j'ai vérifié !! )

moralité ma fonction cheater_map("prg_cible.exe","MAP_PROCESS")
ne sert pas a grand chose , si ce n'est que comme elle renvoie les segments avec leur tailles on est sur de scanner les segments de notre process.... mais je pense que meme si on scan entre les segments ( dans les trous)
ça n'est pas grave , puisque le but du scan consiste a vérifier plusieurs fois
pour constater un changement de valeurs, qui nous indiquera a coup sur l'adresse qui nous intéresse !!



je pense que les memhack et compagnies utilisent ce systeme, qui est le seul a etre
rapide ....(un peu brutal mais sans danger, on ne fait que lire...)

le code ci dessus renvoi les adresses contenant la valeur 125
il suffirai de le relancer en comparant avec la valeur 124 , ( puisque mon prg_cible diminue cette variable )
et de regarder si l'une des adresses que nous avions, est toujours présente dans la liste, ça nous indiquerai tout de suite a qu'elle adresse correspond notre variable :)
( seul ceux qui on pratiqué le Hack peuvent me comprendre a ce stade :lol: )

tout ça pour dire que finalement les fonctions de la lib telle qu'elle existent depuis le debut
**********************************************************************
Lire un octet a l'adresse (Address.l) du programme "warrock.exe" présent en mémoire

cheater_R_byte( "warock.exe" , Address.l )


**********************************************************************


Lire un Word a l'adresse (Address.l) du programme "warock.exe" présent en mémoire

cheater_R_word( "warock.exe" , Address.l )


**********************************************************************
Lire un Long a l'adresse (Address.l) du programme "warock.exe" présent en mémoire

cheater_R_long( "warock.exe" , Address.l )


**********************************************************************

Lire un Flotant a l'adresse (Address.l) du programme "warock.exe" présent en mémoire
cheater_R_float( "warock.exe" , Address.l )

suffisaient pour trouver une adresse de variable ! :D

avec un code comme celui que j'ai mis ci dessus ;)

Re: Cheater_Lib

Publié : sam. 20/févr./2010 19:54
par bebou007
salut bon je comprend se que tu veut dire mais pourquoi tous les programme commence a $10000 c'est pas les adresse réel de la RAM alors je vais faire le tester après sur gta

Re: Cheater_Lib

Publié : sam. 20/févr./2010 20:00
par Backup
bebou007 a écrit :salut bon je comprend se que tu veut dire mais pourquoi tous les programme commence a $10000 c'est pas les adresse réel de la RAM alors je vais faire le tester après sur gta
si le prg comment a $10000 parce que cette adresse est relative au process !!

la ram :

|___________|processxxxxxxxxx|<--$1000____________|processyyyyyyyyy|<--$1000______|_______________________|

rappelle toi que mes fonctions ne renvoient pas n'importe quelle adresse , tu donne le nom du process , c'est la ram de CE process que tu vois !! ;)

chaque processus réserve son espace memoire dans la ram (jusqu'a 2 gigas !!)
et chaque process a les memes 'nom' d'adresse dans leur espace puisque cette
espace, et donc leur adresse sont relatif au debut du process !

c'est pourquoi les Cheat engine et autre MemHack commence le scan a $400000
pour tout les processus , parce que cette adresse existe pour chacun d'eux !!
:D

Re: Cheater_Lib

Publié : sam. 20/févr./2010 22:06
par bebou007
bon j'ai beaux essayer plusieurs solution pour lire $10000 il faut 108 second donc pour les 400000 de 400000 A 800000 il me faudrais 74minute lol c long pour cherche une valeur

a tu essayer de voir le temp que sa te donne

Re: Cheater_Lib

Publié : sam. 20/févr./2010 23:24
par Backup
bebou007 a écrit :bon j'ai beaux essayer plusieurs solution pour lire $10000 il faut 108 second donc pour les 400000 de 400000 A 800000 il me faudrais 74minute lol c long pour cherche une valeur

a tu essayer de voir le temp que sa te donne
mon but n'etait pas de faire de la vitesse , mais de demontrer qu'on est pas obligé de suivre les segments donné par la fonction cheater_map("prg_cible.exe","MAP_PROCESS")


la base etant bien l'adresse $400000 ( cette adresse est la reference de tout les programmes de ce type )

la limite de fin de scan est encore a definir ....

j'ai mis $800000 , au hasard !!
il est bien evident , que cette limite est surement trop importante ..
Mytic aurai pu nous aider la dessus , mais apparemment il a disparu ...

de plus mon exemple lit octets par octets !

en utilisant les Long (cheater_R_long("prg_cible.exe" , ad))
nous pourrions lire les octets 4 par 4 , ce qui accelere pas mal X4 !


bref , je tatonne , car aucune info sur le sujet ne traine sur le NET !
c'est du bidouillage total !

en plus mon exemple lit les adresses en direct live ce qui est tres lent !

il vaut mieux precharger toutes les adresses (de $400000 a $800000) par exemple
dans un tableau , ou une chaine , et ensuite utiliser findstring() par exemple
qui est tres tres rapide !

là c'est trp tards, mais j'essaierai de te faire un exemple :)

Re: Cheater_Lib

Publié : dim. 21/févr./2010 11:09
par bebou007
ok je comprend ce que tu veut dire mais quand j'ouvre tsearch j'ai accède a toute les donner instantanément aucun chargement

tu te sert de quel fonction pour lire la mémoire readprocessmeory ?

car avec readprocessmeory on peut choisir le nombre d'octet a lire peut etre que on devrais recupere toute les donner en une seul fois pour ensuite recherche les donner


[edit]

bon je vien de tester avec long et je met 87second au lieu de 108 c'est quand même long

je penses qu'il fraudais récupère le segment entier plutôt que un octet ou 4 pour un long

si tu te sert de readprocessmeory j'aurais bien voulue des info dessus

la fonction demande le handle,une adresse,un pointeur pour copier les donner,la taille,un pointeur pour renvoyer la taille lue

j'arrive pas a l'utiliser le handle comment l'avoir quel fonction le donne?
merci


bon je vien de faire un essayer avec readprocessmemory et sa marche pour lire les $10000 il me faut 0ms lol

donc je pensse c'est c'est comme sa qu'il faut faire recupere les page entiere en une seule fois

voici mon code c'est pour gtaiv

Code : Tout sélectionner


window = FindWindow_(0, "GTAIV") ;Finds the Window Title
GetWindowThreadProcessId_(window, @ProcessID)
hProcess = OpenProcess_(#PROCESS_ALL_ACCESS,0,ProcessID)


Dim teste.b($10000)

time1=ElapsedMilliseconds()


Address = $10000 ; I found this address using tsearch
ReadProcessMemory_(hProcess, Address, @teste.b(), $10000, @size)


time2=ElapsedMilliseconds()


MessageRequester("Alert",Str(time2)+" "+Str(time1))

MessageRequester("Alert",Str(size))

MessageRequester("Alert",Str(teste.b(9)))


j'ai récupère ce code sur le forum anglais moi je bloquer sur #PROCESS_ALL_ACCESS j'avais pas mit le # si non j'y etais presque lol

Re: Cheater_Lib

Publié : dim. 21/févr./2010 12:14
par Backup
bebou007 a écrit : la fonction demande le handle,une adresse,un pointeur pour copier les donner,la taille,un pointeur pour renvoyer la taille lue
he ben non ce serai trop facile !

la "taille" renvoyé doit correspondre a 1 (byte) , 2(word),4(long), 8(double ou integer)

mais pas plus !!

je me suis fait vite fait une fonction

Str(cheater_R_segment("prg_cible.exe",adr,Taille))

et ça ne renvoi plus rien si on depasse 8 !
on a meme un plantage memory ....

ce serai trop simple ... :)

Re: Cheater_Lib

Publié : dim. 21/févr./2010 12:22
par bebou007
je viens d'éditer mon poste et pourtant sa marche j'ai mit $10000 en taille et size me renvoie 65536 soit 10000hexa donc la fonction arrive bien a lire la partie que j'ai demander et dans mon tableau en position 9 j'ai la même valeur que sur tsearch

Re: Cheater_Lib

Publié : dim. 21/févr./2010 13:36
par Backup
oui je vois ça ... 8O :lol:

bon comme moi je suis en procedure , ça doit venir de la façon dont je retourne
le parametre ....

j'avais essayé avec les buffer memoire
mais pas avec un tableau ! :roll:

je vais regarder ça :)

Re: Cheater_Lib

Publié : dim. 21/févr./2010 13:38
par bebou007
j'avais essayer aussi avec les buffer memoire et puis je me suis dit un tableau pourais le faire

Re: Cheater_Lib

Publié : dim. 21/févr./2010 16:11
par Ar-S
Arf courage Dobro c'est toujours la grosse merde les inondation.

Re: Cheater_Lib

Publié : dim. 21/févr./2010 18:01
par Backup
Ar-S a écrit :Arf courage Dobro c'est toujours la grosse merde les inondation.

heu ça fait un moment que c'est fini....

enfin l'inondation , reste a faire jouer les assurances , meme avec un super contrat
qui nous rembourse au prix des affaire neuves ... c'est pas gagné ... :)

Re: Cheater_Lib

Publié : sam. 14/août/2010 0:17
par bebou007
Salut Dobro sa fait un moment que j'ai lâcher la lecture de mémoire mais je revient pour continue se que je voulais faire pour gta4 mais cette fois sur gta eflc je sais comment recupere les donner ou ecrire mais je ne sais toujour pas comment tu a fait pour trouver les page de mémoire je pourrais utiliser ta lib mais je préfère comprendre donc si tu pourrais me dire quel fonction de l'api tu tes servie merci

Re: Cheater_Lib

Publié : mer. 01/sept./2010 10:13
par Dioud
Lup, c'est juste pour signaler que Cheater_Lib ne marche pas en 4.50 :/ (du moins sur mon ordi)

Re: Cheater_Lib

Publié : mer. 01/sept./2010 12:06
par Backup
ha oui ! c'est nul de devoir recompiler une librairie a chaque version de purebasic :roll:

bon en principe c'est corrigé , dispo sur mon telechargement !
http://michel.dobro.free.fr/download.php?view.12

voila ! pfff du coup va falloir que je verifie le reste :?

ps : tiens moi au jus ...