- Crackiamo ACDSee 3.24
-
- ------------------------------------------------------------------------------------------------------------
- Vorrei dedicare questo tutorial a mio zio che una settimana fa è
rimasto quasi del tutto paralizzato a seguito di un incidente......Zio torna a camminare,
fallo per noi
- ------------------------------------------------------------------------------------------------------------
- Tools:
- SoftIce 3.25 (o precedenti)
-
- Ciauz a tutti, in questo tutorial impareremo a crackare ACDSee
3.24, apriamo il programmillo vittima, in alto notiamo una scritta
"UNREGISTERED", notiamo anche nel menu Help il sottomenu About, clicchiamoci
sopra e vediamo aprirsi una finestra con tre pulsanti: "Register now",
"Remind me later", "More info"....ovviamente cliccherete sul primo
bottone, inserite un nome (io uso Quequero), un dummy number (666111666) e prima di
premere invio aprite SoftIce e mettete un bp su GetDlgItemTextA (bpx GetDlgItemTextA).
Premete una volta F11 e fate step con F10 fino ad arrivare qui:
-
- .text:00406DD7 mov al, [esp+1Ch] ; Muove in AL una lettera del nome (ESP+1c = nome)
.text:00406DDB lea esi, [esp+1Ch] ; Carica il nome in
ESI
.text:00406DDF test al, al
.text:00406DE1 jz _text_406F33
.text:00406DE7 movsx edx, byte ptr [esi] ; Salva una
lettera del nome in EDX
.text:00406DEA push edxv
.text:00406DEB call _text_4BF26E
.text:00406DF0 add esp, 4
.text:00406DF3 test eax, eax
.text:00406DF5 jz short _text_406DF8
.text:00406DF7 inc ebx
.text:00406DF8 mov al, [esi+1]
.text:00406DFB inc esi
.text:00406DFC test al, al
.text:00406DFE jnz 406DE7 ; Se il nome non è ancora
finito torna sopra
.text:00406E00 cmp bx, 5
.text:00406E04 jl 406F33 ; Salta alla beggar off
.text:00406E0A lea eax, [esp+7Ch] ; Carica il seriale
in EAX
.text:00406E0E push 0
.text:00406E10 lea ecx, [esp+20h] ; Carica il nome in
ECX
.text:00406E14 push eax
.text:00406E15 push ecx
.text:00406E16 push offset str-> -314159265
.text:00406E1B call 458A90 ; Routine di calcolo
del seriale, entriamo qui con F8
.text:00406E20 add esp, 10h
.text:00406E23 neg eax
- Con F8 entrate nella chiamata all'indirizzo xxxx:00406E20, fate
step con F10 fino ad arrivare qui:
-
- .text:00458A9E push esi
.text:00458A9F push edi
.text:00458AA0 push eax
.text:00458AA1 push ecx
.text:00458AA2 call _text_4593B0
.text:00458AA7 lea edi, [esp+94h+var_84] ; Carica in
EDI il nostro nome convertito in
;
UpperCase
.text:00458AAB or ecx, 0FFFFFFFFh
.text:00458AAE xor eax, eax
.text:00458AB0 add esp, 8
.text:00458AB3 repne scasb
.text:00458AB5 not ecx
.text:00458AB7 dec ecx
.text:00458AB8 mov eax, 2AAAAAABh
.text:00458ABD imul ecx
.text:00458ABF mov eax, edx
.text:00458AC1 xor esi, esi
.text:00458AC3 shr eax, 1Fh
.text:00458AC6 test ecx, ecx
.text:00458AC8 lea edi, [edx+eax+1]
.text:00458ACC jle short _text_458ADF ; Muove il
seriale in ECX
.text:00458ACE xor eax, eax
.text:00458AD0 mov dl, [esp+eax+8Ch+var_84] ; Esegue
due loop, in ognuno dei quali
;
mette alternamente le lettere del nome in DL
;
(nel mio caso carica solo le lettere QEUR)
-
- .text:00458AD4 add eax, edi
.text:00458AD6 mov [esp+esi+8Ch+var_58], dl
.text:00458ADA inc esi
.text:00458ADB cmp eax, ecx
.text:00458ADD jl 458AD0
.text:00458ADF mov ecx, [esp+8Ch+arg_8] ; Muove il
seriale in ECX
.text:00458AE6 mov edx, [esp+8Ch+arg_0] ; Muove
"-314159265" in EDX
.text:00458AED lea eax, [esp+8Ch+var_2C]
.text:00458AF1 push 29h
.text:00458AF3 push eax
.text:00458AF4 push ecx
.text:00458AF5 push edx
.text:00458AF6 mov [esp+esi+9Ch+var_58], 0
.text:00458AFB call _text_458B80
.text:00458B00 mov ecx, [esp+9Ch+arg_C]
.text:00458B07 add esp, 10h
.text:00458B0A cmp eax, ecx
.text:00458B0C jz 00458B19
; Salta se il serial è esatto
.text:00458B0E pop edi
.text:00458B0F xor eax, eax
.text:00458B11 pop esi
.text:00458B12 add esp, 84h
.text:00458B18 retn
- Allora, arrivati
all'indirizzo xxxx:00458B0C provate a invertite il flag Z (con r fl z sotto Sice) e
salterete dritti nella nuova routine, cioè questa:
-
- .text:00458B19 push ebx
.text:00458B1A lea esi, [esp+90h+var_2C]
.text:00458B1E lea eax, [esp+90h+var_58] ; EAX contiene
alternate le lettere del nome (QEUR)
.text:00458B22 mov dl, [eax]
.text:00458B24 mov bl, [esi]
.text:00458B26 mov cl, dl ; Muove una lettera del nome
in CL
.text:00458B28 cmp dl, bl ; Confronta la lettera con
una lettera calcolata dal
programma
.text:00458B2A jnz 458B5B ; Se uguali salta e continua
il check
.text:00458B2C test cl, cl
.text:00458B2E jz 458B46 ; Salta alla good guy
.text:00458B30 mov dl, [eax+1]
.text:00458B33 mov bl, [esi+1]
.text:00458B36 mov cl, dl
.text:00458B38 cmp dl, bl ; Confronta le lettere come
sopra
.text:00458B3A jnz ; Se sono diverse salta
.text:00458B3C add eax, 2
.text:00458B3F add esi, 2
.text:00458B42 test cl, cl
.text:00458B44 jnz 458B22
.text:00458B46 xor eax, eax ; Azzera EAX
.text:00458B48 xor ecx, ecx ; Azzera ECX
.text:00458B4A test eax, eax
.text:00458B4C setz cl
.text:00458B4F pop ebx
.text:00458B50 pop edi
.text:00458B51 mov eax, ecx
.text:00458B53 pop esi
.text:00458B54 add esp, 84h
.text:00458B5A retn
Benissimo, a questo punto potremmo soffermarci ad
esaminare l'algoritmo per poter fare un keygenerator, però dal momento che sono pigro vi
farò patchare solo 3 istruzioni, indovinate quali? Sicuramente andremo a cambiare questa
istruzione: .text:00458B0C jz 00458B19 in un bel jump e poi cambieremo in nop il jnz
a 00458B2A ed infine in jmp il jz a 458B2E.
- Per farlo basta disassemblare il file con W32DASM, cercare le
istruzioni, farci doppio click sopra e vedere in basso l'offset, aprire un editor
esadecimale e cambiare i byte, oppure sarebbe più facile usare un Patching Engine, fate
voi.........vabbè dal momento che sono buono vi do un po' di info:
-
- Virutal address codice esadecimale
offset
istruzione
cambiare i byte istr. cambiata
- 00458B0C
74
0B
00058B0Ch
jz
EB 0B
jmp
00458B2A
75
2F
00058B2Ah
jnz
90 90
nop
00458B2E
74
16
00058B2Eh
jz
EB 16
jmp
-
- Non dovete far altro che aprire un editor esadecimale, inserire
gli offset che vi ho dato (nell'Hex Workshop dovete cliccare su "Go to offset")
e cambiare i byte della seconda colonna con quelli della quinta, aprire ACDSee a
registrarsi con il nome che più vi piace.....Semplice no!
-
-
Quequero