From 14bfdecb8acf8f9d10745f8f430ce50829e58bfe Mon Sep 17 00:00:00 2001 From: LordJZ Date: Sun, 1 Mar 2015 21:31:53 +0300 Subject: [PATCH] Display a reference to a module's global type. Global types are used as assembly initializers; they contain global methods (e.g. in VB), and may be used by obfuscators. They can also be renamed so they are hard to find. --- ILSpy/Languages/CSharpLanguage.cs | 5 +++++ ILSpy/VB/VBLanguage.cs | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/ILSpy/Languages/CSharpLanguage.cs b/ILSpy/Languages/CSharpLanguage.cs index 369cf2e84..031fa4247 100644 --- a/ILSpy/Languages/CSharpLanguage.cs +++ b/ILSpy/Languages/CSharpLanguage.cs @@ -291,6 +291,11 @@ namespace ICSharpCode.ILSpy base.DecompileAssembly(assembly, output, options); output.WriteLine(); ModuleDefinition mainModule = assembly.ModuleDefinition; + if (mainModule.Types.Count > 0) { + output.Write("// Global type: "); + output.WriteReference(mainModule.Types[0].FullName, mainModule.Types[0]); + output.WriteLine(); + } if (mainModule.EntryPoint != null) { output.Write("// Entry point: "); output.WriteReference(mainModule.EntryPoint.DeclaringType.FullName + "." + mainModule.EntryPoint.Name, mainModule.EntryPoint); diff --git a/ILSpy/VB/VBLanguage.cs b/ILSpy/VB/VBLanguage.cs index 4c200b2db..ad7d19b9e 100644 --- a/ILSpy/VB/VBLanguage.cs +++ b/ILSpy/VB/VBLanguage.cs @@ -80,6 +80,11 @@ namespace ICSharpCode.ILSpy.VB base.DecompileAssembly(assembly, output, options); output.WriteLine(); ModuleDefinition mainModule = assembly.ModuleDefinition; + if (mainModule.Types.Count > 0) { + output.Write("// Global type: "); + output.WriteReference(mainModule.Types[0].FullName, mainModule.Types[0]); + output.WriteLine(); + } if (mainModule.EntryPoint != null) { output.Write("' Entry point: "); output.WriteReference(mainModule.EntryPoint.DeclaringType.FullName + "." + mainModule.EntryPoint.Name, mainModule.EntryPoint);