Le 26 Février 1999

Crack de Super CuteFTP version 2.0 et version 2.8 par Pass Partout
Crack de Line 98 version 2.0

Quatrième compte-rendu

1/Materiels:

- http://www.cuteftp.com/ ou PC MAG LOISIRS (hors- série ) N°4 Juin 1998, PC Team, on le trouve partout...
- Line 98 PC Team N°42
- un désassembleur: Wdasm (la version que vous voulez)
- un éditeur hexadécimal
- une pointe de soft-ice
- durée: le temps de désassembler

2/Intro:

Salut,

Comme toujours les tuts que je fais sont pour les newbies.
Ce tut comporte deux cours, l'un sur cupteftp et l'autre sur line 98, j'ai reuni ces deux cours car j'ai utilisé la même méthode pour les cracker, de plus, ils me fallait étoffer mon tut.
J'ai dû cracker ce petit programme (cuteftp) parce que j'en avais besoin, je dois l'avouer (pour une fois que les programmes que je cracke me servent :o). Ben voui!!! Pour mettre à jour les pages de La Main Rouge. Je trouve qu'il est très bien fait. Pour les utilisateurs de ce logiciel: parfois il est nécessaire de cocher la case BINARY dans TRANSFERT TYPE pour un bon fonctionnement, j'ai eu des problèmes sur altern.org. Oui mais personne n'aura plus l'occasion d'aller sur Altern.org à cause de qui vous savez!!! En passant La Main Rouge ne se trouve donc plus chez Altern.Org, il est chez www.multimania.com/mainrouge/

3/Cours:

A/Cute FTP:

Par où commencer? Comme d'habitude on regarde.
Rien de spécial, pas de code d'enregistrement, limité à 30 jours d'utilisations et c'est tout.
Ca ne vaut pas le coût de le cracker et vous savez pourquoi? Changer voir la date de votre ordinateur, par exemple: augmenter celle-ci de deux mois. Lancer CuteFTP. Et oui un zoli nag-screen vous accueille. Maintenant revenez à la date 'normale'. CuteFTP marche de nouveau!!! Cogito!!! Sorti tout droit de votre esprit diabolique :o) vous avez pensé que même si vous dépassiez la date, en voyageant dans le passé :o) vous pourrez quand même utiliser CuteFTP. Très bonne idée mais il y a un hic! Je suis paresseux et je n'aime pas, mais pas d'y tout changer la date de mon ordi. Donc on va cracker ce petit prog.

Je viens de dire que CuteFTP se base sur l'horloge interne de l'ordi, et bien window$ fait des appels API qui sont les suivants:

GetSystemTime
GetLocalTime

SystemTimeToFileTime (moins utilisé)

Maintenant que vous avez ça, vous avez tout!!!
Alors sous soft-ice, faites 'OPEN' CuteFTP.exe, puis faites 'LOAD'. Soft-ice prend la main, on pause un point break: bpx getsystemtime et bpx getlocaltime. On appuie sur F5 et on attend!!!

Soft-ice nous envoie:
* Referenced by a CALL at Addresses:
|:00411E03   , :0041206D   , :00416F82   , :00416F96   , :0041700A  
|:00446AF3  
|
:00437240 81ECCC000000            sub esp, 000000CC
:00437246 8D442410                lea eax, dword ptr [esp+10]
:0043724A 50                      push eax

* Reference To: KERNEL32.GetLocalTime, Ord:00F5h  <- ICI
                                  |
:0043724B FF1580F94800            Call dword ptr [0048F980]
:00437251 8D4C2400                lea ecx, dword ptr [esp]
:00437255 51                      push ecx

* Reference To: KERNEL32.GetSystemTime, Ord:0135h
                                  |
:00437256 FF157CF94800            Call dword ptr [0048F97C]
:0043725C 668B54240A              mov dx, word ptr [esp+0A]
:00437261 663B1572D34800          cmp dx, word ptr [0048D372]
...
...
Voila!!
Cette routine vérifie la date du mise en route du shareware.
On appuie sur F12 (deux fois)pour savoir quel fonction à apeller notre routine...
On se retrouve en :00411E03 E838540200              call 00437240

