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

écrivez moi!


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



NOTE:   Ce crack est destiné o newbies comme cela a été précisé par C4N... :)
            J'espère ke j'orais été le plus clair possible! :)


 
 
Quelques informations utiles sur l'approche du crack
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:



Referenced by a Conditionnal Jump @ address 00471C70

:00471CAA    push 10        ; reference du message d'erreur surement...


            Bon on s'empresse d'aller en 471C70 et on voit:



:00471C69    call 0046CCB0    ; call ki calcule le serial
:00471C6E    test al,al            ; et renvoie en AL 1 si c correct ou
:00471C70    je 471CAA         ; 0 et ca affiche le message d'erreur!

            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! :)
 


Mais où se cache t elle??
 

            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:



:0046CCE7    call 00403C20    ; Cette routine calcule la longueur de la chaine
:0046CCEC    cmp eax,0C        ; compare la valeur retournée à 0Ch = 12d
:0046CCEF    jne 0046CD8E    ; si on a pas entrer 12 caractères alors jump "BAD BOY"
:0046CCF5    mov eax, dword ptr [ebp-4]     ; pointe EAX sur l'adresse memoire EBP-4
:0046CCF8    cmp byte ptr[eax],38    ; oh ms keske c ca??? un zoli comp!!! :)
:0046CCFB    jne 0046CD8E    ; Si different alors jump "BAD BOY"

... 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!


"Target Locked... Destroy..."
 

            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"
Exemple de tableau à dessiner sur une feuille de papier

            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
Tableau récapiutalif des tests du serial

            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... ;=)"





Appendice:

            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 !
 
 

-- Agent Secret James Bond 007
Email: snipernet_1@yahoo.com
IRC: Undernet : UnderNet (#crack.fr) ou EFNet (#cracking4newbies)