#include <windows.h>
#include <stdio.h>
#define USAGE "usage : ./%s <serial>\n\n"
typedef void (*INTER)(char*);
int main(int argc , char* argv[])
{
HINSTANCE pLib = LoadLibrary("MiniVMPar0vercl0k.dll") , pLib2 = LoadLibrary("user32.dll");
INTER interprete;
if( pLib == NULL || !argv[1] || pLib2 == NULL)
{
printf(USAGE , argv[0]);
return 0;
}
char* good = "good boy.";
char* bad = "bad boy.";
char code[] = "\x15\x00\xFF\xFF\xFF\xFF\x19\x01\x00\x15\x02\x74\x00\x00\x00\x26"
"\x01\x02\x24\xAA\xAA\xAA\xAA\x12\x00\x19\x01\x00\x15\x02\x61\x00\x00\x00\x26\x01"
"\x02\x24\xAA\xAA\xAA\xAA\x12\x00\x19\x01\x00\x15\x02\x70\x00\x00\x00\x26\x01\x02"
"\x24\xAA\xAA\xAA\xAA\x12\x00\x19\x01\x00\x15\x02\x7a\x00\x00\x00\x26\x01\x02\x24"
"\xAA\xAA\xAA\xAA\x23\xAA\xAA\xAA\xAA\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xEE\xEE\xEE"
"\xEE\x00\x00\x00\x00\x25\x23\xAA\xAA\xAA\xAA\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xEE"
"\xEE\xEE\xEE\x00\x00\x00\x00";
long ptr4 = (long)code + 102;
long addrMessageBox = (long)GetProcAddress(pLib2 , "MessageBoxA");
memcpy((void*)(code+2),&argv[1],4); memcpy((void*)(code+19),&ptr4,4); memcpy((void*)(code+38),&ptr4,4); memcpy((void*)(code+57),&ptr4,4); memcpy((void*)(code+76),&ptr4,4); memcpy((void*)(code+81),&addrMessageBox,4); memcpy((void*)(code+103),&addrMessageBox,4); memcpy((void*)(code+89),&good,4); memcpy((void*)(code+93),&good,4); memcpy((void*)(code+111),&bad,4); memcpy((void*)(code+115),&bad,4); interprete = (INTER)GetProcAddress(pLib , "interprete0vercl0kLanguage" );
printf("[+] Adresse de la fonction : %p.\n", interprete);
interprete(code);
FreeLibrary(pLib);
return 0;
}