La j'utilise la methode du physicien, qui consiste à suivre(comparer) ce que fait le programme quand il fonctionne 'normalement' et quand il fonctionne 'moins normalement' :o). Puis à forcer le bon chemin. Remarquez que cette methode est facile à comprendre, elle demande juste un minimum d'attention (d'observations) mais (il y a toujours un mais), cette technique est limitée et je pense que vous savez pourquoi (pas besoin d'explications).

Maintenant on trace pas à pas (trace over)le programme avec la touche F10.

:00411E02 51                      push ecx
:00411E03 E838540200              call 00437240 <- c'est lui!!!
:00411E08 8B442424                mov eax, dword ptr [esp+24]
:00411E0C 8B4C2420                mov ecx, dword ptr [esp+20]
:00411E10 83C404                  add esp, 00000004
:00411E13 3BC1                    cmp eax, ecx
:00411E15 7D07                    jge 00411E1E    <-ici
:00411E17 BA00093D00              mov edx, 003D0900
:00411E1C EB04                    jmp 00411E22

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00411E15(C)
|
:00411E1E 2BC1                    sub eax, ecx
:00411E20 8BD0                    mov edx, eax

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00411E1C(U)
|
:00411E22 8B442414                mov eax, dword ptr [esp+14]
:00411E26 81FA80533B00            cmp edx, 003B5380
:00411E2C 89542418                mov dword ptr [esp+18], edx
:00411E30 7E12                    jle 00411E44  <-- ici
:00411E32 83F80A                  cmp eax, 0000000A
:00411E35 7C0D                    jl 00411E44
:00411E37 BB01000000              mov ebx, 00000001
:00411E3C 899DF0020000            mov dword ptr [ebp+000002F0], ebx
:00411E42 EB05                    jmp 00411E49
...
...

Les deux sauts indiqués sont essentiels...
Quand on trace la version dite 'normal' et la version 'expired' on s'apercoit de cette difference. Pour cracker ça, il suffit de forcer les deux sauts:
:00411E15 7D07                    jge 00411E1E
en
:00411E15 EB07                    jmp 00411E1E

et

:00411E30 7E12                    jle 00411E44
en
:00411E30 EB12                    jmp 00411E44

C'est déjà fini!!! Ah, presque, il nous reste un nagscreen à enlever:
:00411E03 E838540200              call 00437240
en
:00411E03 90                      nop
:00411E04 90                      nop
:00411E05 90                      nop
:00411E06 90                      nop
:00411E07 90                      nop

Pour la version 2.8 c'est exactement pareil.
Il faut changer:
Le nagscreen:
:004130D2 E849840200              call 0043B520
en
:004130d2 9090909090              nopnopnopnopnop

Les sauts:
:004130E8 7D0B                    jge 004130F5
en
:004130E8 EB0B                    jmp 004130F5

et

:00413101 7E0F                    jle 00413112
en
:00413101 EB0F                    jmp 00413112


B/Line 98

Line 98 est un jeux tres sympa, il resemble à five +... J'aime bien... Niveau protection: c'est idem que cuteftp.
Avec soft-ice poser un BPX GETSYSTEMTIME.
Retouvez la fonction appellant (appuyez deux fois sur F12): 00404652
Puis tracez pas à pas pour chercher la difference (trace over F10).
On cracke Line 98 en patchant:
:0040466C 7511                     jne 0040457F
en
:0040466C 7411                     je 0040457F

et

:00404973 0F85D6050000             jne 0404F4F
en
:00404973 0F84d6050000             je 0404F4F

4/Conclusion

Rien à dire sinon qu'on peut surement faire plus simple.
Si problème -> email

A plus
Pass Partout
La Main Rouge
Email: pass_partout@hotmail.com
Venez nous voir sur http://www.multimania.com/mainrouge/