Hola amigos hoy les traigo un nuevo programa es como usar las apis mensionadas en el titulo ReadProcessMemory y WriteProcessMemory en c++ yo ya habia hecho un video y un programa en vb6 pero el video me lo tumbaron de la plataforma de youtube ya que me bloquearon la cuenta en fin ahora lo traigo en c++ es sencillo, antes que nada se bajan el dev c++ si no lo tienen y le dan clic en
declaramos las librarias a usar que son 2 y la ultima linea es para no estar escribiendo std:: a cada ratoenseguida de eso declaramos el main y la variable pid como variable DWORD y le pedimos al usuario que nos de el pid del proceso
int main()
{
DWORD pid;
cout<<"dame el pid del preceso: ";
cin>>pid;
para saber el pid de un ejecutable entran al administrador de tareas y fijais en el pid, si no les aparece solo den clic derecho en la barra de arriba y palamean la opcion pid asi
ahora tecleamos lo siguiente en el codigo
char texto[64];
void *direccion;
HANDLE Proceso=OpenProcess(PROCESS_ALL_ACCESS,0,pid);
lo que hace esta parte es declarar una variable char llamada texto con 64 espacios de memoria donde cada espacio ocupara una letra asi que ustedes le pueden poner mas de 64 si quieren leer mas bytes de memoria yo solo puse 64 para el ejemplo le pueden poner mas.
declaramos la variable direccion como void y usamos la api OpenProcess para abrir el proceso o ejecutable que vamos a leer, otra cosa yo aqui no estoy usando las apis
FindWindow, GetProcessId y GetWindowThreadProcessId
para buscar el preceso en ejecucion por su nombre y luego abrirlo no, aqui usaremos el administrador de tareas y el usuario nos dara el pid del ejecutable, lo puedo hacer asi pero lo quise hacer mas sencillo y sin tanto rollo seguimos
if(Proceso)
{
cout<<"Dame la direccion: ";
cin>>direccion;
ReadProcessMemory(Proceso,direccion,&texto,sizeof(texto),0);
cout<<"El texto: "<<texto<<" a sido encontrado ingrese el nuevo texto: ";
cin>>texto;
WriteProcessMemory(Proceso,direccion,&texto,sizeof(texto),0);
cout<<"El texto a sido ingresado correctamente";
}
}
ponemos un if si el preceso lo abrio devolvera un true y entra al if, despues de eso le pedimos al usuario que nos de la direccion de memoria que vamos a leer, para buscar la direccion de memoria usaremos el cheat engine lo pueden descargar si no lo tienen, despues usando la api ReadProcessMemory leemos la posicion de memoria pasandole el proceso, la direccion, el array de char que la llamamos texto y la longitud de el con sizeof(texto) que es 64
de la api WriteProcessMemory no es nesesario explicar funciona igual pero en ves de leer escribe y se le pasan los mismos datos asi que el codigo completo queda asi
ya despues lo compilamos y ejecutamos aqui
nos pide el pid del ejecutable yo para este ejemplo usare el crackme de hendrix este y en el cuadro de texto le pondre polomon
abro el administrador de tareas en mi pc y miro que el pid es 3184
asi que lo tecleo en mi programa para leer
ahora antes de seguir busco la posicion de memoria de la palabra polomon que teclee en el programa de hendrix con el cheat engine asi
y buscamos el preceso aqui esta
damos clic en open y buscamos la palabra polomon asi
aparece lo siguiente
damos enter donde pusimos el pid y tecleamos la direccion de memoria asi
ahora para el nuevo texto que pondre sera 1234567890 y damos enter y me arroja lo siguiente
como ven solo escribio 7 digitos los mismos digitos que tiene polomon, en fin falta mucho que perfeccionar este simple codigo es para que se vallan familiarizando con estas apis...otra cosa este codigo no lee cadenas de unicode si tratan de leer solo leera la primera letra pero en fin eso para otro tema
saludos flamer y espero les halla gustado este simple codigo
No hay comentarios.:
Publicar un comentario