Un petit memory patcher pour modifier un exe em memoir et non le "cracker"
Afin de modifier son comportement
Il est basé sur le "crackme" de Arecibo dans le zip
Source / Exemple :
// 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;
}
Conclusion :
Un pb mailer moi
pix@laposte.net
www.pixdesign.fr.fm
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.