Tutoriel : Comment cracker CMSoldier, un crackme de Craft.



Documents pareils
[WINDOWS 7 - LES FICHIERS] 28 avril Logiciel / Windows

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Comment se connecter au dossier partagé?

Manuel de mise en page de l intérieur de votre ouvrage

Traitement de texte : Quelques rappels de quelques notions de base

Tutoriel déploiement Windows 7 via serveur Waik

Le poste de travail, les dossiers et les fichiers

Planète Multimédia. Voici le logo qu il faut choisir : et tapez sur puis acceptez.

La Clé informatique. Formation Excel XP Aide-mémoire

Initiation à l informatique. Module 7 : Le courrier électronique ( , mail)

Navigation dans Windows

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Faire du publipostage par mails (mass-mailing) avec VTigerCRM

Manuel d utilisation pour la plateforme BeExcellent MANUEL D UTILISATION POUR LA PLATEFORME BEEXCELLENT

Office 365/WIFI/Courrier. Guide pour les étudiants

MO-Call pour les Ordinateurs. Guide de l utilisateur

TUTORIEL IMPRESS. Ouvrir Impress cocher «présentation vierge», «suivant» cocher «écran», «suivant» cocher «standard», «créer»

Le Logiciel de Facturation ultra simplifié spécial Auto-Entrepreneur

LECON 2 : PROPRIETES DE L'AFFICHAGE Version aout 2011

Créer des étiquettes avec les adresses d'un tableau Calc

GUIDE Excel (version débutante) Version 2013

Mise en route de Cobian Backup

NAVIGATION SUR INTERNET EXPLORER

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

UTILISER LA MESSAGERIE

Express Import system

Les outils de SEO (Référencement naturel) et les Sites SharePoint Public sur Office 365

Configurer un réseau domestique. Partager ses fichiers, ses dossiers et ses imprimantes sur tous ses PC.

Mademoiselle J affabule et les chasseurs de rêves Ou l aventure intergalactique d un train de banlieue à l heure de pointe

Comment réaliser une capture d écran dans Word. Alors comment ouvrir une page Word?

1. Ouvrir Internet Explorer Faire défiler une page Naviguer dans un site Internet Changer d adresse Internet (URL) 2

Modes Opératoires WinTrans Mai 13 ~ 1 ~

VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET

Installation et configuration du serveur syslog sur Synology DSM 4.0

Les bases de données. Se familiariser avec Base. Figure 1.1A Ouvre le fichier dont tu as besoin. Lance OpenOffice Base.

EXCEL TUTORIEL 2012/2013

Silhouette Studio Leçon N 2

Mes premiers diaporamas avec Open Office Impress?

Saisissez le login et le mot de passe (attention aux minuscules et majuscules) qui vous ont

Formation Word/Excel. Présentateur: Christian Desrochers Baccalauréat en informatique Clé Informatique, 15 février 2007

Bienvenue sur Maternelle De Moustache Publié le 13/10/2011 Par isabelle. Pages. C est maintenant sur Maternelle De Moustache : Produits récents

Sommaire. Images Actives Logiciel libre développé par le CRDP de l académie de Versailles 2 Rue Pierre Bourdan Marly le Roi

Comment créer un site web Proxy gratuitement!

Tutoriel Atout Facture. 14/01/2015 Codelpi

PARTAGER UN ANNUAIRE COLLECTIF DE SIGNETS AVEC DEL.ICIO.US

Parrot 3200LS-Color 3400LS-GPS

FICHIERS ET DOSSIERS

La saisie d un texte

MODE OPERATOIRE OPENOFFICE BASE

Utiliser Dev-C++ .1Installation de Dev-C++ Table des matières

Initiation à Excel. Frédéric Gava (MCF)

Archivage de courriels avec Outlook ( )

Réalisation de cartes vectorielles avec Word

Création WEB avec DreamweaverMX

Mon aide mémoire traitement de texte (Microsoft Word)

Securexam Consignes pour l EFU Les 2, 3 et 4 juin 2015

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de

Utilisation de l éditeur.

