/**
* Definimos las funciones para preparar la estructura a inyectar junto con la función inyectadora.
*/
#include "funcionInyectar.h"
/**
* Es la función de inicio que vamos a inyectar dentro de otro proceso.
* @param _paramInyectar* Puntero a la estructura que contiene las funciones y los datos a inyectar
*/
void funcionInyectada(_paramInyectar *paramInyectar){
/**
* Llamamos a la función MessageBox a través del puntero a función que guarda la dirección
* de dicha función.
*/
paramInyectar->_MessageBox(NULL, paramInyectar->mensaje, paramInyectar->mensaje, MB_OK);
}
/**
* Es la función que rellena/prepara la estructura con los datos necesarios a inyectar.
* @param _paramInyectar* Puntero a la estructura que contiene las funciones y los datos a inyectar
*/
void preparaInyeccion(_paramInyectar *paramInyectar){
HINSTANCE hUser;
//Limpiamos la estructura anulándola de posible basura informática
ZeroMemory(paramInyectar, sizeof(_paramInyectar));
//Obtenemos instancia de la librería user32.dll donde se encuentra la función MessageBox
hUser = LoadLibrary("user32.dll");
if(!hUser){
//"Error cargar librería user32.dll
return;
}
//Obtenemos la dirección de la función MessageBox que almacenamos en el puntero a función
paramInyectar->_MessageBox = (P_MESSAGEBOX)GetProcAddress(hUser, "MessageBoxA");
//Limpiamos la variable mensaje anulándola de posible basura informática
memset(paramInyectar->mensaje, 0, sizeof(paramInyectar->mensaje));
//Copiamos datos en la zona de la variable mensaje
strcpy(paramInyectar->mensaje, "Hola, soy una función inyectada en otro proceso");
//Ya tenemos nuestra estructura preparada para ser inyectada.
}