Outils :
- Sice 3.xx
- et un éditeur héxa
Date :
- 1 semaine apres sa sortie en1998
- Ce crack m'a pris 2 MINUTES !
Protections du prog :
- Limitation à 21 jours d'utilisation ?! (apres les 21 jours on peut quand meme l'utiliser : pourquoi ??)
Le but est de trouver le serial pour etre enregistré et ne plus
avoir la boite de dialogue qui apparait a chaque demarrage du prog :(
Pour ca j'ai utlisé seulement une API : GetDlgItemTextA qui
est l'une des plus banales pour recuperer des informations tapees au clavier.
On pose donc ss sice un bpx getdlgitemtexta et apres avoir entre
notre nom et un numero on switch sous sice pour le premier break : en tout
il y a seulement 2 break car il n'y a que 2 champs possible (le nom et
le numero). Apres le premier break on se retrouve la :
* Reference To: USER32.GetDlgItemTextA, Ord:00F5h
|
:00408014 FF150C844600
Call dword ptr [0046840C]
:0040801A 53
push ebx
<< on est la apres le premier break
:0040801B E822160200
call 00429642
:00408020 59
pop ecx
:00408021 53
push ebx
:00408022 E844160200
call 0042966B
:00408027 59
pop ecx
:00408028 BE48D94700
mov esi, 0047D948
* Possible Reference to Dialog: DialogID_0AF0, CONTROL_ID:000B, "On
&Local hard drives"
|
:0040802D 6A0B
push 0000000B
:0040802F 56
push esi
* Possible Reference to Dialog: DialogID_0C82, CONTROL_ID:0C81, ""
|
:00408030 68810C0000
push 00000C81
:00408035 57
push edi
* Reference To: USER32.GetDlgItemTextA, Ord:00F5h
|
:00408036 FF150C844600
Call dword ptr [0046840C]
:0040803C 56
push esi
<< on est la apres le second break
:0040803D E800160200
call 00429642
:00408042 59
pop ecx
:00408043 56
push esi
:00408044 E822160200
call 0042966B
:00408049 803D18D9470000
cmp byte ptr [0047D918], 00
:00408050 59
pop ecx
:00408051 745F
je 004080B2
:00408053 803D48D9470000
cmp byte ptr [0047D948], 00
:0040805A 7456
je 004080B2
:0040805C E8EAFAFFFF
call 00407B4B
<< serait - ce la routine de calcul du serial ?
:00408061 85C0
test eax, eax
<< Test si eax = 1
:00408063 744D
je 004080B2
<<si eax = 1 alors on saute toute la partie de code qui est juste
apres
:00408065 53
push ebx
* Possible StringData Ref from Data Obj ->"WinZip"
|
:00408066 BBA80C4700
mov ebx, 00470CA8
* Possible StringData Ref from Data Obj ->"Name"
|
:0040806B 68F8EA4600
push 0046EAF8
:00408070 53
push ebx
On va aller voir ce qui ce passe dans la fonction en 00407B4B
Ici on est a peu pres au milieu de cette routine.
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00407BF9(C)
|
:00407C0E 8D85C0FEFFFF
lea eax, dword ptr [ebp+FFFFFEC0]
:00407C14 50
push eax
<< ici est l'endroit ou le premier serial sera rangé apre
le call
:00407C15 57
push edi
<< ca c'est le nom que vous avez entre
:00407C16 E8AB000000
call 00407CC6
<< calcul du premier serial
:00407C1B 59
pop ecx
:00407C1C BE48D94700
mov esi, 0047D948
:00407C21 59
pop ecx
:00407C22 8D85C0FEFFFF
lea eax, dword ptr [ebp+FFFFFEC0]
:00407C28 56
push esi
<< serial que vous avez entre
:00407C29 50
push eax
<< premier serial calcule juste au dessus
:00407C2A E871FC0400
call 004578A0
<< comparaison des deux pour savoir si celui tape est le bon
:00407C2F F7D8
neg eax
:00407C31 1BC0
sbb eax, eax
:00407C33 59
pop ecx
:00407C34 40
inc eax
:00407C35 59
pop ecx
:00407C36 A36CB04700
mov dword ptr [0047B06C], eax
:00407C3B 7569
jne 00407CA6
si c'est le bon on saute sinon on en recalcul un a partir du nom entre
et du premier numero calculé
:00407C3D 8D85C0FEFFFF
lea eax, dword ptr [ebp+FFFFFEC0]
:00407C43 50
push eax
<< premier serial calcule
:00407C44 57
push edi
<< nom que vous avez entre
:00407C45 E820010000
call 00407D6A
<< calcul du second serial qui sera rangé a la place du second
a l'@ contenu precedament dans eax
:00407C4A 59
pop ecx
:00407C4B 8D85C0FEFFFF
lea eax, dword ptr [ebp+FFFFFEC0]
{
Pour ceux qui n'ont rien compris a ce que je viens de dire :-(
Pour trouver son numero en fonction de son nom (ou inversement) il
faut taper sous sice :
- soit 'd eax' en 00407C14 et apres le 'call 00407CC6' le (premier)
serial apparait.
- soit 'd eax' en 00407C43 et apres le 'call 00407D6A' le (second)
serial apparait.
}
Par contre je n'ai pas reussi a comprendre pourquoi il calcule deux serial ??? :-( Si qq1 a une idée !
Voila j'espere que j'aurais ete assez precis et clair pour tout le monde sinon faite-le moi savoir.
By Elraizer 1998
Elraizer@cryogen.com
Ps :
Name : Elraizer
Code1 : ******** ( c'est juste pour qu'artex n'ai pas le plaisir )
Code2 : $$$$$$$$ ( de remplacer mes serials par des caracteres joyeux
:)