Les conseils et les procédures pour utiliser divers programmes francophones avec de l'hébreu

Guide du maître MODULE TICE. Recherche sur Internet. Mise en forme d exposé et insertion d image. Envoi de fichiers joints

Carte encadrement glitter

Préparation à l installation d Active Directory

Résolution de problèmes à distance

AVERTISSEMENT. Ce texte a été téléchargé depuis le site

Site internet de la ville de Sautron Tutoriel 1

Les différentes étapes à suivre pour la création d un feuillet

J ai peur des souris mais je me soigne Petit manuel à l attention des profs de langues vivantes désireux d affronter le Monstre Informatique

Formation Informatique. Utiliser les périphériques informatiques

REUNION INFORMATIQUE 15/09/12 Utilisation Messagerie «Webmail 2» I ) Préambule : Pourquoi l utilisation d une messagerie commune?

COURS WINDEV NUMERO 3

FAIRE SES COMPTES AVEC GRISBI

Dropbox par un nul et pour des nuls

Utilisation de Sarbacane 3 Sarbacane Software

SOMMAIRE AIDE À LA CRÉATION D UN INDEX SOUS WORD. Service général des publications Université Lumière Lyon 2 Janvier 2007

Atelier Découverte de Windows. janvier 2012

Les 1 er pas sur. Guide d utilisation

Copyright 2008 Patrick Marie.

Cahier n o 6. Mon ordinateur. Fichiers et dossiers Sauvegarde et classement

Débuter avec Excel. Excel

Partie 1 : Tutorial de vérification de backup par ABGX 1.0.5

LES TOUT PREMIERS PAS

Découvrez Windows NetMeeting

Stopack : logiciel pour l entrepôt

< Atelier 1 /> Démarrer une application web

Comment accéder à d Internet Explorer

Organiser vos documents Windows XP

TP1 - Prise en main de l environnement Unix.

Infolettre #6: SkyDrive

L informatique en BCPST

LPP SAINT JOSEPH BELFORT MODE OPERATOIRE ACTIVINSPIRE. Bonne utilisation à toutes et tous! UTILISATION DES TBI LE LOGICIEL ACTIVINSPIRE

Publier dans la Base Documentaire

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var - E mail : bij@agasc.fr / Tel : CONSIGNE N 1 :

Manuel Utilisateur. Boticely

N importe qui possédant un code MS valide peut initier la rencontre. Néanmoins, il serait préférable de laisser cette

Comment parier jute sur les sites de paris sportifs

Fiche Pratique. Présentation du problème. Le cas le plus simple. Un cas plus compliqué. MAJ le 15/12/2011

Tutorial pour la réfection. des microswitchs de portes des modèles VAG. Commençons, de quoi avons-nous besoin?

Notice d installation et d utilisation du blog nomade avec un nouveau blog

Transcription:

Tutoriel : Comment cracker CMSoldier, un crackme de Craft. Bonjour à tous! Je me présente : MMACorp. Je vais tenter avec vous de trouver le(s) moyen(s) de cracker le programme CMSoldier, programmé par Craft. Tout d abord, une petite liste des outils nécessaires et indispensables s impose : - Immunity Debugger, à télécharger ici : http://debugger.immunityinc.com/register.html : vous mettez un espace dans la case «Full name» et cliquez sur «Download» - PIED 0,93, à télécharger ici : http://paysdemesreves.free.fr/compteurs/telechargements.php?f=cours_telechargements.htm&id=pe id%200.93&nom=peid0.93.zip - WinDASM89, à télécharger ici : http://deamonftp.free.fr/deamoncrack/programmes/wdasm89.zip - WinHex (un éditeur hexadécimal), à télécharger ici : http://paysdemesreves.free.fr/compteurs/telechargements.php?f=cours_telechargements.htm&id=wi nhex%2010.2&nom=winhex_10.2.zip Note : je vous ai conseillé Immunity Debugger, mais c est parce que je travaille sur Python, un langage de programmation que je découvre et que j apprécie énormément, mais rien ne vous empêche d utiliser OllyDbg, que vous pouvez télécharger ici : http://paysdemesreves.free.fr/compteurs/telechargements.php?f=cours_telechargements.htm&rep=ollydbg/ &id=ollydbg%201.10&nom=ollydbg1.10.zip Maintenant que vous avez les outils, commençons! Ah, je vous entends d ici : holà, doucement! Tu nous a fait télécharger un gros tas d outils, et on ne sait même pas s en servir!! Ce à quoi je vous répondrai : pas de panique!! Je vais vous expliquer le fonctionnement de chacun de ces outils quand nous en aurons besion et pour les tâches que nous exécuterons, si vous êtes toujours avec moi ^^. Bon allez, c est pas tout ça, mais on a un programme à craquer alors : au boulot! 2 choix s offrent à vous : - Vous passez par une méthode «bourrin» : modifier le code ASM (assembleur) - Ou vous passez par the méthode : le keygenning (créer un programme qui calculera vos serials pour le programme). On commence par quoi me direz-vous? Je vous répondrai ceci : Par la méthode qui respecte le programme et le programmeur : le keygenning!!!

