- // cpp_france_mempatch.cpp : Defines the entry point for the console application.
- //
-
- #include <windows.h>
-
- int main(void)
- {
-
-
-
- // On crée la structure startupinfo
- STARTUPINFO startupinfo;
- // On la rempli avec des 0
- memset (&startupinfo, 0, sizeof (STARTUPINFO)) ;
- // on indique a la structure sa taille
- startupinfo.cb = sizeof(startupinfo);
-
- // On crée la structure process
- PROCESS_INFORMATION process;
- // On la rempli avec des 0
- memset (&process, 0, sizeof (PROCESS_INFORMATION)) ;
-
- // La ou on va placer la portion de memoire lu
- char memread[1];
- // Si on passe des arguments
- char* cmdline;
-
- // on recupere les arguments
- cmdline = GetCommandLine();
-
- // Nombre de Test d'ecriture
- // Max de test d'ecriture
- // Temps entre chaque tests
- int nb_test = 0,max_test=100,wait_time = 5;
-
- // on crée le proces
- if (CreateProcess("Crackme.exe", cmdline, NULL, NULL,FALSE, NORMAL_PRIORITY_CLASS,NULL, NULL, &startupinfo, &process))
- {
-
- //on lit le memoire
- ReadProcessMemory(process.hProcess, (LPVOID) 0x40109F, memread, 1, NULL);
-
- // tant que la zone != 0x75: jne
- while ( (memread[0] != 0x75) )
- {
- //incremente test
- nb_test++;
- // Sleep
- Sleep(wait_time);
- // on lit
- ReadProcessMemory(process.hProcess, (LPVOID) 0x40109F, memread, 1, NULL);
-
- // si trop de tests
- if ( nb_test > max_test )
- {
- // héhé bad boy :-)
- MessageBox(NULL,"Imposible à patcher en memoire\nMauvaise Version ou Erreur","Erreur",MB_OK|MB_ICONERROR);
- return 0;
- exit(-1);
- }
- }
-
-
-
- // On ecrit dans la memoide du grog
- WriteProcessMemory (process.hProcess, (LPVOID)0x40109F, "\x74", 1, NULL);
-
- // On a plus besoin de rien faire on ferme l'handle
- // pas le prog juste l'handle
- CloseHandle (process.hProcess);
- CloseHandle (process.hThread);
-
- }
- else
- {
- // on a pas pu l'ouvrir
- MessageBox(NULL, "Erreur Imposible d'ouvrir Crackme.exe", "Erreur", MB_OK|MB_ICONERROR);
- exit(-1);
- }
-
- return 1;
-
- }
// cpp_france_mempatch.cpp : Defines the entry point for the console application.
//
#include <windows.h>
int main(void)
{
// On crée la structure startupinfo
STARTUPINFO startupinfo;
// On la rempli avec des 0
memset (&startupinfo, 0, sizeof (STARTUPINFO)) ;
// on indique a la structure sa taille
startupinfo.cb = sizeof(startupinfo);
// On crée la structure process
PROCESS_INFORMATION process;
// On la rempli avec des 0
memset (&process, 0, sizeof (PROCESS_INFORMATION)) ;
// La ou on va placer la portion de memoire lu
char memread[1];
// Si on passe des arguments
char* cmdline;
// on recupere les arguments
cmdline = GetCommandLine();
// Nombre de Test d'ecriture
// Max de test d'ecriture
// Temps entre chaque tests
int nb_test = 0,max_test=100,wait_time = 5;
// on crée le proces
if (CreateProcess("Crackme.exe", cmdline, NULL, NULL,FALSE, NORMAL_PRIORITY_CLASS,NULL, NULL, &startupinfo, &process))
{
//on lit le memoire
ReadProcessMemory(process.hProcess, (LPVOID) 0x40109F, memread, 1, NULL);
// tant que la zone != 0x75: jne
while ( (memread[0] != 0x75) )
{
//incremente test
nb_test++;
// Sleep
Sleep(wait_time);
// on lit
ReadProcessMemory(process.hProcess, (LPVOID) 0x40109F, memread, 1, NULL);
// si trop de tests
if ( nb_test > max_test )
{
// héhé bad boy :-)
MessageBox(NULL,"Imposible à patcher en memoire\nMauvaise Version ou Erreur","Erreur",MB_OK|MB_ICONERROR);
return 0;
exit(-1);
}
}
// On ecrit dans la memoide du grog
WriteProcessMemory (process.hProcess, (LPVOID)0x40109F, "\x74", 1, NULL);
// On a plus besoin de rien faire on ferme l'handle
// pas le prog juste l'handle
CloseHandle (process.hProcess);
CloseHandle (process.hThread);
}
else
{
// on a pas pu l'ouvrir
MessageBox(NULL, "Erreur Imposible d'ouvrir Crackme.exe", "Erreur", MB_OK|MB_ICONERROR);
exit(-1);
}
return 1;
}