Cracking - le code assembleur de recherche de pointe afin de trouver une vulnérabilité, il a suivi dans l'analyse et le cambriolage

Introduction à la fissuration

début

Cracking - le code assembleur de recherche de pointe afin de trouver une vulnérabilité, il a suivi dans l' analyse et le cambriolage.
Disappoint ceux qui pensent que vous pouvez faire exactement la fissuration sans certaines connaissances, les compétences et la persévérance. Ne vous contentez pas de prendre un virage à télécharger le logiciel requis pour pirater et casser le programme. Ne pensez pas que les interruptions de programme pendant 5 minutes (même si vous avez déjà une expérience et de la protection programme 1, il est possible, encore plus dans une période de temps plus courte).
Donc, si vous avez eu un grand désir d'apprendre à la fissuration, prêt à lire un grand nombre de documents, passer beaucoup de temps, alors c'est l'article pour vous.
Pour commencer , vous devez étudier les bases de l' assemblage, ne même pas besoin d'apprendre à écrire juste besoin de connaître la valeur des fonctions et des commandes sur ce programme doit être capable de lire le code. Pensez-vous que si vous pouvez lire un livre en espagnol, sans le savoir à partir du matériau par Asma vous conseiller de lire: bulletin Kalashnikov (http://www.Kalashnikoff.ru), «Assembler IBM PC" Yurov, de l'article "Assembleur pour Cracker ' s "de Dr.Golova, et" Cracking pour tots "par Crack.
Après avoir maîtrisé le matériel, vous devez connaître le but des fonctions, un peu de compréhension du code de programme assemblerskom. Comprendre que tout programme écrit dans un langage de programmation, est transmis au processeur pour le traitement distribué en code natif, pour un traitement ultérieur et l'exécution des fonctions intégrées en elle. Code de la machine pour qu'il soit converti en un assembleur lisible. Ses quelque chose que nous pouvons voir, modifier, avec des programmes spéciaux. Mais les changements ne sont pas possibles si le programme de logiciel upakovana.Upakovka fait pour réduire sa taille et de protéger contre les manipulations (par exemple, UPX, Aspack et beaucoup d'autres).

Variétés et programmes de la mission

Faire progresser plus est pas possible sans logiciel spécial, nous avons besoin:
  • Debugger / débogueur - sert au code de débogage, trace, etc. breakpoints de configuration.
    (OllyDbg)
  • Disassembler - programme qui sort du code source de code machine en assembleur
    (KWdsm)
  • Analyzer - analyse le fichier de programme et signale ce qu'il emballé (s'il est emballé. :) br> (peid)
  • Déballeurs - Déballez le fichier compressé.
    (QUnpack)
  • Patcher - le programme avec l'aide de laquelle vous pouvez remplacer le fichier de code assemblersky puis enregistrer les modifications.
    (Hiew)
  • Patchmeyker - besoin ceux qui n'ont pas la possibilité d'écrire le crack / patch lui - même. Comment fonctionne le programme est simple, puisque nous avons déjà patché le programme avec l'aide de (hiew) et non patché, patchmeyker calcule les changements dans le programme, lors de la création du fichier patch exe.
    (Tpe)
    Tout ce logiciel peut être téléchargé séparément, mais il existe une version combinée, il est appelé CrackersKit (version au moment de l'écriture: 1.1, poids: 7 Mo), vous pouvez le télécharger depuis cracklab.ru presque tous ces programmes là-bas (ou leurs équivalents). Une fois que nous avons les connaissances de base dans ce domaine, et nous avons le droit d'étudier le logiciel de comprendre dans les types de logiciels:
    shareware - shareware
    freeware - logiciel libre
    adware - programmes de publicité payés
    commercialware - Payez!
    DONATIONWARE - frais, si vous le souhaitez
    L'objectif - le type de programme shareware, ad ware et articles commerciaux.

    Barre d'outils et Olly DASM

    Run Olly
    Je pense que vous avez déjà au moins une certaine expérience avec les alliés (sinon vous pouvez lire l'article Olly Debugger AZ cracklab.ru)
    Permettez-moi de rappeler les fonctions du débogueur avec lesquels nous travaillons:

  • M - carte mémoire (carte mémoire)
  • C - CPU fenêtre principale ollie
  • / - Patches Patches, des lieux de programme ie patchés
  • B - Breakpoints breakpoints
  • R - référencée chaîne de texte référence de chaîne de texte
    Toujours en vue doit être CPU (fenêtre principale alliée), les points d' arrêt et les correctifs.
    Fenêtre CPU:

    Run kWdsm
    Nous comprendrons à destination fonctions les plus élémentaires DASM.
  • Ouvrir le fichier à disassambler - ouvrir le fichier dans désassembleur
  • Fichiers projet et et commentaires - sauvegarder la liste dans un fichier ASCII
  • Trouver Texte - Recherche de texte
  • Code de Goto Start - passage au début du code
  • Point Goto Entry Program - le point d'entrée du programme
  • Aller à la page - aller à la page
  • Exécuter JMP - à la transition
  • Retour De la dernière Jmp - retour de transition poslednednego
  • Exécuter appel - faire un appel
  • Retour De Appel - retour du dernier appel
    Afin d'analyser le code de sécurité à son début à trouver.

    Rechercher Comment vérifier le code (en utilisant OllyDGB et kWdsm)


    Le but de la recherche - la recherche et la modification du code arbitraire ou valine trouver le numéro de série. code de validation de recherche requis pour le piratage des programmes.
    Le but principal de ce code:
    1 pour vérifier la validité du numéro de série (les données saisies dans le formulaire d'entrée CH)
    2 aller à l'adresse, si elle est correcte / incorrecte
    3 Rapport no / enregistrement correct

    Les principales façons de trouver le code de vérification:
    1 point d'arrêt (intermodules appel)
    2 Référencé
    3 moyens de fenêtre de recherche (dump) Mémoire
    4 Recherche dans la pile
    5 recherche en utilisant kWdsm
    | 1 |
    Breakpoint - fonction d'arrêt.
    Mettez un point d'arrêt peut être soit par
    ligne _komandnuyu, par exemple:
    bpx MessageBoxA
    bpx - breakpoint équipe
    MessageBoxA - fonction, qui est fixé breakpoint
    Objet des fonctions peuvent être trouvées dans les manuels de référence sur WinAPI (cracklab.ru)
    Soit par le biais
    _poisk inter-module d'appel (appels intermodules) tels que:
    Nous trouvons la fonction MessageBoxA puis cliquez à droite et choisissez Set point d'arrêt sur tous les appels MessageBoxA
    | 2 |
    Recherche par chaîne de texte de référence (référence de chaîne de texte).
    Dans cette recherche, utilisé une phrase qui apparaît par exemple lors de la saisie d'un numéro de série incorrect. Exécutez le programme, accéder au programme de CH jure que CH est pas vrai (par exemple comme: Faux SN Essayer à nouveau!) => Pour la recherche et ispolzovat cette phrase plus loin, nous entrons dans le All chaîne de texte référencé (qui se trouve dans l'onglet Recherche) et rechercher la phrase .
    3 |
    Exécutez le programme, remplissez la fenêtre d'enregistrement, pressé la lettre M (Fenêtre Memory) Dans le DUMP cliquez sur le bouton droit, puis entrez les informations de contact entré dans le champ de mot de passe. Une fois que le programme a trouvé un morceau de la mémoire, qui est entré dans nos données, nous avons mis un point d'arrêt sur la ligne avec un mot de passe (clic droit breakpoint -> accès mémoire) tentent à nouveau d'enregistrer le programme. Entrez les données et il arrête sur un morceau de code qui a été trouvé par nous entrâmes mot de passe. Retirez la mémoire breakpoint et poursuivre l'étude.
    | 4 |
    Recherche sur la pile produit comme suit, cliquez dans la pile de la fenêtre, cliquez droit sur Rechercher -> Binary Sting et chercher une phrase qui apparaît lorsque vous entrez une conclusion erronée que l'expression SN.Dalshe regarder à gauche pour y voir la commande de champ Dissambly, le copier pour aller à la fenêtre principale (CPU) clic droit Serach pour -> commande
    | 5 |
    Faites une recherche parmi kWdsm.Poisk via kWdsm est très simple de trouver le code de vérification que vous devez entrer une phrase en sortie un enregistrement incorrect, ou regardez sur la ligne possible StringData Ref du code Obj -> "

    Exemple de piratage des programmes avec différents types de protection

    Pour apprendre à la fissuration, vous avez besoin d'explorer autant de programmes que possible, avec des degrés de complexité variable protégée, afin de passer à l'affaire. Dans cet article, je vais discuter seulement 2 types de protection (car ils sont les plus courants):
    1 forme de l'introduction de CH
    2 étiquette dans le programme (par exemple, non enregistré)
    Programme pour la recherche, ou de prendre le magazine avec des blancs (PS, un pirate, jeu) ou à partir de sites tels que softodrom.ru, etc. (il sont à la recherche de logiciels sharovanny (ie type de shareware) et explorer).
    Théorique plan de rupture:
  • Recherche code de contrôle
  • fonctions d'analyse de code
  • trouver des fonctions de sortie CH ou modifier
  • programme rapiéçage, ou l'introduction de CH trouvé
    Commençons directement le processus de recherche de code et sa rupture, je vais vous montrer les étapes de l'exemple EscapeClosePro
    Toutes les étapes suivantes sont recommandées pour mener avec moi, car il est difficile de percevoir que par la lecture des documents. Si vous ne comprenez toujours pas comment je pouvais pratiquer sur crackme possible du fantôme et l'artisanat (ngh.void.ru/soft/d/crackme.rar; ngh.void.ru/soft/d/craft1.rar)
    EscapeClosePro

    La méthode de protection: CH, inscription non enregistré dans la fenêtre du programme
    Le packer / protecteur: aucun (et nous savons cela grâce peid, et si le programme a été emballé, il fallait juste trouver sous unpackers)
    Coût: 100 roubles :)
    Hacking Recherche par CH:
    Cette méthode de piratage est caractérisé par le fait que le défi est de trouver le code de vérification , il peut être en réglant le point d' arrêt sur la commande que vous voulez, ou voir la référence d'une chaîne de texte, ou tout simplement voir le code désassemblé du programme et de trouver un numéro de série valide.
    1
    Mettez un point d'arrêt MessageBoxA bpx (méthode de trouver le numéro de code de vérification 1) de la fenêtre d'enregistrement .Zapuskaem, entrez les données:
    nom vizor
    CH vizor
    0040262E programme arrêté à l'adresse située à cette commande adresse d'appel avec cette commande est affiché (dans ce cas) le texte: Avis de Mauvais code de la boîte de décharge (la boîte de CPU principale), essayez de trouver des choses intéressantes par la seule visualisation du code pour faire défiler et voir à 0012F3D0 quelques chiffres plus de 10 chiffres en bref: 56C520AE713B563D5119 il y a une suspicion d'insuffisance cardiaque, un test et une déception.
    personne interdit multiple (voire la totalité) façons de rechercher immédiatement
    Maintenant mis un point d'arrêt non pas sur le message lui-même, et la phrase de commande d'éjection (code incorrect!) Push.Snova-à-dire de remplir un formulaire qui est OK, le programme est arrêté à 00.402.620 (où PUSH 0) .Tourner tourner notre regard vers le vidage de la mémoire et nous voyons là:
     0012F438 004088E8 ASCII "9B2BC2C55272E0C32B44" << suspecté CH 0012F43C 0012F518 << ici notre breakpoint 0012F440 00402200 EscapeCl.00402200 
    Test nous a trouvé 1 plus CH pour la validité. (Nom vizor sn 9B2BC2C55272E0C32B44) et vous remercions pour votre inscription!
    2
    Essayons encore une fois, mais de façon légèrement différente, à nouveau retourner à l'adresse 00402620 (qui a oublié cette poussée) et commencer à chercher quelque chose d'intéressant dans la fenêtre principale pour faire défiler .. .. et trébuchent à l'adresse 00402598 dans laquelle nous voyons en clair déjà familier CH ) 9B2BC2C55272E0C32B44. (vous pouvez double-vérifier la validité de son :)
    3
    Aller à la recherche -> Toutes chaîne de texte référencé et de voir les choses terribles :) CH strechaetsya non crypté valable 10 fois dans la chaîne de texte de référence.
    Changer la fonction de sortie:
    Modification de la fonction de sortie, à son tour, est caractérisé par la recherche de code de validation, changer à un à- dire cyclique arbitraire de telle sorte que pour toutes les données saisies examinera lui - même enregistré.
    Encore une fois, définissez le point d'arrêt sur MessageBoxA comme avant, entrez tezhe nom du champ de données, CH, arrêter là. Seulement maintenant, nous allons plus dans la transition de la recherche (Jampa, saut) .po analyser la façon dont toutes les transitions. Une promotion est composée de manière, si une telle fonction pour afficher le message est à peu près à l'adresse 5, son test se produit au-dessus de cette adresse, car il est toujours testé ci-dessus résultat (le concept de la pile).
    Fait défiler ci-dessus, voir:
     004025CD> 85C0 EAX TEST, EAX
     004025CF.  A3 58AF4000 MOV DWORD PTR DS: [40AF58], EAX
     004025D4 74 4A JNE SHORT EscapeCl.00402620 
    
    Analyse JNE 00402620 transition, faites attention avant d'aborder Jampa ie 00402620.Smotrim qui est à cet endroit, nous voyons que les messages concluent que le programme nezaregistrirovanna.Teper si nous changeons le JNE de transition (saut sinon égale ie saut sinon égale) à JE (saut en cas d'égalité à savoir si saut égal) .Dvoynym cliquez sur le bouton gauche de la souris, cliquez sur:
     004025D4 74 4A JNE SHORT EscapeCl.00402620 
    
    et changer le JNE sur JE.Teper entré tout programme de CH estime pour le bon (bien sûr en plus de ce HF :) Et ceci est dû au fait que sa fonction de sortie est modifiée de sorte que le programme retourne toujours un résultat positif dans l'une quelconque des données saisies.
    Mais il est pas tout, il ne faut pas se dépêcher et exécuter Patch 1, la sortie de ce programme. Rappelons quelle autre façon de protéger le programme utilise? droite, simple à première vue signe non enregistré dans la fenêtre. Juste après le programme, elle était à la recherche de changer si un redémarrage est l'inscription sur autre chose, et si oui, il se sent enregistré, mais nous avons par exemple nebylo si pas tout est encore fait avancer.
    Nous avons mis un point d'arrêt sur les MessageBoxA déjà surexposées.
    Nous commençons à parler si le programme est non enregistré, alors il peut être vu l'inscription non enregistré donc quelque part dans le code, il faut la recherche de programme byt.Nachinaem, mais avant que le code juste proskrolim et le voir .. pour faire défiler vers le bas et voir:
      0040265F.  85C0 ESSAI EAX, EAX << la comparaison des données dans les registres
     00402661 74 23 JE SHORT EscapeCl.00402686 << transition
     00.402.663.  8B5424 70 MOV EDX, DWORD PTR SS: [ESP + 70]
     00.402.667.  68 64724000 PUSH EscapeCl.00407264;  / Text = "La version non enregistrée!"
     ...
     00402686> 8B7424 70 MOV ESI, DWORD PTR SS: [ESP + 70]
     0040268A.  8B3D 70714000 MOV EDI, DWORD PTR DS: [<& USER32.SetDlgIte>;  USER32.SetDlgItemTextA
     00.402.690.  68 54724000 PUSH EscapeCl.00407254;  / Text = "Enregistré à:"
    
    "SetDlgItemTextA - titre ou fonction du texte dans la fenêtre"
    Et voilà le message. Obtenir l'analyse du code. Nous voyons un modèle standard et de vérifier le contenu de la fonction de registres Jampa. JE 00402686 - JE - passer sur le code. Nous regardons ce qui est sur 00402686 et il y a un message qui RegiRegistered à programmer: => si vous changez de programme JE JNZ au scénario lyudom se considère enregistré et écrit à ce sujet dans sa fenêtre principale.
    Donc, la modification de ces deux fonctions, le programme sera toujours enregistré et tout cela balgodarya autour des 2e octets modifiés dans le code.
    Patching:
    programme Patcher est effectué directement après le programme de piratage.
    Pour patcher notre programme expérimental pour être changé:
     fonction de changement d'adresse
      adresse de la fonction
    	  transition
     004025D4 JNE 00402620 JE
     00402661 00402686 JE JNE
    
    Pour le rapiéçage utilisera hiew, hiew'a de commandes peut être trouvé dans mon article (ngh.void.ru/lec/crack.html).
    Avant que nous faisons programme patcher besoin de créer un dossier (où le dos, peut être dans le répertoire racine) et copiez le fichier exe EscapeClosePro, dans le cas si nous avons fait quelque chose de faux. Une fois que nous avons copié, run hiew trouver et l'ouvrir dans notre dossier (EscapeClosePro.exe) .Sur ce point, je voudrais parler un peu plus sur les options de base hiew'a.V ce menu, sélectionnez Decode.
    menu d'affichage du code

    Le principal hiew'a du panneau:

  • Aide - fonction HELP (F1)
  • Modifier - Modifier (F3)
  • Mode - mode Text Viewer (F4)
  • Goto - recherche par adresse (F5)
  • Recherche - recherche de texte (F7)
  • Fichiers - modifications sohranienie (F9)
    Téléchargez notre fichier, EscapeClosePro.exe dans hiew, à la recherche d'une phrase (F7), ou (F5) .I serait conseillé de chercher l'expression, donc appuyez sur F7 et entrez le Enregistré à: après avoir trouvé cette phrase, rappelons les conclusions que nous vous devez patch:
     004025D4 JNE 00402620 JE
     00402661 00402686 JE JNE
    
    Patches. Après la correction, (rappelez-vous je l'ai dit nous avons besoin de copier les fichiers du programme EXE et patches il) de canard ici après que nous lui patché pereminuem par exemple p.exe et copie non modifiée du fichier de programme, à savoir que nous avons maintenant dans le dossier 2 fichiers, 1 propatchiny et autres programnyy.Eto de deflotovy nous avons besoin de faire un patch via patchmeykera tpe:

    Pour créer un patch est nécessaire dans cette fenêtre sous la forme fichier d'origine (l'original, à savoir, non modifié / non patché) choisir le fichier patchées et la boîte de fichier patché en conséquence patché fayl.Posle tpe dans la fenêtre principale, remplir des formulaires qui ont créé le patch, et onglet fichier sayt.I, choisissez de créer patcha.Posle enregistrer le nom de votre choix, et tout le patch est prêt!
    J'espère que cet article vous a aidé à apprendre les rudiments de l'art krekerskogo, a répondu à une partie de votre tout voprosy.Dalshe sera beaucoup plus intéressant, plus pratique, et de voir que vous devez tous réussir.
    ps cet article, il est une application sous forme de Veda-rouleaux EscapeClosePro programme de piratage de diverses manières.
    ps merci Armiolu pour ce qui m'a incité pas la bonne façon, aidé dans le développement des choses incompréhensibles pour moi)
    Par Rel4nium (ngh.void.ru)