Méthode numéro 1 : le keygenning de CMSoldier Bon, comme je travaille avec Immunity Debugger, mes écrans diffèreront peut-être des vôtres, si toutefois vouss bossez sur OllyDbg! On commence par ouvrir CMSoldier sans debugger : on tape un serial bidon qui n a aucune chance d être accepté par le programme : 12345 ; à moins que le programmeur Oh je n ose y songer ^_^. On obtient ceci : Bon, bah nous voilà bien avancés! Même pas de messagebox à part! Mais on ne stresse pas, on analyse! Ouvrons-le maintenant avec notre debugger préféré (moi c est Immunity Debugger), et allons voir dans les SDR (String Data References). Je vous détaille l affaire :

On fait une petite recherche de «Access Denied» avec clic droit -> search for text. Et on trouve. RIEN. Catastrophe!!!!! Ya pas ce qu on cherche dans les SDR!!! C est la galère!!!! Qu est-ce que l on va faire???? (lol ça ferait une belle chanson avec de telles rimes) Réfléchissez : pourquoi ne vois-t-on pas ce message? Ou plutôt où est-il, car il est là. Oui! Vous y êtes : il est crypté!!!! Prochaine étape : décryptons, décryptons

Bon, on revient dans le programme en lui-même (cliquez sur ce C), et on fait Alt+M, pour accéder à la mémoire. Attention : avant, lancez le programme dans le debugger (F9) et allez jusqu au!! Access Denied!! Recherchez Access Denied dans la mémoire (je vous montre en images) :

On tombe là-dessus : Faites Ctrl+L jusqu à tomber là-dessus : Tiens, tiens : «!! Access Denied!!». Ca ne serait pas le message que l on cherchait??? Mais si! On l a trouvé. On va donc poser un breakpoint en mémoire, au premier «!» de «!! Access Denied!!». Comment? On clique gauche sur le premier «!» et on clique droit -> breakpoint -> memory, on access (regardez l image).

Bon à partir d ici, le programme peut ramer un peu : c est normal on cherche dans la mémoire, et c est vaste. Donc, on revient dans CMSoldier même : on enlève le dernier caractère tapé et on le remet : le debugger breake : raté! Bon on continue : F9 -> il rebreake et on voit : «"##"Caagqq"Tcnkfcvg"##"» YYYYYYYYOUUUUUUUUUUUUUUUUUPPPIIIIIIIIIIIIIIIIIIIIIIIIIIII!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! On a trouvé le message crypté!!!!! Retournons voir dans les SDR. Attends, dis donc! On l avait depuis le départ!! Certes, mais comment auriez-vous pu savoir que c était ça sans cette menu démonstration???? Bon, donc, faites ENTREE quand vous êtes sur cette SDR : on arrive là dans le CPU :

