BeTmAsTeR Inviato 5 Settembre 2011 Condividi Inviato 5 Settembre 2011 (modificato) Oggi vi propongo questo ... Easy Keygenme1.rar Vi chiedo le seguenti soluzioni (quelle che ho fatto io): 1) Una versione patchata che accetti qualsiasi seriale 2) Un keygen ps: Il SelfKeygen è in creazione Modificato 20 Settembre 2011 da BeTmAsTeR Link al commento Condividi su altri siti Altre opzioni di condivisione...
JackAllHunt Inviato 5 Settembre 2011 Condividi Inviato 5 Settembre 2011 Cos'è? I Keygen non sono file pirata? Link al commento Condividi su altri siti Altre opzioni di condivisione...
BeTmAsTeR Inviato 5 Settembre 2011 Autore Condividi Inviato 5 Settembre 2011 no, questi sono file appositamente creati per essere crakkati. E' un esercizio di reversing Link al commento Condividi su altri siti Altre opzioni di condivisione...
Melo_Wii Inviato 6 Settembre 2011 Condividi Inviato 6 Settembre 2011 (modificato) Crack pronta in 1 minuto http://www.mediafire.com/?t79jegm61jrnbes ora vediamo che combino col keygen sigh EDIT: bene bene, tutto inizia a 7E3BA149 dove pusha EPB dico bene? poi fino a 7E3BA2B4 fa una lunga serie di calcoli e a 7E3BA2B7 chiama 7E3BA2DF quindi ho individuato il calcolo ma il problema e che non so leggerlo, se conoscessi asm sarebbe un libro aperto Modificato 6 Settembre 2011 da Melo_Wii Link al commento Condividi su altri siti Altre opzioni di condivisione...
BeTmAsTeR Inviato 6 Settembre 2011 Autore Condividi Inviato 6 Settembre 2011 (modificato) stavolta il source non te lo passo XD, l' unico problema che ho avuto è stato "portare in C" le funzioni ROL , ROR EDIT : 7E3BA149 ?? sei fuori strada il programma finisce a 00401212A come fai ad aver trovare quell 'address lì ? Modificato 6 Settembre 2011 da BeTmAsTeR Link al commento Condividi su altri siti Altre opzioni di condivisione...
Melo_Wii Inviato 6 Settembre 2011 Condividi Inviato 6 Settembre 2011 ma da me cè possibile? Come individuo l' inizio? se potessi usare DeDe sarebbe semplice, per ora faccio partire il debug, poi vecciop un seriale a caso, pause e vedo call stack Link al commento Condividi su altri siti Altre opzioni di condivisione...
BeTmAsTeR Inviato 6 Settembre 2011 Autore Condividi Inviato 6 Settembre 2011 veramente ti conviene seguire sia il disassembleto che lo stack mettendo qualche commento Link al commento Condividi su altri siti Altre opzioni di condivisione...
Melo_Wii Inviato 6 Settembre 2011 Condividi Inviato 6 Settembre 2011 (modificato) Si ma non posso usare DeDe con questo linguaggio, mi consigli W32Dasm o un altro? EDIT: 00401031? EDIT2: no Modificato 6 Settembre 2011 da Melo_Wii Link al commento Condividi su altri siti Altre opzioni di condivisione...
BeTmAsTeR Inviato 6 Settembre 2011 Autore Condividi Inviato 6 Settembre 2011 DeDe ? per questo ti basta OllyDBG ... non serve altro Link al commento Condividi su altri siti Altre opzioni di condivisione...
Melo_Wii Inviato 7 Settembre 2011 Condividi Inviato 7 Settembre 2011 (modificato) Allora ho messo un BP su 7E3D07EA ora dovrei steppare fino a 7E3D0830 (RETRN10) che rimanda a 00401186 che dopo un po di step porta a 7E398734 dove credo che inizia il programma vero e proprio (invatti se metto PB non parte), questultimo porta a 7E398816 poi a 7E3A8EA0 dove inizia il calcolo sbaglio? EDIT: by me sbaglio! OT sto cercando di mettere in prtaica quello che dice un sito attendibile (http://quequero.org/Lezione_7_Keygening (spam?)), quindi se trovo dove genera la key fare un keygenninko in ASM è un gioco? Modificato 7 Settembre 2011 da Melo_Wii Link al commento Condividi su altri siti Altre opzioni di condivisione...
BeTmAsTeR Inviato 7 Settembre 2011 Autore Condividi Inviato 7 Settembre 2011 tu metti il BP troppo un anticipo, e quindi vedi delle funzioni di sistema che non ti servono a niente ... devi mettere il BP prima dell' algoritmo che elabora il seriale Link al commento Condividi su altri siti Altre opzioni di condivisione...
Melo_Wii Inviato 7 Settembre 2011 Condividi Inviato 7 Settembre 2011 (modificato) Eh e la è il problema non capisco come trovare il punto dove mettere il BP Forse ci sono 004010FB |> /8A06 /MOV AL,BYTE PTR [ESI] 004010FD |. |0FAFC2 |IMUL EAX,EDX 00401100 |. |03C2 |ADD EAX,EDX 00401102 |. |C1C0 04 |ROL EAX,4 00401105 |. |83F0 14 |XOR EAX,14 00401108 |. |C1C8 04 |ROR EAX,4 0040110B |. |8807 |MOV BYTE PTR [EDI],AL 0040110D |. |46 |INC ESI 0040110E |. |47 |INC EDI 0040110F |. |49 |DEC ECX 00401110 |.^\75 E9 \JNZ SHORT Easy_Key.004010FB sopra cè un 004010E5 |. BE FC314000 MOV ESI,Easy_Key.004031FC ; ASCII "7%.434/2-" e anche un ascii del mio nome Sii è questa sicuro, cè pure il rol di cui parlavi Modificato 7 Settembre 2011 da Melo_Wii Link al commento Condividi su altri siti Altre opzioni di condivisione...
BeTmAsTeR Inviato 7 Settembre 2011 Autore Condividi Inviato 7 Settembre 2011 ok ci sei, guarda anche un po più su dalle parti di 004010D6 Link al commento Condividi su altri siti Altre opzioni di condivisione...
Melo_Wii Inviato 7 Settembre 2011 Condividi Inviato 7 Settembre 2011 Bene, bene ora persiste un problemino MOOV credo che vuol dire sposta? IMUL non lo so! ADD credo aggiungi? ROL non ho idea! ROR non ho idea! INC rorse incrementa? DEC decimale? XOR non ho idea! JNZ chiama un altra istruzione? Mi serve un buon manuale di asm se voglio capire cosa faccio, cosa mi consigli? Link al commento Condividi su altri siti Altre opzioni di condivisione...
BeTmAsTeR Inviato 7 Settembre 2011 Autore Condividi Inviato 7 Settembre 2011 http://www.giobe2000.it/ comunque ... MOV a,b -> Muove b in a ADD a,b -> a = a+b ROL a -> ROtate Left a ROR a -> ROtate Right a INC a -> a=a+1 DEC a -> a=a-1 XOR a,b -> a = a XOR b ( guarda la calcolatrice di windows ) JNZ -> Jump Not Zero ( salta se il risultato dell' operazione prima non è 0 ) Link al commento Condividi su altri siti Altre opzioni di condivisione...
Melo_Wii Inviato 8 Settembre 2011 Condividi Inviato 8 Settembre 2011 Ho commentato un poco, vedi se va bene l' unico problema e che ancora non capisco dove sta il nome, in ESI? 004010D6 |> /8A06 /MOV AL,BYTE PTR [ESI] ; Mette i dati di AL in ESI 004010D8 |. |33C2 |XOR EAX,EDX ; calcola il vettore XOR di EAX e EDX 004010DA |. |8807 |MOV BYTE PTR [EDI],AL ; Muove PTR in EDI e AL 004010DC |. |46 |INC ESI ; ESI = ESI + 1 004010DD |. |47 |INC EDI ; EDI = EDI - 1 004010DE |. |49 |DEC ECX ; ECX = ECX - 1 004010DF |.^\75 F5 \JNZ SHORT Easy_Key.004010D6 ; Jump not zero 004010E1 |. 33D2 XOR EDX,EDX ; Azzera EDX 004010E3 |. 33C0 XOR EAX,EAX ; Azzera EAX 004010E5 |. BE FC314000 MOV ESI,Easy_Key.004031FC ; ? 004010EA |. BF 4C324000 MOV EDI,Easy_Key.0040324C ; ? 004010EF |. 8B0D 8C314000 MOV ECX,DWORD PTR [40318C] ; ? 004010F5 |. 8A15 AC314000 MOV DL,BYTE PTR [4031AC] ; Muove DL su 4031AC 004010FB |> 8A06 /MOV AL,BYTE PTR [ESI] ; Muove AL su ESI 004010FD |. 0FAFC2 |IMUL EAX,EDX ; Moltiplica AEX * EDX 00401100 |. 03C2 |ADD EAX,EDX ; Somma EAX e EDX 00401102 |. C1C0 04 |ROL EAX,4 ; Ruota le prime 4 cifre da 00401105 |. 83F0 14 |XOR EAX,14 ; Calcola EAX (XOR) 14 00401108 |. C1C8 04 |ROR EAX,4 ; ruota le prime 4 cifre da 0040110B |. 8807 |MOV BYTE PTR [EDI],AL ; Sposta EDI in AL 0040110D |. 46 |INC ESI ; ESI = ESI + 1 0040110E |. 47 |INC EDI ; EDI = EDI + 1 0040110F |. 49 |DEC ECX ; ECX = ECX - 1 Link al commento Condividi su altri siti Altre opzioni di condivisione...
BeTmAsTeR Inviato 10 Settembre 2011 Autore Condividi Inviato 10 Settembre 2011 http://img508.imageshack.us/img508/2745/reversev.png hai sbagliato un paio di cose MOV AL,BYTE PTR [ESI] BYTE PRT stà per Byte Pointer, ed ESI è il puntatore quindi Muovi in AL quello che stà puntando ESI XOR EAX,EDX non calcola nessun vettore, è solo un operazione MOV ESI,Easy_Key.004031FC Copia in ESI quello che è contenuto in 004031FC MOV ECX,DWORD PTR [40318C] DWORD PTR, Double word pointer, come ti ho spiegato prima ma spostando una DWORD Link al commento Condividi su altri siti Altre opzioni di condivisione...
diabolik_noir Inviato 11 Settembre 2011 Condividi Inviato 11 Settembre 2011 per quanto riguarda il semplice crack basta modificare l'istruzione 0040115A /75 16 JNZ SHORT Easy_Key.00401172 con NOP Corretto? Link al commento Condividi su altri siti Altre opzioni di condivisione...
BeTmAsTeR Inviato 11 Settembre 2011 Autore Condividi Inviato 11 Settembre 2011 si, esatto Link al commento Condividi su altri siti Altre opzioni di condivisione...
GunyaGunya Inviato 20 Settembre 2011 Condividi Inviato 20 Settembre 2011 (modificato) 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; } Modificato 20 Settembre 2011 da GunyaGunya Link al commento Condividi su altri siti Altre opzioni di condivisione...
BeTmAsTeR Inviato 20 Settembre 2011 Autore Condividi Inviato 20 Settembre 2011 grande GunyaGunya soluzione funzionante, ottimo lavoro Link al commento Condividi su altri siti Altre opzioni di condivisione...
Melo_Wii Inviato 21 Settembre 2011 Condividi Inviato 21 Settembre 2011 Wow complimenti anche da parte mia ^^ Link al commento Condividi su altri siti Altre opzioni di condivisione...
GunyaGunya Inviato 22 Settembre 2011 Condividi Inviato 22 Settembre 2011 Grazie Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Crea un account o accedi per lasciare un commento
Devi essere un membro per lasciare un commento
Crea un account
Iscriviti per un nuovo account nella nostra community. È facile!
Registra un nuovo accountAccedi
Sei già registrato? Accedi qui.
Accedi Ora