James
Bond a encore frappé...
... Et il va vous faire profiter de ses connaissances pour...
...Cracker Security Administrator...
Sommaire
de ce cracking tutorial...
Introduction: | Présentation du programme et première approche du crack |
Toolz: | Ce dont vous aurez besoin pour cracker ce programme |
Recherche de la ch'tite bête: | Voir ce kil ne va pas |
Mais où se cache t elle? | Demontrons l'INEFFICACITE des Universial Serial |
"Target locked... Destroy..." | Le moment de vérité... |
Appendice | Quelques infos utiles avant de se quitter... |
Voilà... j'espère que vous arriverez à tout lire et à tout comprendre... Dans le cas contraire
Introduction...: "M... vous avez demandé à me voir ?"
Voici le dernier "Week cracking target" de C4N (cliquez ici
pr consulter la page web)
Nom du programme: | Security Administrator |
Version: | 1.3 (celle fournie ds le zip par C4N) |
Auteur: | Kirill Vasilev |
Date du fichier: | 18/08/1999 |
Taille du fichier: | 568.697 octets |
Temps passé à le cracker: | 10 mins (nan sans deconner!) |
Type de protection: | Universal Serial |
Type de patch: | euh... reherche du serial! |
Public visé: | Débutant* |
Méthode utilisée: | Live Approach |
Remarques éventuelles: | Ben c'est vraiment TRES FACILE a cracker! |
* Niveau (par ordre croissant de difficulté) : Débutant, Avancé, Elite
ToOlZ Of ThE TraDe...: "Qu'est ce que vous avez à me proposer Q ?"
Alors pour ce
crack vs orez besoin de:
Catégorie du programme | Par exemple | Ou alors... |
Débugueur | SoftIce v. 4.0 | heu je crois ki ya pas mieux... :) |
Ben pr ce crack on ora besoin ke de SoftIce... aller... si vous voulez
W32DASM
ms c unikement pr chercher l'adresse du call...
Et enfin le célébrissime SOFTICE... v4.0... ki n'est là
unikement pr tester si ce kon
a fait est kewl ou pas... :)
Recherche de la ch'tite bête...:
Let's Go!
Bon... on a 2 méthodes: ou bien on fait en "live" avec softice et
les break points
habituels (bpx GetDlgItemTextA et GetWindowTextA ou hmemcpy) mais je n'ai
pas
fait exactement com ca!
Ou alors désassembler avec W32DASM et regarder (on ne sait jamais)
une reference
à "Sorry this registration code is invalid!". O depart je ne pensais
pas trouver cette
référence... :)
Mais on la trouve! eh oui... en00471CB1... :)
Alors là... le train train habituel...
On remonte... on voit:
:00471CAA
push 10 ; reference du message
d'erreur surement...
Bon on s'empresse d'aller en 471C70 et on voit:
Bon... o depart, j'suis feignant et je passe tt la routine du call et je
vois ke le
registre AL=0... bon je le change en =1...
Ds SoftIce: R EAX=1
Et le test ne saute pas en 471CAA... bon bref... on continue et la zolie
boite de
dialogue ns informe kon est enregistré! C ca... ms bien sur!
Je relance et en fait on est tt sof enregistré! :(
Donc le call est appelé pr vérifier le serial et mettre à
jour les paramètres ki feront
une version enregistrée de ce programme!
Alors it's time to kick ass and step into the call! :)
Bon on y va !
On fait F8 o nivo de l'appel du call...
La routine n'étant pas longue on va tracer avec F10 tt le long...
et on s'apercoit kavec un movais code la routine sote a la fin de la routine...
On s'apercois ossi ke la routine est appelée 2 fois... on réfléchit
2 sec... il n'en fo pas
plus pr comprendre kelle est appelée une fois o démarrage
du programme pr vérifier
si on est enregistré et une otre fois o nivo de la verif du serial...
Bon là 2 solutions:
1) on patche à la manière "Conan Le Barbare" => on va en
46D040 et on se démerde
sur le patch à faire => movaise idée!
2) on descends plus bas et on regarde ce ki se passe... :)
=> TRES BONNE IDEE!
On part avec une seule idée en tête... trouver une comparaison
avec le vrai et le fo
sérial puisqu'il est ici UNIVERSEL! :)
La seule partie du call intéressante commence donc ici:
... suite des
comparaisons ...
Petite explication...
Le call en 0046CCE7 calcule la longueur de la chaine entrée... Comment
peut on le
savoir? Simplement en sachant ce kon a entré comme valeur et les
registres modifiés
par l'appel de cette sous routine.
On se rend compte en effet ke seul EAX est modifié par l'appel de
cette fonction
(donc le résultat est d'ailleurs testé juste après)
et ke lorsque g entré "007" (pur
hasard! :) ), eax=3 ...
Donc nous en déduisons kil fo entrer un UNIVERSAL SERIAL de 12 caractères!
Si c bien 12 caractères ki ont été entrés alors
il commence la vérification des
caractères entrés... et la comparaison...
C le moment de l'analyse de la partie la plus importante du crack!
Bon... on continue a tracer avec SoftIce et on fait a chaque fois ke EAX
est
modifié (par une instruction comme celle en 46CCF5) on affiche les
données...
Dans SoftIce: "D EAX"
Bon c'est bien gentil... mais comment allons nous retrouver ce code?
On sait kil fo entrer OBLIGATOIREMENT 12 caractères... prenez une
feuille de papier
et délimitez 12 zones comme ci dessous:
adresse mémoire | [eax] | [eax+2] | [eax+3] | [eax+4] | [eax+8] | [eax+9] | [eax+0A] | [eax+0B] |
Valeur comparée | 38 | 33 | 31 | 39 | 30 | 35 | 53 | 45 |
Equivalent ASCII | "8" | "3" | "1" | "9" | "0" | "5" | "S" | "E" |
Voila voila... bon... on s'apercois ke le code ke vous entrez est analysé
en différents
points et est comparé o valeurs universelles dans le programme...
Ms si on regarde plus attentivement, tout le code entré n'est pas
forcément analysé!
En effet, plusieurs "trous", plusieurs octets ne sont pas vérifiés...
comme par exemple
[eax+1], [eax+5], [eax+6], [eax+7] .
Ce ki ns donne un tableau recapituatif suivant...
Emplacement mémoire | Comparaison décimale | Equivalent ASCII | Commentaires... |
[eax] | 38 | "8" | Première valeur |
[eax+1] | ? | ? | Non vérifié |
[eax+2] | 33 | "3" | Verifié! |
[eax+3] | 31 | "1" | id |
[eax+4] | 39 | "9" | id |
[eax+5] | ? | ? | Non vérifié |
[eax+6] | ? | ? | id |
[eax+7] | ? | ? | id |
[eax+8] | 30 | "0" | Vérifié! |
[eax+9] | 35 | "5" | id |
[eax+0A] | 53 | "S" | id |
[eax+0B] | 45 | "E" | id |
Bon là je crois ke ce n'est pas bien dur de comprendre... pr avoir
un bon
serial il suffit kil soit de la forme:
8?319???05SE
Et vous remplacez les "?" par ce ke vous VOULEZ! :))))
Par ex:
8B31900705SE
Et ca marche! :))))
Et that's all folks! :)
CRI DE VICTOIRE!!!
G REUSSI
A CRACKER SECURITY ADMINISTRATOR!!!! SUPER!!!
"encore une fois James Bond finit sa mission... avec succès... ;=)"
Oui... un appendice... pr vs dire koi... 2 choses:
Vous avez trouvé ca dur? pas moi!!!! C un peu drole ke g programmeurs
de
shareware continuent encore et toujours à faire des schémas
de "protection"
(je souligne bien parce ke je n'appelle pas ca une protection...) ossi
simples à cracker
qu'un universal serial...
Deuxième chose... l'analyse du code est faite celon un adressage indexé et basé...
Indexé c'est à dire ke la valeur de EAX dépends d'un
emplacement mémoire
défini par une base (EBP = Extended Base Pointer) et indexé
parce kil y a un
déplacement [eax+1].
Je ne peux pas tout vs expliker ici parce ke sinon il y orait 2 tut'! :)
Ms parce contre je ne peux ke vous suggérer l'achat et l'apprentissage
de l'assembleur
ki ne pourra ke vous servir ds le cracking... En attendant!
HAPPY
CRACKING !