Accès libre à la mémoire Vive
tomac
Membre
Bonjour,
J'aimerais savoir si il est possible d'avoir accès à la mémoire vive utilisée par une autre application (ou autre processus), c'est à dire pouvoir lire et modifier des valeurs à certaines adresses. Bien sur tout cela en objective-c.
Merci d'avance
J'aimerais savoir si il est possible d'avoir accès à la mémoire vive utilisée par une autre application (ou autre processus), c'est à dire pouvoir lire et modifier des valeurs à certaines adresses. Bien sur tout cela en objective-c.
Merci d'avance
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Imagine sinon, un buffer overflow pourrait aller taper aléatoirement dans la mémoire d'une autre appli.
Edit :
Avec un langage aussi simple que autoit il est possible de le faire ^^
D'ailleurs iHaxGamez permet de modifier des valeurs dans la mémoire vive non ?
Mais il me semble que c'est un peu aussi le cas sous Windows d'ailleurs.
Par contre cela n'empêche pas de faire communiquer plusieurs applications entre elles, si elles ont prévu ce qu'il faut pour, et d'échanger des objets et des images entre elles.
Je pense que c'est ta formulation "accès libre à la mémoire vive" qui est mauvaise (genre taper dans un void* et en faire se que l'on veut n'importe comment, écrire dans un buffer quelconque de la mémoire d'une autre appli sans lui demander son avis, etc... bref faire des accès libres (sans contrôles) à la mémoire vive (donc aux buffers quelconques de la zone mémoire, indépendamment de leur zone, type, ou des variables qui pointent sur ces zones mémoires). Si on pouvait faire ça, bonjour les corruptions mémoire dans tous les sens, et bonjour les crash assurés.
Mais par contre dans Cocoa il y a tout ce qu'il faut pour qu'une application puisse appeler des objets d'une autre application, échanger des objets entre applications Cocoa, déclencher des événements depuis une application à destination d'une autre application, etc...
Tout ce qu'il te faut est expliqué dans la doc des Distributed Objects.
De toute manière, la gestion de la mémoire sous Windows et sous un UNIX c'est très différent et incomparable.
Edit :
J'ai trouver mon bonheur dans les sources de iHaxGamez, qui je le rappel permet de choisir un processus et d'avoir accès à la mémoire utilisée par celui-ci.
Euh là , y a personne qui veut d'un MBP tout neuf , gratos ? :brule: :brule:
Le C permet aussi de construire une mémoire partagée entre deux process, mais le code de chaque process doit l'avoir prévu. Voir les pages man de shmget shmat.
En passant par un driver directement lancé dans le noyau, on fait effectivement tout ce qu'on veut sur une machine.
Comment interprétez-vous les permissions ? Par exemple, la stack en mode : rw-/rwx SM=COW
Pour les permissions :
En gros c'est current "rw-" et max "rwx" pour le processus (et le kernel qui a tous les droits bien sûr).
En cherchant autre chose j'ai vu hier justement une petite appli qui permet ce genre de chose. Perso j'y ai pas compris grand chose mais ce n'était pas non plus l'objet de mes recherches.
Aller dans la doc Xcode et faire une recherche sur ... SharedMemory !
Une fois l'archive décompressée il faut renommer le dossier .pbproject en .xcodeproject, le lancer d'un double clic, le renommer pour pouvoir l'enregistrer dans son dossier d'origine et, enfin, aller dans le menu Project et faire "upgrade all targets to native". Après ça compile et se lance.
Il faut faire des copies de l'appli de départ, les lancer, et on peut écrire dans l'une et voir le résultat dans les autres ..
hth