Je suis un peu monté par rapport à l endroit où vous avez atterri. Voyez ces 5 surlignages bleu turquoise : 5, justement il y a 5 caractères dans le serial. Remarquez que les JNZ mènent à d autres messages tous identiques entre eux : on vient de trouver la routine de vérification du serial!!! Bon on revient à notre CMSoldier : vous souvenez-vous des carrés rouges et vert?!! Ca va nous servir. Relancez le programme, en prenant soin de mettre les breakpoints aux 5 sauts cruciaux. Il breake au premier saut après que vous ayez tapé votre dernier caractère de «12345». Que vous dit le rectangle marqué sur l image dans votre debugger?? «jump is taken» : en français, le saut est pris (honte à moi de faire du mot à mot mais bon, ça dépanne). Donc, le programme saute vers le mauvais message : le fameux «!! Access Denied!!». Allez jusqu à Access Denied dans le programme et retapez le serial mais en premier caractère mettez «2» (sans les guillemets). Que vous dit le fameux rectangle?? jump is NOT taken : le saut n est pas pris. Raisonnons : si tous les sauts sont ainsi, si on ne saute pas sur aucun des 5, on affiche le bon message! Que vous a affiché le programme quand vous avez tapé 2 comme caractère?? Où était le carré rouge?? Maintenant, essayez toutes les lettres majuscules, minuscules et chiffres possibles au clavier. Pour vous éviter de longues minutes d essais, voici le résultat de mon expertise : 2 9 Z P Q 4 L V p v 1 ere chaîne 4 5 7 0 R O H X B a z e r t y g j k l c n 2 eme chaîne Y U I D K W m x 3 eme chaîne 1 3 6 8 A E T S F G J M C N u i o h f d s q w b 4 eme chaîne 4 5 7 0 R O H X B a z e r t y g j k l c n 5 eme chaîne Désolé mais la mise en forme c est pas trop mon truc Donc voilà! C est à 90% terminé : on prend un caractère au hasard dans la chaîne 1,2,3,4,5 et on regarde dans le programme. Et là, que du bonheur :

Voilà pour la recherche du serial! Il ne reste plus qu à coder un keygen valide pour ce programme! Moi je l ai codé en python et ça donne ça : Rendu graphique :

Code :

Et voilà! On a fait la première méthode, qui je trouve est nettement plus amusante que la 2eme, que nous allons voir tout de suite, mais qui reste tout de même amusante! Méthode numéro 2 : modification du code ASM. Bon. On repart des instructions en ASM comme sur cette image : Observez la structure des sauts, et où ils arrivent : SAUT N 1 : 0045284B 0F85 7E010000 JNZ defi_cra.004529cf SAUT N 2 : 00452867 0F85 2D010000 JNZ defi_cra.0045299a SAUTN 3 : 00452883 0F85 DC000000 JNZ defi_cra.00452965 SAUT N 4 : 0045289F 0F85 88000000 JNZ defi_cra.0045292d SAUT N 5 : 004528BB 75 38 JNZ SHORT defi_cra.004528f5. Ils sautent tous vers le même message d erreur, décliné en 5 parties. Pour ne plus l avoir, on fait sauter les JNZ vers le bon message! Mais là, tsatsam C est le bon message mais il est rouge, et non vert! Comment faire pour qu il soit vert??? Je vous propose ceci : on va faire sauter tous les JNZ vers 1 adresse précise du code, sauf le dernier (on verra pourquoi). Regardez là où il y a de la place dans le code (là où il n y a que des 0). Moi j ai choisi en 00452DF0. On va écrire une instruction en ASM, mais il faut connaître les bases de l ASM pour s y retrouver à l avenir dans vos modifs, c est pourquoi je vous conseille le tutoriel du site de Daemon ou de Pifoman, très complets pour ce qu il nous faut. Bon. Remarquez que si le dernier saut ne saute pas, on va droit vers notre message ok en vert, donc on va sauter juste après ce saut, mais ce saut doit être inconditionnel (on doit sauter quelquesoit la situation) : ce qui en assembleur donne : JMP 004528BD. Donc, on modifie les saut JNZ sauf le dernier pour qu ils sautent en 00452DF0 (changez juste l adresse du saut), et arrivés là, ils vont tous sauter juste après le dernier JNZ pour aller au message ok.

