2010-06-25 4 views
5

Quelqu'un peut-il expliquer comment un programme se connecte et modifie le comportement d'autres programmes dans Windows?Comment puis-je me connecter à d'autres programmes sous Windows?

Comment est-ce encore possible? Les programmes Windows ne se protègent-ils pas des autres programmes qui se trouvent dans leur mémoire, etc.? (Je ne connais pas les internes comment ça marche donc je viens de dire "dans leur mémoire" - Je parie que c'est plus complexe que ça.)

Est-ce que les Windows modernes comme Windows 7 le permettent encore?

Merci, Boda Cydo

Répondre

5

Il y a plusieurs façons de se connecter et de modifier le comportement d'autres programmes. Par exemple, vous pouvez écrire directement dans la mémoire d'un autre programme (WriteProcessMemory) ou injecter un thread dans la mémoire d'un autre programme (CreateRemoteThread). Cela présume que vous avez des droits pour contrôler cet autre programme.

Vous pouvez également injecter un hook de fenêtre via SetWindowsHookEx. Cela suppose que vous exécutez la session de l'utilisateur au niveau d'intégrité identique ou supérieur du programme dans lequel vous injectez.

Ceci est encore autorisé pour plusieurs raisons. Sans moyen de modifier le comportement des autres programmes, vous ne pourrez pas implémenter un débogueur. Les crochets Windows sont utilisés en testant des programmes, des programmes d'accessibilité, des programmes qui modifient l'aspect et la convivialité de Windows, etc.

+0

Pouvez-vous faire cela sous Linux? Je pense que sous Linux, vous ne pouvez pas manipuler la mémoire d'un autre programme? – bodacydo

+0

Je ne suis pas un développeur linux. Comment un débogueur linux en mode utilisateur peut-il insérer un point d'arrêt dans un processus ou lire la pile d'un thread? – Michael

+0

Vous exécutez généralement le programme via 'gdb'. Puis, puisque gdb forks le processus fils, il a en quelque sorte accès à ce programme, mais je ne suis pas sûr, je suis nouveau à tout cela. – bodacydo

0

Imaginez une application qui enregistre les données de fichier x.txt vous pouvez saisir le contenu de x.txt, et tenter de trouver une différence dans la x.txt enregistrée contre le x courant. txt, une fois qu'il a changé, vous pouvez avoir un feu d'événement en sachant que le programme X a modifié son fichier x.txt.

Vous pouvez le faire à un niveau inférieur, mais le concept reste le même, (surveiller quelque chose pour le changement).

+0

N'est-ce pas simplement une manipulation de la mémoire? Le même concept utilisé pour créer des Game Trainers? Je pensais que l'OP parlait de hooks physiques pour exécuter du code (peut-être la même chose ...) comme comment Steam Hook vos jeux 3D pour intégrer son overlay. – Aren

Questions connexes