Agarrando la memoria de otro proceso
-
21-09-2019 - |
Pregunta
en Windows, digamos que he utilizado DLL inyección para entrar en otro proceso. También he hecho algunas capturas en de la memoria en el proceso que he inyectado en y conocer la ubicación de los datos que desea sacar. Digamos que hay datos en el otro proceso en 0xAAAAAAAA que contiene un cierto valor. ¿Cómo puedo agarrar este valor de ese proceso para que pueda utilizarlo en mi aplicación de la inyección? Desde que estoy inyecta en el proceso, ¿puedo usar algo como establecimiento de memoria?
memcpy(value, 0xaaaaaaaa, 10);
Estoy asumiendo que es probablemente más complicado que esto?
EDIT:. Para las respuestas abajo, no veo cómo WM_COPYDATA me ayuda como lo es para el envío de datos a otra aplicación, no para recuperar datos de una aplicación existente
Solución
Usted debe ser capaz de utilizar el ReadProcessMemory función.
Ver también Cómo escribir un programa Perl, Python, Ruby o cambiar la memoria de otro proceso en Windows?
Otros consejos
En Windows cada proceso tiene en cuenta su propia memoria. Esto significa que no puede hacer algo como memcpy tener dos punteros que apuntan a la memoria de dos procesos diferentes.
Se puede considerar cualquier opción de comunicación entre procesos: archivos de memoria asignada, tomas de corriente, canalizaciones con nombre, mensajes de ventana evento
.Aquí hay más información acerca de IPC
Pruebe WM_COPYDATA y tomar la ayuda de MSDN perteneciente a la misma.
Los siguientes mecanismos IPC son compatibles con Windows:
Portapapeles
COM
Copiar datos
DDE
Archivo de asignación de
mailslots
tubos
RPC
Ventanas de sockets
en su caso me gustaría usar WM_COPYDATA mensaje