Tutti i contenuti di GunyaGunya
-
[CrackMe] KeygenMe 01
Voglio vedere quanto è difficile da decifrare questo algoritmo di generazione del seriale che ho inventato in 5 minuti di noia così ho messo insieme questo programmino asd. Dovrebbe essere relativamente semplice come crackme anche se non ho provato personalmente a crackarlo dato che so già come funziona. http://www.mediafire.com/?9dbbakzbk7kgfsh Dovrete postare sia l'exe patchato che un keygen, e se volete anche un self-keygen
-
[CrackME] Keygenme [t4y][Solved by GunyaGunya]
Grazie
-
[CrackME #1] Ice9 [1/10][Solved by Wentstorm]
Risolto anch'io (anche se era gia stato risolto), ecco qua. - exe patchato che accetta qualsiasi nome + serial - self-keygen che quando inserisci un nome + serial sbagliati ti dice il serial giusto per quel nome - keygen http://localhostr.com/file/ZxdBSz9/Ice9.rar source del keygen: #include <iostream> using namespace std; void GenerateSerial(char *name, char *dst) { size_t len = strlen(name); int sum = 0; for (size_t i=0; i<len-1; i++) { sum += name[i]; if (name[i] <= 'Z' && name[i] >= 'A') sum += 0x2C; } sum += 666; sum *= 12345; sum -= 23; sum *= 9; _itoa(sum, dst, 10); sprintf(dst, "%s%s", dst, &name[3]); } int main() { char name[64] = {0}; char serial[64] = {0}; cout << "Keygen by GunyaGunya\n"; while (strlen(name) <= 3) { cout << "Name: "; fflush(stdin); gets(name); } GenerateSerial(name, serial); cout << "Serial: " << serial << endl << endl; system("pause"); return EXIT_SUCCESS; } L'unica cosa è che non capisco perché il keygenme inverte la stringa alla fine per poi non farci niente e usare quella non invertita. Magari è stato un errore di chi l'ha programmato. EDIT: Ah, invertire la stringa serve quando converte a stringa il numero facendo il resto della divisione per 10 perché altrimenti verrebbe al contrario
-
[CrackME] Keygenme [t4y][Solved by GunyaGunya]
Mi sto avvicinando da poco al reversing anche se sapevo già programmare, ecco la mia soluzione Exe Patchato che accetta qualsiasi serial + Keygen che genera serial per il nome desiderato ---> Download Niente self-keygen perché non so come si chiama itoa da asm e non credo che il programma in se importi la libreria che contiene itoa. Codice sorgente del keygen (c++): #include <iostream> using namespace std; // Conta quanti byte è lunga una variabile #define VALUE_CB(v) (8*sizeof(v)) // Implementazione C++ di ROR e ROL #define ROL(v, n) ((v<<n)|(v>>(VALUE_CB(v)-n))) #define ROR(v, n) ((v>>n)|(v<<(VALUE_CB(v)-n))) void encrypt1(char *src, char *dst, size_t size) { size_t i; for (i=0; i<size; i++) dst[i] = src[i]^0x40; dst[i] = '\0'; } void encrypt2(char *src, char *dst, size_t size, char key, unsigned long &resultingKey) { // ResultingKey è un valore usato per generare il serial alla fine // facendo lo xor coi primi 4 byte della stringa del nome criptata resultingKey = 0; size_t i; for (i=0; i<size; i++) { *reinterpret_cast<unsigned char *>(&resultingKey) = src[i]; resultingKey = (int)resultingKey*(int)key; resultingKey += key; resultingKey = ROL(resultingKey, 4); resultingKey ^= 0x14; resultingKey = ROR(resultingKey, 4); dst[i] = *reinterpret_cast<unsigned char *>(&resultingKey); } } unsigned long generateSerial(char *encrypted, unsigned long key) { return (key ^ *reinterpret_cast<unsigned long *>(encrypted)); } int main() { size_t nameLength; char name[64] = {0}; char encrypt[64] = {0}; unsigned long serial = 0, key = 0; cout << "Keygen by GunyaGunya\n"; cout << "Name: "; while (strlen(name) <= 0) { fflush(stdin); gets(name); } nameLength = strlen(name); encrypt1(name, encrypt, nameLength); encrypt2(encrypt, encrypt, nameLength, name[0], key); serial = generateSerial(encrypt, key); cout << "Serial: " << serial << endl << endl; system("pause"); return EXIT_SUCCESS; }