Question:
Existe-t-il un moyen de décompiler un assembly ou un programme .NET?
APerson
2013-03-20 21:18:40 UTC
view on stackexchange narkive permalink

Existe-t-il des outils disponibles pour prendre un fichier .dll ou .exe déjà compilé dont vous savez qu'il a été compilé à partir de C # ou Visual Basic et en obtenir le code source d'origine?

ILSpy est probablement le meilleur choix (IMHO)
Parce que décompiler .net est très facile, la plupart du code .net est protégé ou masqué. Donc, pour utiliser l'un des outils suggérés dans la réponse, vous devez d'abord supprimer cette protection (si elle est présente).
Sept réponses:
#1
+49
Mick
2013-03-20 21:24:06 UTC
view on stackexchange narkive permalink

ILSpy est un excellent décompilateur open-source.

Fonctionnalités ILSpy

  • Navigation dans l'assemblage
  • Désassemblage IL
  • Prise en charge de C # 5.0 "async"
  • Décompilation vers C #
  • Prend en charge les lambdas et 'yield return'
  • Affiche la documentation XML
  • Décompilation en VB
  • Sauvegarde des ressources
  • Enregistrer l'assembly décompilé sous .csproj
  • Rechercher des types / méthodes / propriétés (sous-chaîne)
  • Navigation de type / méthode / propriété basée sur un lien hypertexte
  • Navigation entre types de base / dérivés
  • Historique de navigation
  • Décompilateur BAML vers XAML
  • Enregistrer l'assemblage en tant que projet C #
  • Rechercher l'utilisation du champ / de la méthode
  • Extensible via des plugins (MEF)
  • Listes d'assemblage
