Fulldisk 3.8



Pitite mise en situation, Fulldisk est un petit programme permettant d'évaluer de façon visuelle l'espace qu'occupe les différents fichiers & programmes présents sur votre disque dur.

Tout va pour le mieux dans le meilleur des monde, vous utilisez Fulldisk sans aucun problème quand au bout de 30 jours exactement (comme c'est bizarre) un message vous informe que la période d'évaluation a expirée, Arghhhh mais qu'on peut néanmoins continuer à s'en servir, Ahhhh vous vous dites "ben alors ça va.."

Donc, on peut toujours se servir de Fulldisk plus de 30 jours mais alors il fonctionne à une vitesse réduite, et cette lenteur d'exécution me rend dingue, déjà que mon Pc est lent, si les logiciels commencent à fonctionner encore plus lentement ... mais ou on va ... bordel ...

Je me devais donc de réagir ( et vous aussi, au lieu de rester là dans un état de passivité totale...), mais que faire, demander 10 $ à sa maman ... comment ça elle a pas que ça à foutre que de nous donner 10 $. On peut chercher le crack sur internet, mais bon y suffit de tomber sur une trop version récente et on le trouve pas, et alors on fait quoi ? On a l'air fin là ... C'est vrai va falloir trouver autre chose, reculer l'horloge, ouais ça marche mais bon c'est pas top et en plus le nag est toujours présent quand on quitte le programme. Et on nous promet que si on est enregistré il n'apparaît plus. Ben voili, on va donc s'enregistrer sans 10 $.

 

Outils :

- W32dasm

- un éditeur hexadécimal

 

Go go go (on y va koi !!)

Commençons par examiner le programme, en l'occurrence Fulldisk, lançons le et dans le menu 'Fulldisk' on voit 'Register' on rentre un nom et un serial bidon, et ont nous informe que notre nom/code est incorrect, zut c'est pas de veine, alors va falloir forcer le destin. De plus quand on quitte le programme un vilain nag nous informe de notre statut : utilisateur non enregistré. C'est pas bô tout ça ..

Lançons nous, faisons une copie de fulldisk.exe et éditons là avec W32dasm... patientons c'est pas très long... Voilà c'est fait.

Commençons par regarder ce qu'on trouve dans les 'String Data Références' certaines références sont vraiment intéressantes comme par exemple :

- Name / Code mis-match. Try again
- Thank you for registering!
- Your evaluation period of 30 days...

C'est 3 références suffisent largement pour arriver à nos fins.

Allons à l'endroit ou se trouve "Name / Code mis-match. Try again" en double cliquant simplement sur la ligne dans 'String Data Références'. On arrive ici :

On constate que ce message est appelé de deux endroits en 406430 et en 40644A, ce sont deux sauts conditionnels (C), on fait 'Goto Code Location' et on rentre 406430 et on arrive juste un peu au dessus de l'endroit ou on était.

Donc on constate que les deux sauts conditionnels nous empêchent d'aller sur "Thank you ..."

On pourrait les inverser ou les noper (les effacer koi) mais cela ne réglerait pas le problème car comme la plupart des programmes, Fulldisk vérifie à chaque lancement si le code/nom est correct, et si ce n'est pas le cas considère qu'on est pas enregistré. Il faudrait donc aussi cracker cette vérification.

Mais se prendre la tête alors qu'il existe une solution plus facile ? Regardons attentivement ce qui figure avant "Thank you for registering!" Il y a une ligne nous donnant de précieuse indication :

mov dword ptr [ebx+000001A4], 00000001

La valeur de ebx+000001A4 est mise à 1 quand le programme est enregistré on peut donc supposer que lorsque ce n'est pas le cas cette valeur est de 0. Nous allons cherchez dans dans W32dasm si on l'a trouve. On se positionne au début du listing et on fait 'Search' puis 'Find text' et écrivez ebx+000001A4 et faites 'suivant'. On trouve trois endroit y faisant référence mais une seule fois ou la valeur est de 0, en 404A42. On peut supposer que le programme se considère au début comme non enregistré (donc 0) et il effectue une série de tests pour déterminer si on l'est ou pas (si oui =1). Si vous avez compris, vous avez certainement la même idée que moi. Eh oui initialiser le programme en mettant la valeur à 1 comme ça il est enregistré par défaut, cool non ?

Allons donc en 404A42, on a : mov dword ptr [ebx+000001A4], 00000000

Il va falloir modifier le programme pour que les changements soient effectifs, on va donc utiliser l'éditeur hexadécimal, mais comment connaître l'endroit à modifier ? Dans W32dasm plaçons nous sur la ligne en 404A42 et regardons en bas de l'écran, cela devrait donner ça :

4A42 c'est l'adresse le h cela indique que c'est une valeur hexadécimale. Donc si dans votre éditeur vous êtes en décimale soit vous faites la conversion (4A42=19010) ou alors vous changez de mode.

On a donc :

et on veut :

La on a tout ce qu'il faut, l'adresse et Name ce qu'il faut changer, en effet en 4A42 il y a

C780A401000000000000 et nous on met C782A401000001000000, faites ces modifications dans

l'exe qui qui n'est pas édité sinon l'éditeur hexadécimal ne pourra pas enregistrer les modifications. Ceci fait on relance le programme et ... 'register' est grisé et quand on quitte plus de nag, cool. Mais le crack n'en n'est pas pour autant terminé, avancez la date d'un an. Comme je l'avais dis au début un message nous informe que le programme va fonctionner de façon plus lente. Pas de panique, on va se servir de la référence 'Your evaluation period of 30 days...' on clique deux fois
dessus et on arrive ici :

Mais c'est très intéressant tout ça ; cmp dword ptr [ebp-7C], 0000001E ; 1E en décimal ça donne quoi ? mais oui 30 bizarre non ? et 3C = 60 il fait donc un petit test pour déterminer si on se sert du programme depuis plus de 30 jours ou non. On peut soit inverser tous les sauts conditionnels (jle), mais il a plus court avant cmp dword ptr [ebp-7C], 0000001E on trouve :

call 00406B00 => certainement le calcul du nombre d'utilisation
mov dword ptr [ebp-7C], eax => il met le contenu de eax dans ebp-7C et juste après il le compare à 1E

donc on peut supposer que c'est dans ebp-7C qu'il stock le nombre jours d'utilisation. On a donc deux choix il suffit de noper (mettre des 90 ; 90=NO oPération) une de ces deux lignes et le calcul n'aura pas lieu, et donc le nombre de jours d'utilisation ne sera jamais supérieur à 30. Moi j'ai choisit de noper mov dword ptr [ebp-7C], eax ce qui nous donne 894584 qu'on remplace par 909090 (c'est à dire rien, rien et rien). Pour trouvez l'endroit à modifier faites comme avant, ça donne l'offset 5107. Et même chose pour la modification du fichier faites comme précédemment. On relance le programme et bingo !!!! plus de message et le programme est enregistré.

Voili, ce petit tut arrive à sa fin, nous allons donc devoir nous quitter, non ne pleures pas reste fier(e), on va certainement se retrouver une autre fois....