2009-11-20 6 views
1

dans Windows, permet de dire que j'ai utilisé l'injection de DLL pour entrer dans une autre procédure. Je l'ai aussi fait quelques screencaptures de la mémoire sur le processus que j'ai injecté dans et connaître l'emplacement des données que je veux sortir. Disons qu'il y a des données dans l'autre processus à 0xaaaaaaaa qui contient une certaine valeur. Comment puis-je récupérer cette valeur à partir de ce processus afin de pouvoir l'utiliser dans mon application d'injection? Depuis que je suis injecté dans le processus, puis-je utiliser quelque chose comme memcpy?Saisissant la mémoire d'un autre processus

memcpy(value, 0xaaaaaaaa, 10); 

Je suppose que c'est probablement plus impliqué que cela?

EDIT: Pour les réponses ci-dessous, je ne vois pas comment WM_COPYDATA m'aide comme c'est pour envoyer des données à une autre application, pas pour récupérer des données d'une application existante.

Répondre

3

Dans Windows tous les processus adresses de sa propre mémoire. Cela signifie que vous ne pouvez pas faire quelque chose comme memcpy ayant deux pointeurs qui pointent vers la mémoire de deux processus différents.

Vous pouvez envisager toute possibilité de communication interprocessus: fichiers mappés en mémoire, les prises, les pipes nommés, des messages de fenêtre d'événements.

est ici plus d'informations sur IPC

1

Essayez WM_COPYDATA et prendre l'aide de MSDN qui s'y rapporte.

1

Les mécanismes IPC suivants sont pris en charge par Windows:

Presse-papiers
COM
Data Copy
DDE
Mapping fichier
Mailslots
Pipes
RPC
Windows Sockets

plus détails ici Interprocess Communications

dans votre cas, j'utilise WM_COPYDATA Message