Objet : | C4N Project 2 : Security Administrator 1.3 |
Date : | 22 Aout 1999 |
Heure : | 11h55 |
Protection type : | Serial |
Hehe, je crois que j'aime bien les projects de T0RNAD0 ;), après FTP Navigator : Security Administrator. Ne me demandé pas à quoi sert ce programme, je n'en ai aucune idée.. ;) ca doit surement parlé de sécutité ( .. ouais.. ok, je me mouille pas la, j'avoue ;) Bon, passons au crack !
Je me suis promené un peu hier sur #cracking4newbies et j'entendais tout le monde parlé de Serial ! et moi, je DETESTE les serials !!! donc, je me suis mis dans l'idée de faire le patch, ca changera des autres tuts he !
Tout d'abord on lance le programme pour voir la(es) protection(s) et on aperçois .. heu 3 choses. :
Cette fois ci, je vais utilisé uniquement W32dasm. Lancé le donc, ouvrez dans wdasm secagent.exe. Après le désassemblage clickez sur String Reference et recherchez après Sorry, this registration... et, vous le trouvez ! Double-clickez donc dessus et vous arrivez dans le DeadListing ici :
:00471CA8
EB18
jmp 00471CC2
Fin
de la procédure Serial-Valid et donc, jump après la proc
Serial-Invalid
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00471C70(C)
|
Début
de la proc Serial-Invalid. Son exécution dépent uniquement
du jump en :00471C70
:00471CAA
6A10
push 00000010
*
Possible StringData Ref from Code Obj ->"Error"
|
:00471CAC
B9281D4700
mov ecx, 00471D28
*
Possible StringData Ref from Code Obj ->"Sorry, this registration code
"
->"is invalid!"
|
:00471CB1
BA301D4700
mov edx, 00471D30
:00471CB6
A1C0404700
mov eax, dword ptr [004740C0]
:00471CBB
8B00
mov eax, dword ptr [eax]
:00471CBD
E84250FDFF
call 00446D04
Fin
de la procédure Serial-Invalide
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00471CA8(U)
|
:00471CC2
33C0
xor eax, eax
Allons voir maintenant ce qui conditionne le jump en :00471C70 :
:00471C69
E842B0FFFF
call 0046CCB0 Le call de vérification
du serial
:00471C6E
84C0
test al, al al = 0 ?
:00471C70
7438
je 00471CAA Si oui, Jump à
la proc Serial-Invalid
Call de vérification trouvé !
Reguardons maintenant ce qu'il se passe dans ce call :
*
Referenced by a CALL at Addresses:
|:0046D040
, :00471C69
|
Nous voyons deja que ce call
est appelé à 2 endroits : Une par la grande box et la petite
et l'autre au démarage !
La première chose à
faire, pour faire vite et simple, serait de remplacer le call par
mov
eax,1
ret
mais cela ne fonctionne pas :( donc on doit reguarder la procédure d'un peu plus près :
:0046CCB0
55
push ebp
:0046CCB1
8BEC
mov ebp, esp
:0046CCB3
51
push ecx
:0046CCB4
53
push ebx
:0046CCB5
56
push esi
:0046CCB6
8955FC
mov dword ptr [ebp-04], edx
:0046CCB9
8BF0
mov esi, eax
:0046CCBB
8B45FC
mov eax, dword ptr [ebp-04]
:0046CCBE
E81171F9FF
call 00403DD4
:0046CCC3
33C0
xor eax, eax
:0046CCC5
55
push ebp
:0046CCC6
68A4CD4600
push 0046CDA4
:0046CCCB
64FF30
push dword ptr fs:[eax]
:0046CCCE
648920
mov dword ptr fs:[eax], esp
:0046CCD1
33DB
xor ebx, ebx
:0046CCD3
C605B858470000 mov
byte ptr [004758B8], 00
:0046CCDA
B8BC584700
mov eax, 004758BC
:0046CCDF
E8C06CF9FF
call 004039A4
:0046CCE4
8B45FC
mov eax, dword ptr [ebp-04]
:0046CCE7
E8346FF9FF
call 00403C20
Le call ci-dessus renvoit dans eax la longueur de mon sérial surement.
:0046CCEC 83F80C cmp eax, 0000000C
Qui est suivit par une comparaison avec 14 ( 0Ch ). Donc, notre serial doit être long de 14 chars.
:0046CCEF
0F8599000000
jne 0046CD8E
Sinon, jump Serial-Invalid
:0046CCF5
8B45FC
mov eax, dword ptr [ebp-04]
:0046CCF8
803838
cmp byte ptr [eax], 38
:0046CCFB
0F858D000000
jne 0046CD8E
Sinon, jump Serial-Invalid
:0046CD01
8B45FC
mov eax, dword ptr [ebp-04]
:0046CD04
80780233
cmp byte ptr [eax+02], 33
:0046CD08
0F8580000000
jne 0046CD8E
Sinon, jump Serial-Invalid
:0046CD0E
8B45FC
mov eax, dword ptr [ebp-04]
:0046CD11
80780331
cmp byte ptr [eax+03], 31
:0046CD15
7577
jne 0046CD8E
Sinon, jump Serial-Invalid
:0046CD17
8B45FC
mov eax, dword ptr [ebp-04]
:0046CD1A
80780439
cmp byte ptr [eax+04], 39
:0046CD1E
756E
jne 0046CD8E
Sinon, jump Serial-Invalid
:0046CD20
8B45FC
mov eax, dword ptr [ebp-04]
:0046CD23
80780830
cmp byte ptr [eax+08], 30
:0046CD27
7565
jne 0046CD8E
Sinon, jump Serial-Invalid
:0046CD29
8B45FC
mov eax, dword ptr [ebp-04]
:0046CD2C
80780935
cmp byte ptr [eax+09], 35
:0046CD30
755C
jne 0046CD8E
Sinon, jump Serial-Invalid
:0046CD32
8B45FC
mov eax, dword ptr [ebp-04]
:0046CD35
80780A53
cmp byte ptr [eax+0A], 53
:0046CD39
7553
jne 0046CD8E
Sinon, jump Serial-Invalid
:0046CD3B
8B45FC
mov eax, dword ptr [ebp-04]
:0046CD3E
80780B45
cmp byte ptr [eax+0B], 45
:0046CD42
754A
jne 0046CD8E
Sinon, jump Serial-Invalid
Ci-dessus, il y a plusieur
verification qui renvoit en :0046CD8E.
Si vous y jeter un oeil, vous
verez que si on jump là, il y a un xor eax,eax ( eax = 0 ) suivit
d'un Ret et vu qu'on sait que si cette procédureal renvoit 0 dans
al alors le serial est incorrect, on va donc tout faire pour ne pas y jumper
!
Si
on arrive ici, c'est que le serial est correct !!
:0046CD44
B8BC584700
mov eax, 004758BC
:0046CD49
8B55FC
mov edx, dword ptr [ebp-04]
:0046CD4C
E8A76CF9FF
call 004039F8
:0046CD51
C605B858470001 mov
byte ptr [004758B8], 01
:0046CD58
B301
mov bl, 01
:0046CD5A
33D2
xor edx, edx
:0046CD5C
8B8600050000
mov eax, dword ptr [esi+00000500]
:0046CD62
E86DCEFCFF
call 00439BD4
:0046CD67
33D2
xor edx, edx
:0046CD69
8B8614050000
mov eax, dword ptr [esi+00000514]
:0046CD6F
E8B8D9FBFF
call 0042A72C
:0046CD74
33D2
xor edx, edx
:0046CD76
8B8610030000
mov eax, dword ptr [esi+00000310]
:0046CD7C
E853CEFCFF
call 00439BD4
:0046CD81
33D2
xor edx, edx
:0046CD83
8B860C030000
mov eax, dword ptr [esi+0000030C]
:0046CD89
E846CEFCFF
call 00439BD4
*
Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0046CCEF(C),
:0046CCFB(C), :0046CD08(C), :0046CD15(C), :0046CD1E(C)
|:0046CD27(C),
:0046CD30(C), :0046CD39(C), :0046CD42(C)
|
Serial-Invalid
:0046CD8E
33C0
xor eax, eax eax = 0
:0046CD90
5A
pop edx
:0046CD91
59
pop ecx
:0046CD92
59
pop ecx
:0046CD93
648910
mov dword ptr fs:[eax], edx
:0046CD96
68ABCD4600
push 0046CDAB
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0046CDA9(U)
|
:0046CD9B
8D45FC
lea eax, dword ptr [ebp-04]
:0046CD9E
E8016CF9FF
call 004039A4
:0046CDA3
C3
ret
Maintenant qu'on a tout les ingrédiant, place à la cuisine ! .. heu.. au Patch je voulais dire ;) heh
Bon, a présent, il y a plusieurs moyen de patcher se prog pour lui faire croire que notre serial est correct :
:0046CCE7
E8346FF9FF
call 00403C20
Renvoie la longueur dans eax
:0046CCEC
83F80C
cmp eax, 0000000C
eax = 14 ?
:0046CCEF
0F8599000000
jne 0046CD8E
Sinon, jump Serial-Invalid
Vous modifié donc le jne 0046CD8E en un jmp 0046CD44. Mais, vu que sous HView, on doit rentrer Jump Offset Disque, on va d'abord reguardé à quel odffset disque ce trouve 0046CD44. Pour cela, positionné vous sous WDasm sur 0046CD44 et reguardé dans la barre de Status en bas de la fenêtre, vous devriez voire :
@Offset 0006C144h in File:secagent.exe
Maintenant vous fermez WDasm, vous ouvrez secagent.exe dans HView, vous faite F5 et mettez .0046CCEF. Vous devez voir ceci :
.0046CCEF:
0F8599000000
jne .00046CD8E -------- (1)
.0046CCF5:
8B45FC
mov eax,[ebp][-0004]
.0046CCF8:
803838
cmp b,[eax],038 ;"8"
Et vous pressé [F3] pour passer en mode Edition
puis [F2] pour passer en mode ASM et vous entrez JMP 6C144 [ENTER] puis
[ESC] et [F9] pour appliquer les modification suivit d'un [F10] pour quitter
HView.
C'est maintenant le temps de vérité,
lancez secagent.exe et si tout c'est bien déroulé, vous étes
enregistré ( vu que le call de vérif est exécuté
au démarrage du programme ;) !!
Ok, je crois que tout le monde à compris hein !? ;) En attendant le prochain projects, je vais mettre mon site à jours.. sur ce A+
#Crack.FR Official Site : http://crackfr.cjb.net ou http://w3.to/crack.fr
Join me on #crack.fr
/ #eBu / #xplosif ( on UnderNet )
or #Cracking4Newbies / #digital.Factory
( on EF-net )
Greetz : SaTaNiK, TdvFR, JB007, ACiD_BURN, .BAT, T0RNAD0 and every Tutorial Maker ;) !
TeeJi [ just for cracking pleasure ]