Est-il possible de "décompiler" une fenêtre.exe? Ou au moins de vue de l'Assemblée?
un ami à moi a téléchargé quelques logiciels malveillants de Facebook, et je suis curieux de voir ce qu'il fait sans me infecter. Je sais que vous ne pouvez pas décompiler un .exe, mais puis-je au moins le voir en montage ou attacher un débogueur?
Modifier à-dire qu'il n'est pas un .NET exécutable, pas de CLI-tête.
15 réponses
avec un débogueur vous pouvez effectuer l'assemblage du programme de façon interactive.
Avec un démonteur , vous pouvez voir le programme assemblé plus en détail.
Avec un decompiler , vous pouvez transformer un programme en code source partiel, en supposant que vous savez ce qu'il a été écrit (que vous pouvez trouver avec des outils gratuits tels que PEiD - si le le programme est emballé, vous devrez le déballer d'abord ou Detect-it-Easy si vous ne pouvez pas trouver PEiD n'importe où. DIE a une forte communauté de développeurs sur GitHub actuellement).
débogueurs:
- OllyDbg , gratuit, un bon débogueur 32 bits, pour lequel vous pouvez trouver de nombreux plugins et scripts créés par l'utilisateur pour le rendre encore plus utile.
- WinDbg , gratuit, un débogueur tout à fait capable de Microsoft. WinDbg est particulièrement utile pour regarder les internes de Windows, car il en sait plus sur les structures de données que les autres débogueurs.
- SoftICE , COMME à des amis. Les activités commerciales et de développement ont cessé en 2006. SoftICE est une sorte d'outil hardcore qui fonctionne sous le système d'exploitation (et arrête l'ensemble du système lorsqu'il est invoqué). Le SoftICE est encore utilisé par beaucoup professionnels, bien que pourrait être difficile à obtenir et pourrait ne pas travailler sur certains matériels (ou logiciels - à savoir, il ne fonctionnera pas sur Vista ou NVIDIA GFX cartes).
Désassembleurs:
- IDA Pro (commercial) - haut de gamme démonteur/débogueur. Utilisé par la plupart des professionnels, comme les analystes de logiciels malveillants, etc. Coût pas mal de dollars cependant (il existe version gratuite , mais il est assez limité)
- W32Dasm (gratuit) - un peu daté mais obtient le travail fait. Je crois que W32Dasm est abandonware ces jours-ci, et il y a de nombreux hacks créés par les utilisateurs pour ajouter des fonctionnalités très utiles. Vous devrez chercher autour pour trouver la meilleure version.
Décompilation:
- Visual Basic: VB Decompiler , commercial, produit un bytecode quelque peu identifiable.
- Delphi: DeDe , gratuit, produit du code source de bonne qualité.
- C: HexRays , commercial, un plugin pour IDA Pro par la même société. Produit de grands résultats, mais coûte un gros dollar, et ne sera pas vendu à n'importe qui (ou si j'entends).
- .NET(C#): dotPeek , la libre, la décompilation .NET 1.0-4.5 assemblées en C#. Soutien pour. DLL. ,EXE. ,zip. ,vsix,.nupkg, et .fichiers winmd.
certains outils connexes qui pourraient s'avérer utiles dans ce que vous faites sont des éditeurs de ressources tels que ResourceHacker (gratuit) et un bon éditeur hexadécimal tel que Atelier hexadécimal (commercial).
en outre, si vous faites une analyse de logiciels malveillants (ou utiliser SICE) , je suggère sans hésiter d'exécuter tout à l'intérieur d'une machine virtuelle, à savoir VMware Workstation . Dans le cas de SICE, il protégera votre système actuel contre BSODs, et dans le cas de malware, il protégera votre système actuel contre le programme cible. Vous pouvez lire à propos de l'analyse de logiciels malveillants avec VMware ici .
personnellement, je roule avec Olly, WinDbg & W32Dasm, et quelques outils utilitaires plus petits.
aussi, se rappeler que le démontage ou même déboguer logiciel d'autres personnes est généralement contre le CLUF dans le plus petit :)
psoul l'excellent post de réponses à votre question, donc je ne vais pas reproduire son bon travail, mais j'ai l'impression qu'il faudrait aider à expliquer pourquoi c'est à la fois parfaitement valide, mais aussi terriblement stupide question. Après tout, ce est un endroit pour apprendre, non?
les programmes informatiques modernes sont produits au moyen d'une série de conversions, commençant par l'entrée d'un corps d'instructions textuelles lisibles par l'utilisateur (appelé "code source") et se terminant par un corps d'instructions lisibles par l'ordinateur . (appelé alternativement "binaire" ou "code machine").
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 prendre (par exemple, lire à partir de la mémoire, ajouter deux valeurs) est représentée par un code numérique. Si je vous ai dit que le numéro 1 signifiait crier et le numéro 2 signifiait rire, et puis tenu les cartes avec soit 1 ou 2 sur eux s'attendant à ce que vous crier ou rire en conséquence, je serais en utilisant ce qui est essentiellement le même système d'un ordinateur pour fonctionner.
un fichier binaire est juste un ensemble de ces codes (généralement appelé" codes op") et les informations ("arguments") que les codes op agissent sur.
maintenant, assembly language est un langage informatique où chaque mot de commande dans la langue représente exactement un code op sur le processeur. Il y a une traduction directe 1:1 entre une commande de langage d'assemblage 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.
démontage est simple: un programme lit à travers le binaire (le code machine), en remplaçant les codes op par leurs commandes de langage d'assemblage équivalentes, et affiche le résultat sous forme de fichier texte. Il est important de comprendre cela; si votre ordinateur peut lire le binaire, alors vous pouvez lire le binaire aussi, soit manuellement avec une table op-code dans votre main (ick) ou à travers un démonteur.
Les désassembleurs ont quelques 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 toute CLUF qui l'interdit finit par souffler de l'air chaud. Vous ne pouvez pas à la fois permettre à l'ordinateur de lire les données du programme et 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 travaillent aussi bien que DRM sur les fichiers de chansons.)
cependant, il sont des mises en garde à l'approche de démontage. Les noms de variables sont inexistants; une telle chose n'existe pas pour votre CPU. Les appels de bibliothèque sont déroutants comme l'enfer et exigent souvent le démontage d'autres 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 un mal de tête. Pour un amateur, c'est juste ne va pas arriver.
de toute façon, c'est un peu glosé sur explication, mais j'espère que cela aide. Tout le monde peut se sentir libre de corriger toute inexactitude de ma part; cela fait longtemps. ;)
N'importe quel débogueur décent peut faire cela. Essayez OllyDbg . (edit: qui a une grande désassembleur que même décode les paramètres de WinAPI appels!)
bonne nouvelle. IDA Pro est maintenant disponible gratuitement pour ses anciennes versions: http://www.hex-rays.com/idapro/idadownfreeware.htm
x64dbg
est un bon débogueur open source qui est activement maintenu.
bien sûr, jetez un oeil à IDA Pro . Ils offrent une version eval afin que vous puissiez l'essayer.
si vous êtes juste en train d'essayer 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 va signaler chaque fois qu'il essaie d'accéder au système de fichiers, le registre, les ports, etc..
aussi, l'utilisation d'une machine virtuelle comme le libre VMware server est très utile pour ce genre de travail. Vous pouvez faire une image "propre", et puis revenir à chaque fois que vous courez malware.
Ce que vous voulez est un type de logiciel appelé "Désassembleur".
Rapide sur google rendements ceci: http://www.geocities.com/~sangcho/disasm.html
vous pouvez obtenir quelques informations en le regardant en assemblée, mais je pense que la chose la plus facile à faire est de démarrer une machine virtuelle et de voir ce qu'elle fait. Assurez-vous que vous n'avez pas d'actions ouvertes ou quelque chose comme ça qu'il peut sauter à travers cependant;)
si vous voulez exécuter le programme pour voir ce qu'il fait sans infecter votre ordinateur, utilisez avec une machine virtuelle comme VMWare ou Microsoft VPC, ou un programme qui peut sandbox le programme comme SandboxIE
si vous n'avez pas le temps, soumettez le malware à cwsandbox:
http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox /
HTH
Je n'arrive pas à croire que personne n'ait encore rien dit à propos de " Immunity Debugger .
Immunity Debugger est un outil puissant pour écrire des exploits, analyser des logiciels malveillants et des fichiers binaires d'ingénierie inverse. Il a été initialement basé sur le code source ollydbg 1.0, mais avec noms resoution bug corrigé. Il a une API Python bien supporté pour une extensibilité facile, de sorte que vous pouvez écrire vos scripts python pour vous aider sur l'analyse.
aussi, il y a un bon Peter De L'équipe de Corelan qui a écrit mona.py , excelent tool btw.
vous pouvez utiliser dotPeek, très bon pour le fichier decompile exe. Il est libre.