Jump to content
sulea

crackme

Recommended Posts

Posted
Deci userul trebuie sa fie din 12 caractere si restul pare a fi simplu. Mi-a iesit un serial de genul: VfWU[WhjUeSS

nu exista user, ci doar un serial (parola)

VfWU[WhjUeSS -> nu e asta parola. la introducerea parolei bune va fi afisat un mesaj cu textul "corect"

algoritmul ESTE reversibil

Posted (edited)

Da ai dreptate.

Am gresit postul.

Era la celalalt keygen.

La asta mai bine pun:

00401110 /75 15 JNZ SHORT gsp.00401127

si nu mai mai doare capul

Edited by giv
Posted
daca pui 'jnz', nu va merge cu parola corecta. cum algoritmul este usor, prefer serialul in locul unui patch.

Ma rog...

Punem jmp si gata.

Posted

//*************************************

//Greetings to RST! Ce mai faceti mai baieti?

// Parola: "Undertaker: 20-0"

//*************************************

unsigned char ror (unsigned char x)

{

return ((x & 0x01) ? ((x >> 1) | 0x80) : (x >> 1));

}

unsigned char rorn (unsigned char x, int n)

{

for (int i=0;i<n;i++)

x=ror(x);

return x;

}

void main ()

{

int i,j;

unsigned char VI[] = {0x9B,0x6A,0x93,0x70,0xEC,0x8C,0xB1,0x54,0xDC,0xF3,0x5,0xF9,0xB0,0xC2,0x3,0x9B};

for (i=0;i<8;i++)

VI ^= (VI[15-i] +1);

for (i=15;i>0;i--)

{

VI = rorn(VI,i);

VI ^= VI[0];

}

for (i=0;i<16;i++)

for (j=0;j<i;j++)

{

VI[j] ^= VI;

VI[j] -= j;

}

}

Posted (edited)
Bine mai Flubber pai atunci rezolva continuarea testului ca sa te urasc si eu pe tine! :)

In curand sper sa trec la a doua. Insa intre timp m-am blocat la ultima rutina crypto (prima din original) din gsp #1. Chiar si cu indrumarea lui sulea prin rutinele de criptare asta ultima m-a dat gata. Intre timp am scris un rezumat cand am inceput analiza pe acest challenge (de aceea poate fi incorect pe alocuri).

Rezumatul poate fi citit aici:

http://codepad.org/GnDdcRRx

Sper sa ii ajute si pe cei ce au nevoie de un mic start pentru a intelege ce se intampla. Reverse-ul rutinelor va trebui sa le faceti singuri sau sa cereti hint-uri de la sulea.

In caz ca am deranjat intr-un fel sau altul prin postarea acestui rezumat, rog autorul sa anunte si voi sterge indata.

Edited by Flubber
Posted

Bravo |roe! Est unul dintre teoreticienii foarte bine pregatiti ai reversingului in ASM din tara. Majoritatea sunt doar useri ai metodelor publice.

M-am uitat peste materialul tau si este foarte bine documentat.

Felicitari!

Posted
Bravo |roe! Est unul dintre teoreticienii foarte bine pregatiti ai reversingului in ASM din tara. Majoritatea sunt doar useri ai metodelor publice.

M-am uitat peste materialul tau si este foarte bine documentat.

Felicitari!

Multumesc pentru laude, insa cred ca exagerezi. Din pacate la teorie oricat de bine as sta (am gresit in rezumat in diferite parti fiindca nu l-am inteles complet cand l-am scris, abia dupa am reusit sa pricep rutinele mai bine) uite ca am intampinat probleme sa il rezolv, probleme ce tin de programare si sunt destul de simple. Insa din fericire mai sunt si oameni destepti precum cifratorul sa ne indrume cu rezolvarile sale.

Posted

functiile alea au mers bine la prima parola. problema e ca acum algoritmul tau nu mai e reversibil deoarece compari la sfarsit doar primele 6 caractere si in rest poate sa fie orice si de orice lungime . e cam de brute-force.

Posted

te sfatuiesc sa folosesti urmatoarea functie pt. ror:


// Right-rotate a byte n places.
unsigned char rrotate(unsigned char val, int n)
{
unsigned int t;

t = val;

// First, move the value 8 bits higher.
t = t << 8;

for(int i=0; i < n; i++) {
t = t >> 1;

/* If a bit shifts out, it will be in bit 7
of the integer t. If this is the case,
put that bit on the left side. */
if(t & 128)
t = t | 32768; // put a 1 on left end
}

/* Finally, move the result back to the
lower 8 bits of t. */
t = t >> 8;

return t;
}

problema la codul tau cred ca poate fi acel bit care 'shifts out' (nu le am cu c-ul)

*ti-a mers in primul caz deoarece nu a fost niciun bit care sa faca pe nebunu(cred)

cu algo tau si cu functia ror inlocuita vei gasi rezultatul. crackmeul este reversibil, are reverse facut in c, pascal si asm

va astept cu rezultatul, pt a mai posta un ultim challenge pe acest crackme

Posted

return ((x & 0x01) ? ((x >> 1) | 0x80) : (x >> 1));

daca e nevoie de transportat un bit functia mea face OR pe biti cu 0x80 deci bitul apare in stanga. de ce zici ca mai e reversibil atat timp cat in final nu mai compari decat 6 caractere?

Posted
return ((x & 0x01) ? ((x >> 1) | 0x80) : (x >> 1));

daca e nevoie de transportat un bit functia mea face OR pe biti cu 0x80 deci bitul apare in stanga.

pot sa jur ca atunci cand am incercat in codepad.org functiile ror ale tale nu mi-au aparut caractere printabile; iar cand am inlocuit functia, a mers. imi cer scuze daca am indus in eroare

uite ce trebuia sa modifici la algo tau:

C++ code - 36 lines - codepad

de ce zici ca mai e reversibil atat timp cat in final nu mai compari decat 6 caractere?

nu inteleg, ai mai sus algo de decriptare.

acum ca aveti algo de decriptare si pt partea a doua a crackme-ului, vom trece la partea 3(este schimbata doar parola si foarte putin din validare, modulele de criptare raman neschimbate):

Download gsp-3.rar from Sendspace.com - send big files the easy way

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...