Un de mes amis a téléchargé des logiciels malveillants sur Facebook, et je suis curieux de voir ce qu'il fait sans me contaminer. Je sais que vous ne pouvez pas vraiment décompiler un .exe, mais puis-je au moins le visualiser dans Assembly ou attacher un débogueur?
Modifiez pour dire que ce n'est pas un exécutable .NET, pas d'en-tête CLI.
debugging
winapi
assembly
decompiling
swilliams
la source
la source
Réponses:
Avec un débogueur, vous pouvez parcourir l'assembly du programme de manière interactive.
Avec un désassembleur , vous pouvez afficher l'ensemble du programme plus en détail.
Avec un décompilateur , vous pouvez reconvertir un programme en code source partiel, en supposant que vous savez dans quoi il a été écrit (que vous pouvez découvrir avec des outils gratuits tels que PEiD - si le programme est compressé, vous devrez d'abord le décompresser OU Détectez-le si vous ne trouvez pas PEiD n'importe où. DIE dispose actuellement d'une solide communauté de développeurs sur github ).
Débogueurs:
Démonteurs:
Décompilateurs:
Certains outils connexes qui peuvent être utiles dans tout ce que vous faites sont des éditeurs de ressources tels que ResourceHacker (gratuit) et un bon éditeur hexadécimal tel que Hex Workshop (commercial).
De plus, si vous effectuez une analyse de logiciels malveillants (ou utilisez SICE) , je vous suggère de tout exécuter sur une machine virtuelle, à savoir VMware Workstation . Dans le cas de SICE, il protégera votre système actuel contre les BSOD, et dans le cas de logiciels malveillants, il protégera votre système réel du programme cible. Vous pouvez lire sur l'analyse des logiciels malveillants avec VMware ici .
Personnellement, je roule avec Olly, WinDbg & W32Dasm et quelques petits utilitaires.
N'oubliez pas non plus que le démontage ou même le débogage des logiciels d' autres personnes est généralement contraire au CLUF :)
la source
L'excellent post de psoul répond à votre question, donc je ne reproduirai pas son bon travail, mais je pense que cela aiderait à expliquer pourquoi c'est à la fois une question parfaitement valide mais aussi terriblement stupide. Après tout, c'est un endroit pour apprendre, non?
Les programmes informatiques modernes sont produits par une série de conversions, commençant par l'entrée d'un corps d'instructions textuelles lisibles par l'homme (appelé "code source") et se terminant par un corps d'instructions lisibles par ordinateur (appelé alternativement "binaire" ou "machine" code").
La façon dont un ordinateur exécute un ensemble d'instructions de code machine est finalement très simple. Chaque action qu'un processeur peut entreprendre (par exemple, lire dans la mémoire, ajouter deux valeurs) est représentée par un code numérique. Si je vous disais que le numéro 1 signifiait crier et le numéro 2 signifiait rire, puis que je tenais des cartes avec 1 ou 2 sur eux s'attendant à ce que vous criiez ou riez en conséquence, j'utiliserais ce qui est essentiellement le même système qu'un ordinateur utilise opérer.
Un fichier binaire n'est qu'un ensemble de ces codes (généralement appelés "codes op") et les informations ("arguments") sur lesquels les codes op agissent.
Désormais, le langage d'assemblage est un langage informatique dans lequel chaque mot de commande du langage représente exactement un code opérationnel sur le processeur. Il existe une traduction directe 1: 1 entre une commande en langage assembleur et un code op du processeur. C'est pourquoi l'assemblage de codage pour un processeur x386 est différent de l'assemblage de codage pour un processeur ARM.
Le désassemblage est simplement ceci: un programme lit le binaire (le code machine), remplaçant les op-codes par leurs commandes de langage d'assemblage équivalentes, et sort le résultat sous forme de fichier texte. Il est important de comprendre cela; si votre ordinateur peut lire le binaire, vous pouvez également lire le binaire, soit manuellement avec une table d'op-code dans votre main (ick) ou via un désassembleur.
Les désassembleurs ont de nouvelles astuces et tout, mais il est important de comprendre qu'un désassembleur est finalement un mécanisme de recherche et de remplacement. C'est pourquoi tout CLUF qui l'interdit souffle finalement de l'air chaud. Vous ne pouvez pas autoriser immédiatement l'ordinateur à lire les données du programme et également interdire à l'ordinateur de lire les données du programme.
(Ne vous méprenez pas, il y a eu des tentatives pour le faire. Ils fonctionnent aussi bien que DRM sur les fichiers de chansons.)
Cependant, il y a des réserves à l'approche de démontage. Les noms de variables sont inexistants; une telle chose n'existe pas sur votre CPU. Les appels à la bibliothèque prêtent à confusion et nécessitent souvent le démontage d'autres fichiers binaires. Et l'assemblage est difficile à lire dans les meilleures conditions.
La plupart des programmeurs professionnels ne peuvent pas s'asseoir et lire le langage d'assemblage sans avoir mal à la tête. Pour un amateur, cela n'arrivera tout simplement pas.
Quoi qu'il en soit, c'est une explication quelque peu superflue, mais j'espère que cela aide. Chacun peut se sentir libre de corriger toute anomalie de ma part; cela fait longtemps. ;)
la source
Bonnes nouvelles. IDA Pro est actuellement gratuit pour ses anciennes versions: http://www.hex-rays.com/idapro/idadownfreeware.htm
la source
Tout débogueur décent peut le faire. Essayez OllyDbg . (edit: qui a un grand désassembleur qui décode même les paramètres des appels WinAPI!)
la source
x64dbg
est un bon débogueur open source qui est activement maintenu.la source
Bien sûr, jetez un œil à IDA Pro . Ils offrent une version eval pour que vous puissiez l'essayer.
la source
Si vous essayez simplement de comprendre ce que fait un malware, il pourrait être beaucoup plus facile de l'exécuter sous quelque chose comme l'outil gratuit Process Monitor qui signalera chaque fois qu'il essaie d'accéder au système de fichiers, au registre, aux ports, etc.
De plus, l'utilisation d'une machine virtuelle comme le serveur VMWare gratuit est très utile pour ce type de travail. Vous pouvez créer une image "propre", puis y revenir chaque fois que vous exécutez le logiciel malveillant.
la source
Vous pouvez obtenir des informations en les visualisant dans l'assembly, mais je pense que la chose la plus simple à faire est de démarrer une machine virtuelle et de voir ce qu'elle fait. Assurez-vous de ne pas avoir de partages ouverts ou quoi que ce soit de semblable à travers lesquels;)
la source
Boomerang peut également être utile de vérifier.
la source
Ce que vous voulez, c'est un type de logiciel appelé "désassembleur".
Google rapide donne ceci: Lien
la source
Je ne peux pas croire que personne n'ait encore rien dit sur Immunity Debugger .
Immunity Debugger est un outil puissant pour écrire des exploits, analyser des logiciels malveillants et inverser les fichiers binaires. Il était initialement basé sur le code source d'Ollydbg 1.0, mais avec le bug de résolution des noms corrigé. Il dispose d'une API Python bien prise en charge pour une extensibilité facile, vous pouvez donc écrire vos scripts python pour vous aider dans l'analyse.
En outre, il y en a un bon que Peter de l'équipe Corelan a écrit appelé mona.py , excellent outil btw.
la source
Si vous souhaitez exécuter le programme pour voir ce qu'il fait sans infecter votre ordinateur, utilisez-le avec une machine virtuelle comme VMWare ou Microsoft VPC, ou un programme qui peut sandboxer le programme comme SandboxIE
la source
Si vous n'avez pas le temps, soumettez le malware à cwsandbox:
http://www.cwsandbox.org/
http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/
HTH
la source
Vous pouvez utiliser dotPeek, très bon pour décompiler un fichier exe. Ce est gratuit.
https://www.jetbrains.com/decompiler/
la source
Je dirais qu'en 2019, Ghidra ( https://ghidra-sre.org/ ) vaut le détour. Il est open source (et gratuit) et possède des capacités d'analyse de code phénoménales, y compris la possibilité de décompiler tout le chemin vers un code C assez lisible.
la source
La suite explorer peut faire ce que vous voulez.
la source