
Cracking
: Commencer avec les "times limits" |
Retour
à l'index de la rubrique cracking
Les
infections que l’on peut relever, et sur lesquelles s’appuyer, sont principalement
les suivantes :
|
Une
limitation dans le temps |
|
Un
ou plusieurs écrans Shareware |
|
Des
fonctions limitées |
1
- Les limitations dans le temps
Dans
le cas de trial versions limitées à un certain nombre de jours, il y a
forcement quelque part, une comparaison entre la date d'installation,
et la date de fin de la période d'essai.
Ces comparaisons peuvent se faire:
- Dans l'exécutable lui même
- Dans un fichier de type DLL
- Dans un fichier temporaire créé à l'occasion
(Dans
les deux derniers cas de figure, un utilitaire de type Filemon permet
de repérer l'utilisation de ces fichiers)
- Sur le nombre de jours d'utilisation:
cmp eax,0000001E
pour une période de 30 jours (30 décimal = 1E hexadécimal)
La valeur dans Eax fait office de compteur depuis le jour de la " mise
en service ". Dès que cette valeur est égale à 30, la période d'essai
est terminée. Le test peut aussi avoir l'aspect suivant:
add eax,0000001E
cmp dword ptr [ebp-5C], eax
Ou eax est égale à la date d'installation,
à laquelle on ajoute 30d, et que l'on compare à la valeur contenue dans
[ebp-5C], où se trouve enregistré la date de fin de la trial période.
Pour
éviter une recherche dans un désassembleur sur la valeur 0000001E, certains
programmeurs calculent cette durée dans une autre unité que les jours,
par exemple en secondes. Pour une durée de 30 jours, la comparaison se
ferait sur la base suivante:
Ce
mode de conversion peut nous faire gagner du temps, pour peu que l'on
y pense. Il est plus rapide de faire une recherche sur 00278D00 que sur
0000001E qui risque de nous donner de nombreuses occurrences dont la majorité
n'auront rien à voir avec le test traqué.
Il
y différentes façons d'exprimer une date, comme on l'a vu: en JJ/MM/AA,
en jours (le 30/08/99 est le 242ème jour de l'année 1999), en secondes
(une période d'essai de 30 jours et aussi égale à 2592000 s), etc...
Il reste que l'année est le plus difficile à camoufler. En gardant un
œil sur la fenêtre des registres (WR pour l'activer dans SoftIce), vous
allez tracer avec F10 en surveillant les valeurs qui passent dans ces
registres, et en guettant tout particulièrement un 07FC (1999 en décimal)
Dans les cas que j 'ai rencontré, cette comparaison donne, en simplifiant:
call appel_de_la_date
mov eax, date d'installation ou compteur du nombre de jours depuis l'installation
cmp eax, date de fin, ou nombre de jours accordée pour la période d'essai
(Méfiez-vous:
La deuxième ligne peut parfois se trouver au dessus du call appel_de_la_date!)
Il n'existe pas beaucoup d'API ou de fonctions Windows qui gère le temps.
Pour voir lesquelles vont être sollicitées, il suffit d'interroger les
" fonctions importées " dans W32dasm, et de chercher:
-
GetLocalTime
- GetFileTime
- GetSystemTime
- CompareFileTime |
-
FileTimetoLocalFileTime
- FileTimetoSystemTime
- SetTimer
- KillTimer |
Je
pense avoir cité les principales. GetLocalTime est souvent utilisé !
2
- Les écrans " Time Expired "
Si
cette méthode ne donne rien, vous avez d'autres possibilités. Par exemple,
vous pouvez avancer l'horloge de votre PC pour forcer l'apparition, à
un moment ou à un autre, de l'écran "votre période d'essai à pris fin...".
Ce genre de boite de dialogue peut nous servir. Pour "situer" le call
qui en provoque l'affichage, on peut utiliser la technique suivante:
Avant
de cliquer sur le bouton [OK], lancez SoftIce par un CTRL-D, puis tapez
TASK. L'ensemble des applications actives à ce moment précis vont être
listées:
TaskName |
SS:SP |
StackTop |
StackBot |
StackLow |
TaskDB |
Events |
Esscode |
0000:0000 |
006C6000 |
006D0000 |
4226 |
4BD7 |
0000 |
Explorer |
0000:0000 |
00640000 |
00640000 |
3486 |
33FF |
0000 |
etc...
Dans la liste que vous obtiendrez, vous allez relever le nom de l'application
qui vous semble correspondre à votre cible. Afin de la localiser en mémoire,
vous taperez HWND "nom de l'application". Vous aurez alors:
Window
Handle |
hQueue |
Sz |
Qowner |
ClassName |
Window
Procedure |
0CE0
(1) |
4BD7 |
32 |
Esscode |
#32770
(Dialog) |
1427:00000ED4 |
0CD8
(2) |
4BD7 |
32 |
Esscode |
Edit |
1427:00000EEA |
0CE8
(2) |
4BD7 |
32 |
Esscode |
Button |
1427:000001040 |
etc...
Tapez ensuite un BMSG 0CE0 wm_Command (pour les saisies de champs,
BMSG 0CD8 wm_Gettext donne parfois des résultats), puis F5 pour quitter
Soft-Ice. Quand vous cliquerez sur le bouton [OK], Soft-Ice provoquera
un break. Désactivez le BMSG, et retournez au programme en tapant sur
F12 autant de fois qu'il le faudra. Vous commencerez alors une chasse
aux tests et aux branchements pour réussir à trouver la raison de cet
affichage. Un bpx MessageBoxA peut permettre d'y arriver de la même façon
comme on le verra un peu plus tard.
3
- Les écrans Sharewares :
Certains
écrans, qui surgissent au lancement de l'application, sont visiblement
appelés à disparaître dans la version enregistrée. Il faudra les dénicher
dans le listing, et rechercher si il n'y a pas un branchement Reg/Unreg.
Le principe étant le même que celui développé dans la section " boite
d'enregistrement ", vous pouvez vous y reportez.
4
- Les fonctions Limitées : la recherche du statut utilisateur
Certaines
versions sharewares vont limiter volontairement l'accès à certaines fonctions
(enregistrement, taille des fichiers à ouvrir…) .
Comme pour les boites de message " Time Expired ", il est souvent facile
de mettre la main dessus en posant un Bpx MessageBoxA. Au break, en appuyant
une fois sur F12, vous ferrez apparaître la boite en question. Cliquez
sur le bouton [OK], et vous reviendrez à SoftIce, dans le listing des
codes du programme.
En remontant dans le listing, il va falloir trouver si un branchement
ne peut pas éviter cette portion de programme. En cas d'insuccès, quittez
la routine affichant le nag screen en traçant avec F10, (F12 est parfois
trop radical) et cherchez à nouveau au dessus de l'appel qui a été fait
à la routine " fonction limitée ".
Mais le plus simple reste encore d'utiliser les Strings Data References
de W32dasm.
Dans
le cas des protections de Trial Versions, il est toujours possible qu'une
modification apportée ne fasse que sembler suffire. On ne sait jamais
vraiment, sauf à l'usage, si tout le nécessaire a été fait!
Aussi, plutôt que de modifier brutalement un saut, Il est préférable d'essayer
de remonter la piste, et de chercher ce qui va provoquer ou non ce branchement.
Le test déterminant pour le saut en procédure est souvent fonction d'une
adresse mémoire du type [0041C9C]. Il est courant que les programmeurs
utilisent une telle adresse pour y stocker le statut d'un utilisateur
(0 pour une version shareware, 1 pour une version enregistrée). Il peut
donc y avoir, à un moment ou à un autre un "mov dword ptr [0041C9C]" qui
établira ce statut. Une recherche rapide dans un éditeur de texte peut
se montrer payante.
5
- Les clés d'enregistrement:
En
l'absence de la possibilité de s'enregistrer via une boite de dialogue,
les auteurs de Shareware utilisent des astuces différentes pour valider
un utilisateur licencié. La majorité d'entre eux vont vous proposer de
vous envoyer un certain fichier par mail, et à défaut sur une disquette.
La taille des programmes d'aujourd'hui aynat pratiquement rendu caduque
l'utilisation de tel support:
Alors, que peut il y avoir sur un espace de 1.4 Mo ?
Suivant les cas, vous aurez une Dll, un fichier .Reg, un fichier .Ini…
En l'absence de ce fichier, ou de la clé qu'il mettra en place, il est
théoriquement impossible de faire basculer la version d'évaluation en
Full Version. Pourtant, il y a forcement quelque part une routine et un
test qui en contrôle la présence...
Comment détecter l'existence d'une telle protection ?
1-
Wdasm : Vous pouvez trouver des références qui y font allusions
(du type KEY)
2- Filemon : Une tentative infructueuse d'ouverture d'un fichier
(Not Found) devrait vous mettre la puce à l'oreille.
3- Regmon : Le programme n'arrive pas à accéder à une certaine
clé, dans la base de registre...
A
partir de ces informations, vous allez chercher s'il n'y a pas une référence
dans Wdasm qui pourrait y correspondre
6
- Les sanctions: la clé de fin de période
A
la fin de la période d'essai, en s'il y a eu, pour certains programmes,
un mouvement avant / arrière de l'horloge, une clé est mise en place quelque
part, en même temps qu'apparaît lune boite de message " Time expired "
ou " Your system clock has been set… ".
En trouvant où et comment cette clé est mise en place, vous pouvez réussir
à lever la limitation liée au temps qui passe…
BIENTOT
LE RESEAU NET-ALL SERA FIN PRET ! ET CA VA CHANGER SUR LE NET !
|
Webmasters
gagnez de l'argent
en mettat des pubs !! RENDEMENT ASSURE !!!
UTILISE PAR NET-ALL !!
Le site de vente de matos hight tech le plus connut sur le web
francais ! Prix redoutables !!
Ce site recherche pour vous le toute sorte de materiel informatique
aux prix les plus bas ! livré chez vous et sans arnaque
! faites y un tour, vous trouverez tout !
Cherchez
vos logos/big logos/sonneries polyphoniques... sur ce moteur de
recherche :
Canulars
téléphoniques :
|
|
|