Afferrando memoria da un altro processo
-
21-09-2019 - |
Domanda
in Windows, consente di dire che ho usato DLL Injection per entrare in un altro processo. Ho anche fatto alcuni screencaptures della memoria sul processo che ho iniettate e conoscere la posizione dei dati che voglio tirare fuori. Diciamo che ci sono dati in un altro processo in 0xAAAAAAAA che contiene un certo valore. Come posso afferrare questo valore da quel processo in modo da poter usare nella mia app iniettando? Dal momento che sto iniettato nel processo, posso solo usare qualcosa come memcpy?
memcpy(value, 0xaaaaaaaa, 10);
Sto assumendo che è probabilmente più complessa di questo?
EDIT:. Per le risposte qui sotto, non vedo come WM_COPYDATA mi aiuta come lo è per l'invio di dati a un'altra applicazione, non per il recupero dei dati da un'applicazione esistente
Soluzione
Si dovrebbe essere in grado di utilizzare il ReadProcessMemory funzione.
Si veda anche Come scrivere un programma Perl, Python o Ruby per cambiare la memoria di un altro processo in Windows?
Altri suggerimenti
In Windows ogni processo affronta la propria memoria. Ciò significa che non si può fare qualcosa di simile memcpy avere due puntatori che puntano alla memoria di due processi differenti.
Si può considerare qualsiasi possibilità di comunicazione tra processi: memoria mappata file, socket, pipe con nome, i messaggi di finestra evento
.Ecco ulteriori informazioni su IPC
Prova WM_COPYDATA e prendere l'aiuto da MSDN relative ad esso.
I seguenti meccanismi IPC sono supportati da Windows:
Appunti
COM
Data Copy
DDE
Mapping File
mailslots
tubi
RPC
Di Windows Sockets
nel tuo caso vorrei usare WM_COPYDATA Messaggio