Mais au fait?? Et le dernier saut? Si le dernier caractère est invalide on va quand même sur un message d erreur?!!! J y viens, doucement. Mais là, j ai un peu honte de vous le dire, je me suis pas cassé la tête : j ai fait sauter le saut juste après lui, car le short ne me permet pas de sauter très loin vers 00452DF0 (Pitié les programmeurs, me tapez pas!). Analysons nos modifications : - On fait sauter les JNZ (selon leur condition de départ) vers 00452DF0 - Le saut inconditionnel de 00452DF0 nous revoie en 004528BD, juste après le saut JNZ short. - Le JNZ short continue vers l instruction suivante. Mais si les caractères tapés sont corrects?? on va vers le message d erreur?? Et non! si les caractères entrés sont exacts, les JNZ ne sautent pas! et le programme continue vers le bon message!!! Donc voilà, vous avez fait 80% du travail. Reste à mettre ces modifications au propre dans un éditeur hexadécimal Pour ceci, vous avez WinHex! Ouvrez le, et mettez le en français comme j ai fait : Puis, mettez-vous en quête de l adresse du premier saut : 0045284B. Pour cela, on fait Position -> aller à la position et on tape l adresse là où on vous le dit puis ENTREE. Et là, oh stupeur :

Comment on fait alors??? Et pourquoi ça fait ça?? C est pourtant la bonne adresse!! Que vous croyez! En fait c est l adresse que le debugger vous a donné mais ce n est pas ce que l on cherche : à savoir l offset! Et pour l avoir, prenons un autre outil : WinDASM! Ouvrez le programme avec WinDASM. Là il vous affiche un truc incompréhensible. Allez dans Disassembler -> Font -> Select default font. Choisissez la police qui vous plait et sa taille, puis revenez dans disassembler -> Font et cliquez sur Select Default Font pour éviter de refaire la manip chaque fois que vous ouvrirez un programme : voici l aide graphique. Une fois le programme désassemblé, cliquez sur le bouton a gauche de l imprimante : Strn Ref (String Data References = Referenced text string) Cherchez votre message ok et recherchez les 4 sauts JNZ repérés sous Olly ou Immunity Debugger. En bas a droite de la fenêtre de WinDASM vous verrez marqué Offset (cherchez bien!). Placez-vous sur le message ok et relevez l offset. Fermez Windasm.

Recherchez ce nouvel offset dans WinHex et recherchez à droite Caaqqq. Vous devriez le trouver à l offset 00051E50 avec les ## : Note : pour rechercher du teste, cliquez sur les jumelles dans la barre des tâches de WinHex. Pour rechercher du code hexa, ce sont celles juste à droite avec HEX en dessous. Dans Immunity Debugger / OllyDbg repérez le code hexadécimal juste à gauche des instructions ASM des 4 sauts avant le JNZ short d avant le bon message : ce sont des 0F85 avec quelquechose. Ce sont les chiffres après qui sont intéressants. On doit les remplacer pour sauter vers l adresse du JMP qu on a écrit avec Immunity Debugger / OllyDbg. Pour connaître la traduction en hexadécimal, modifiez dans le debugger et notez le code changeant, que vous recopiez dans WinHex. Au final on a : Le JNZ d avant le bon message sera modifié en 75 00 8B 86.

On écrit maintenant le saut JMP où on l a voulu avec le debugger : moi je l ai écrit en 00452DF0 dans le debugger, ce qui donne l offset 000521F0 avec WinDASM : Et voilà! Enregistrez ce programme sous un autre nom que l original (fichier -> enregistrer sous), et testez : Maintenant, le programme vous affiche le bon message, dans la bonne couleur, quelque soit le serial que vous lui donnez! Elle est pas belle la modification?! Mais?! C est pas le bon message : il affiche «!! Access Granted!!»?!! Oui, bon j ai modifié le message pour que ça soit plus English. Mais bon vous n êtes pas obligé de le faire. Je vous posterai un tutoriel pour ça si vous voulez! En attendant, un de plus de cracké!! Thanks to Craft, the autor of this software. MMACorp.