04-01-2014, 07:23 PM
Ciao ragazzi,
con sommo piacere sono riuscito a reversare i vari algoritmi lato client, quelli del pacchetto di autenticazione e selezione server/canali, per intenderci.
encrypt:
0051EC25 80F2 C3 XOR DL,0C3
0051EC28 80C2 0F ADD DL,0F
decrypt:
0051F090 80EB 0F SUB BL,0F
hash attuale, lo potete trovare all'address 0051F5D8:
l'algoritmo di generazione è alquanto imbarazzante, MD5(NostaleX.dat) + MD5(Nostale.dat)
ultimo parametro del pacchetto:
MD5(HASH + ID)
algoritmo password:
non mi è ancora ben chiara la logica della password,
premetto che non ho esaminato via debugger.
password: test
password criptata: 37673426E527A31774
password in hex: 74657374
da quanto ho capito la password viene segmentata a blocco di 4, partendo dalla fine, ed il primo, iniziale, viene scartato.
37 6734 26E5 27A3 1774
di conseguenza: 673426E527A31774
6 7 3 4 2 6 E 5 2 7 A 3 1 7 7 4
come viene generato il blocco iniziale ? 37 per intenderci.
da che schermata dipendono i byte secondari ? 6 3 2 E 2 A 1 7 per intenderci.
un array statico oppure dipendenti dal primo ?
qualcuno ne è a conoscenza ?
o me la devo sbrigare io ?
Ciao !
con sommo piacere sono riuscito a reversare i vari algoritmi lato client, quelli del pacchetto di autenticazione e selezione server/canali, per intenderci.
encrypt:
Codice:
0051ED03 8BF8 MOV EDI,EAX
0051ED05 85FF TEST EDI,EDI
0051EC0F 7E 22 JLE SHORT nostalex.0051EC33
0051EC11 BE 01000000 MOV ESI,1
0051EC16 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
0051EC19 E8 8A65EEFF CALL nostalex.004051A8
0051EC1E 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
0051EC21 8A5432 FF MOV DL,BYTE PTR DS:[EDX+ESI-1]
0051EC25 80F2 C3 XOR DL,0C3
0051EC28 80C2 0F ADD DL,0F
0051EC2B 885430 FF MOV BYTE PTR DS:[EAX+ESI-1],DL
0051EC2F 46 INC ESI
0051EC30 4F DEC EDI
0051EC31 ^75 E3 JNZ SHORT nostalex.0051EC16
0051EC25 80F2 C3 XOR DL,0C3
0051EC28 80C2 0F ADD DL,0F
decrypt:
Codice:
0051F089 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
0051F08C 8A5C38 FF MOV BL,BYTE PTR DS:[EAX+EDI-1]
0051F090 80EB 0F SUB BL,0F
0051F093 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
0051F096 FF00 INC DWORD PTR DS:[EAX]
0051F098 80FB 0A CMP BL,0A
0051F09B 74 19 JE SHORT nostalex.0051F0B6
0051F09D 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
0051F0A0 8BD3 MOV EDX,EBX
0051F0A2 E8 C15DEEFF CALL nostalex.00404E68
0051F0A7 8B55 EC MOV EDX,DWORD PTR SS:[EBP-14]
0051F0AA 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
0051F0AD E8 A65EEEFF CALL nostalex.00404F58
0051F0B2 47 INC EDI
0051F0B3 4E DEC ESI
0051F0B4 ^75 D3 JNZ SHORT nostalex.0051F089
0051F090 80EB 0F SUB BL,0F
hash attuale, lo potete trovare all'address 0051F5D8:
Codice:
FCCCDAA0C5C0BE133D7A028C82938FC3905D4F7F68D3C3EE632B855343106CA5
l'algoritmo di generazione è alquanto imbarazzante, MD5(NostaleX.dat) + MD5(Nostale.dat)
ultimo parametro del pacchetto:
MD5(HASH + ID)
algoritmo password:
non mi è ancora ben chiara la logica della password,
premetto che non ho esaminato via debugger.
password: test
password criptata: 37673426E527A31774
password in hex: 74657374
da quanto ho capito la password viene segmentata a blocco di 4, partendo dalla fine, ed il primo, iniziale, viene scartato.
37 6734 26E5 27A3 1774
di conseguenza: 673426E527A31774
6 7 3 4 2 6 E 5 2 7 A 3 1 7 7 4
come viene generato il blocco iniziale ? 37 per intenderci.
da che schermata dipendono i byte secondari ? 6 3 2 E 2 A 1 7 per intenderci.
un array statico oppure dipendenti dal primo ?
qualcuno ne è a conoscenza ?
o me la devo sbrigare io ?
Ciao !