Combinez-le avec ce module complémentaire utile pour Visual Studio [SourceFly] (http://public.carr-designs.com/releases/SourceFlySetup.msi) afin que vous puissiez ouvrir ILSpy à partir de Visual Studio. Bien qu'il ne prenne pas en charge Visual Studio 2012 dans sa dernière version.
#2
+23
Glides
2013-03-21 03:38:55 UTC
view on stackexchange narkive permalink

J'ai déjà utilisé JetBrains dotPeek (gratuitement) avec un certain succès.

Tous les logiciels JetBrains que j'ai jamais utilisés ont été très solides.

Ce n'est pas tout à fait la «source originale» mais c'est très lisible en C # - à propos de la chose la plus proche que j'attendrais. Citation de leur site Web:

Qu'est-ce qui est cool avec dotPeek?

  1. Décompilation d'assemblys .NET 1.0-4.5 en C #
  2. Prise en charge de. dll , .exe , .zip , .vsix , .nupkg et .winmd fichiers
  3. Saut rapide vers un type, un assemblage, un symbole ou un membre de type
  4. Navigation sans effort vers les déclarations de symboles, les implémentations, les symboles dérivés et de base plus
  5. Recherche précise de l'utilisation des symboles avec présentation avancée des résultats de recherche
  6. Présentation des chaînes d'héritage
  7. Prise en charge du téléchargement de code à partir des serveurs sources
  8. Mise en évidence de la syntaxe
  9. Prise en charge complète du clavier
  10. dotPeek est gratuit!

Le dernier point est gratuit comme dans la bière gratuite, pas comme dans la liberté d'expression.

#3
+11
APerson
2013-03-20 21:18:40 UTC
view on stackexchange narkive permalink

Il existe un outil gratuit appelé JustDecompile qui fait cela.

Certaines fonctionnalités:

  • Création d'un projet Visual Studio à partir d'un assemblage afin d'exporter des projets perdus ou d'obtenir plusieurs classes sans avoir besoin de copier et coller du code. À l'heure actuelle, JustDecompile est capable d'exporter du code décompilé uniquement vers C #.
  • Exportation de code directement à partir de l'invite de commande
  • Chargement rapide des assemblys .NET principaux (.NET 2, .NET3.5 , .NET 4, .NET 4.5, WinRT Metadata et Silverlight)
  • Édition directe des assemblys chargés dans le programme
JustDecompile a un plugin De4Dot Deobfuscator qui aidera avec l'exe obscurci
#4
+11
Kalibr
2015-12-04 05:36:35 UTC
view on stackexchange narkive permalink

Récemment, j'ai utilisé dnSpy [dérivé de ILSpy par le (s) créateur (s) de de4dot] comme outil principal pour la décompilation et le débogage en direct du code .NET

https://github.com/0xd4d/dnSpy


Différence principale avec ILSpy:

  • Utilise dnLib pour lire les assemblys ( vs Mono.Cecil ILSpy)

https://github.com/0xd4d/dnlib

dnlib a été créé car de4dot avait besoin d'une bibliothèque d'assemblys .NET robuste capable de gérer tous les types d'assemblys masqués. de4dot utilisait autrefois Mono.Cecil mais comme Mono.Cecil ne peut pas gérer les assemblys obscurcis, ne prend pas entièrement en charge les assemblys en mode mixte, ne lit pas les assemblys .NET de la même manière que le CLR et de nombreuses autres fonctionnalités manquantes nécessaires, dnlib était une nécessité. L'API est similaire car elle a rendu beaucoup plus facile le portage de de4dot vers dnlib.

En quoi est-il différent / meilleur que ILSpy?
C'est ma première réponse, est-ce que le lien vers une discussion externe est approprié? : https://www.reddit.com/r/ReverseEngineering/comments/3jau4m/dnspy_a_net_assembly_editor_decompiler_and/ ... Je vais également résumer ci-dessus.
Je peux garantir dnSpy, il pense que c'est meilleur que tout autre outil .NET similaire. Il peut même déboguer le processus.
Je peux vraiment recommander celui-ci. C'est le seul outil gratuit que j'ai trouvé qui prend en charge le débogage de l'assemblage.
Utilisez-le avec [cette extension Visual Studio] (https://marketplace.visualstudio.com/search?term=dnspy&target=VS).
#5
+9
QAZ
2013-03-20 21:25:27 UTC
view on stackexchange narkive permalink

J'ai utilisé .NET Reflector (Note: Commercial, mais version d'essai disponible) plusieurs fois et je l'aime assez:

http://www.red-gate.com/products/dotnet -développement / réflecteur /

Quelques exemples de cas d'utilisation seraient un bon complément à cette réponse. Actuellement, il est trop vague pour être d'une grande utilité en plus d'offrir un outil et son site Web. Donner des exemples d'utilisation réels permet de définir un peu mieux le produit.
#6
+3
TomSmartBishop
2015-12-03 14:11:38 UTC
view on stackexchange narkive permalink

Si vous êtes intéressé par un décompilateur au niveau de l'API: https://code.google.com/p/facile-api/ (en Java cependant)

Ouais! Je cherchais une bibliothèque java! Merci :)
Faites-moi savoir ce que vous faites ;-) Cheers
Je m'attends à ajouter la fonctionnalité «.NET support» à cette application de désassembleur (https://github.com/KYHSGeekCode/Android-Disassembler). :)
Bien, laissez-moi savoir comment cela fonctionne.
#7
+1
tyh
2015-03-23 03:27:01 UTC
view on stackexchange narkive permalink

Je soutiendrais la réponse à propos d'ILSPY comme étant un très bon décompilateur.net. Vérifiez également de4dot pour la désobfuscation. Ceci est un bon résumé de celui-ci en action. http://blogs.cisco.com/security/talos/reversing-multilayer-net-malware

Le visual basic compilé peut être un animal différent et douloureux. http://vrt-blog.snort.org/2014/08/discovering-dynamically-loaded-api-in.html?m=1

Comment Visual Basic (6) compilé est-il lié à .NET?
La question d'origine a également été posée sur Visual Basic.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...