Reversing [1/10] Semplice KeyGenMe by zyrel - LINK BROKEN

Stato
Discussione chiusa ad ulteriori risposte.

Zyrel

Utente Electrum
3 Gennaio 2009
425
31
27
156
Ultima modifica da un moderatore:
[1/10] Semplice KeygenMe by zyrel

Ciao a tutti, inizio dicendo che non avevo niente da fare, quindi ho pensato di fare questo piccolo keygenme (abbastanza semplice).... vi dò due dritte su come funziona.... chi lo avrà aperto avrà notato che ci sono due textbox, nella prima compare un numero (random) e in base a quel numero bisogna capire l' "algoritmo" (tra virgolette perchè è davvero semplice) che genera (sulla base del numero presente nella prima textbox) il seriale corretto. Non ci sono protezioni di alcun tipo. Ecco il download: Keygen.exe Ed ecco la scansione (#):
Codice:
 a-squared 5.0.0.26 2010.06.10 - AhnLab-V3 2010.06.10.02 2010.06.10 - AntiVir 8.2.2.6 2010.06.10 - Antiy-AVL 2.0.3.7 2010.06.08 - Authentium 5.2.0.5 2010.06.10 - Avast 4.8.1351.0 2010.06.10 - Avast5 5.0.332.0 2010.06.10 - AVG 9.0.0.787 2010.06.10 - BitDefender 7.2 2010.06.10 - CAT-QuickHeal 10.00 2010.06.10 - ClamAV 0.96.0.3-git 2010.06.10 - Comodo 5053 2010.06.10 - DrWeb 5.0.2.03300 2010.06.10 - eSafe 7.0.17.0 2010.06.10 - eTrust-Vet 36.1.7625 2010.06.10 - F-Prot 4.6.0.103 2010.06.09 - F-Secure 9.0.15370.0 2010.06.10 - Fortinet 4.1.133.0 2010.06.10 - GData 21 2010.06.10 - Ikarus T3.1.1.84.0 2010.06.10 - Jiangmin 13.0.900 2010.06.10 - Kaspersky 7.0.0.125 2010.06.10 - McAfee 5.400.0.1158 2010.06.10 - McAfee-GW-Edition 2010.1 2010.06.10 - Microsoft 1.5802 2010.06.10 - NOD32 5188 2010.06.10 - Norman 6.04.12 2010.06.10 - nProtect 2010-06-10.01 2010.06.10 - Panda 10.0.2.7 2010.06.10 - PCTools 7.0.3.5 2010.06.10 - Prevx 3.0 2010.06.10 - Rising 22.51.03.05 2010.06.10 - Sophos 4.54.0 2010.06.10 - Sunbelt 6430 2010.06.10 - Symantec 20101.1.0.89 2010.06.10 - TheHacker 6.5.2.0.296 2010.06.10 - TrendMicro 9.120.0.1004 2010.06.10 - TrendMicro-HouseCall 9.120.0.1004 2010.06.10 - VBA32 3.12.12.5 2010.06.10 - ViRobot 2010.6.10.3879 2010.06.10 - VirusBuster 5.0.27.0 2010.06.10 -
Logicamente questo esercizio è riservato a chi sta iniziando... gente come di4b0,Ev0 o Pimpato se lo sbranano in 2 minuti xd Lo scopo è creare un eseguibile, che fornito come input il numero generato nella prima textbox del keygenme ti tiri fuori il seriale corretto.

P.s se fate attenzione noterete qualcosa di "strano" nella generazione del serial ;)

Scopo: creare un keygen che dato come parametro il numero (pseudo) randomico renda il corretto seriale :)
Veramente easy.... per super newbye :)
 
Zyrel? *_*
OMG Il mitico ZYRELL??
MITICOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO xD

--- Aggiornamento Post ---

Vbb dopo scarico sto coso [Fine OT] xD
 
Risolto. Posto il source (è in C):
Codice:
#include <stdio.h>

int main(int argc, char* argv[])
{
        if (argc > 1)
        {
                int a1 = atoi(argv[1]);
                printf("Input: %d\n", a1);
                printf("Generated serial: %d\n", (int)a1 + a1 * a1 * a1 * a1 * a1);
        }
        return 0;
}
 
Risolto. Posto il source (è in C):
Codice:
#include <stdio.h>

int main(int argc, char* argv[])
{
        if (argc > 1)
        {
                int a1 = atoi(argv[1]);
                printf("Input: %d\n", a1);
                printf("Generated serial: %d\n", (int)a1 + a1 * a1 * a1 * a1 * a1);
        }
        return 0;
}
Ottimo :) come hai visto era veramente semplice :)
 
Sì, abbastanza... anche se all'inizio non capivo perchè facendo i calcoli con la calcolatrice non andasse... XD
xd su questo non saprei.... anche se, ormai lo avrai capito, sei (quasi) obbligato a fargli fare (al keygen) gli stessi identici clacoli, per possibili problemi di overflow nel fare (Numero)^5 + Numero ;)
 
Infatti il sorgente corretto è il mio...
La soluzione è:
seriale = random^5+random
tuttavia il risultato viene gestito come dword quindi la soluzione corretta è:
seriale = ((random^5) and &HFFFFFFFF + random) and &HFFFFFFFF
In questo modo si evita di andare nel range over DWORD, che capita spessissimo.
Infatti c'è da notare che se random è > 84 (cosa che succede molto spesso), allora 84^5 è superiore a &HFFFFFFFF il che non genera overflow in .NET, ma ovviamente non funziona sul crackme come soluzione.
Fortunatamente random^3 e random^5 con qualsiasi random tra 0 e 999 non vanno mai oltre il limite overflow, di conseguenza l'and logico con 0xFFFFFFFF serve solo a calcolo ultimato, se così non fosse stato c'era bisogno di altri AND e di un conseguente scorporo della potenza in se. divisa in random^2 * random ^3
 
Stato
Discussione chiusa ad ulteriori risposte.