La décompilation C, C ++ et DotNet sont les bases de l'inverse. Résolution des problèmes de marche arrière avec r0ot-mi. partie 1

image

Dans cet article, les 5 premières tâches, nous apprendrons les bases du démontage, résoudrons les problèmes du niveau inverse initial et décompilerons également l'application dotNet.

Information organisationnelle
Surtout pour ceux qui veulent apprendre quelque chose de nouveau et se développer dans l'un des domaines de l'information et de la sécurité informatique, j'écrirai et parlerai des catégories suivantes:

  • PWN;
  • cryptographie (Crypto);
  • technologies de réseau (réseau);
  • reverse (Reverse Engineering);
  • stéganographie (Stegano);
  • recherche et exploitation des vulnérabilités WEB.

En plus de cela, je partagerai mon expérience en criminalistique informatique, analyse de logiciels malveillants et micrologiciels, attaques sur les réseaux sans fil et réseaux locaux, réalisation de pentests et écriture d'exploits.

Afin que vous puissiez vous renseigner sur les nouveaux articles, logiciels et autres informations, j'ai créé une chaîne dans Telegram et un groupe pour discuter de tout problème dans le domaine de l'ICD. Aussi, je considérerai personnellement vos demandes, questions, suggestions et recommandations personnelles et répondrai à tout le monde .

Toutes les informations sont fournies à des fins éducatives uniquement. L'auteur de ce document n'assume aucune responsabilité pour tout dommage causé à quelqu'un du fait de l'utilisation des connaissances et des méthodes obtenues à la suite de l'étude de ce document.

C, GCC32


Prenons le cas le plus simple. Ceci est la première quête inversée.

image

Dans les tâches de ce type, lorsque le mot de passe est stocké sous forme de chaîne, il peut être trouvé sans utiliser d'outils spéciaux. Exécutons le programme et voyons ce qu'il affiche.

image

Super. Nous avons une invitation et un message sur le mauvais mot de passe. Nous regardons les lignes du fichier programme, et nous trouvons parmi elles une invitation et un message sur le mauvais mot de passe. Il devrait y avoir un mot de passe à proximité.

image

Ainsi, des lignes côte à côte, il y en a une qui ressemble à un mot de passe. Essayons.

image

La tâche est terminée. Nous donnons le mot de passe, nous obtenons 5 points.

image

ELFx86, Basic


On nous demande de trouver un mot de passe.

image

Nous chargeons le programme dans le débogueur IDA Pro (j'utilise la version 7.0) et appuyons sur F5 pour décompiler le programme.

image

Ainsi, le nom entré est comparé à la chaîne john et le mot de passe est comparé à l'extracteur.

image

Ainsi, nous avons correctement résolu la tâche et obtenu notre mot de passe. Nous le louons et gagnons 5 points supplémentaires.

image

PEx86, 0 ​​protection


Cette fois, on nous donne un exe-shnik.

image

Téléchargez-le dans IDA Pro.

image

Le programme n'enregistre pas les informations de débogage, donc nous ne voyons pas les noms de fonction habituels comme main. Regardons les lignes du programme, pour cette presse + F12.

image

Nous voyons des messages sur la saisie des mots de passe corrects et incorrects. Maintenant, nous pouvons trouver le bloc avec cette ligne dans le code et voir quelle condition le précède. Double-cliquez sur la ligne.

image

Nous sommes situés dans la section rdata. Trouvons tous les liens dans le code de cette adresse. Pour ce faire, appuyez sur X.

image

Ainsi, dans le code du programme, il n'y a qu'un seul appel vers notre ligne. Nous double-cliquons et passons au code.

image

Nous sommes dans le code de programme principal. Nous décompilons.

image

Ici, une vérification d'un certain nombre a2 et d'une ligne a1 a lieu. Traduisons un numérique en un caractère.

image

Pour ce faire, appuyez sur R. sur le numéro. Et notre code a changé.

image

Nous connaissons maintenant la ligne, il reste à savoir quel est le nombre a2. Voyons tous les liens vers cette fonction.

image

Il n'est appelé qu'une seule fois.

image

Comme vous pouvez le voir, la longueur de la chaîne est transmise comme deuxième paramètre. Vérifiez le mot de passe trouvé.

image

Nous cédons et obtenons 5 points.

image

ELF-C ++, 0 protection


On nous propose de résoudre un programme en C ++.

image

Nous ouvrons dans IDA Pro et nous passons à l'endroit d'un appel du message sur le mot de passe correct. Colorons-le en vert.

image

Rendons le graphique plus petit.

image

Nous devons donc passer par deux conditions. Analysons-les. Dans la première condition, le nombre d'arguments est comparé à 1. Autrement dit, le programme doit avoir plusieurs arguments (le premier est le nom du programme).

image

Nous analysons la deuxième condition.

image

La chaîne que nous avons entrée est comparée à la chaîne transmise en paramètre à la fonction plouf. Nous le décompilons.

image

Analysez le code. En fait, a2 - est une chaîne. Ainsi, le cycle va de i = 0, jusqu'à ce que le i-ème élément de la ligne a2 soit 0 (c'est-à-dire jusqu'à ce qu'il atteigne la fin de la ligne).

V3 = a2 [i]
V5 = longueur (a3)
V6 = a3 [i% v5]

Autrement dit, la ligne à l'adresse a1 sera égale aux deux lignes proxy a2 et a3. Revenons à la fonction principale et trouvons ces lignes.

image

Nous devons donc définir les paramètres var_C et var_10. Nous les trouverons un peu plus haut. Ce sont les chaînes unk_8048BC4 et unk_8048DCC, respectivement.

image

Trouvez la valeur des chaînes.

image

Eh bien, nous allons écrire un code pour les proxy.

image

Nous obtenons le mot de passe.

image

PE-DotNet, 0 protection


Dans cette mission, il nous est proposé d'inverser l'application .NET.

image

Vous pouvez le déterminer à l'aide de l'utilitaire de fichier.

image

C # est un langage décompilé, nous pouvons donc obtenir le projet d'origine. Cela peut être fait en utilisant dnSpy .

image

Ouvrons le projet CrackMe et trouvons des fonctions et des méthodes.

image

La méthode Button1_Click vérifie le mot de passe au clic d'un bouton.

image

Dans le code source, nous trouvons le mot de passe. Vérifiez-le.

image

Nous le remettons.

image

C'est tout pour l'instant. À suivre ... Vous pouvez nous rejoindre sur Telegram . Là, vous pouvez proposer vos propres sujets et voter sur le choix des sujets pour les articles suivants.

Source: https://habr.com/ru/post/fr467085/


All Articles