.Net Assembly Analyzer

.Net Assembly Analyzer is a tool that uses reflection to analyze .Net (i.e. MSIL) code.

Download
You can download the current version from here (remove the .ppt to unzip)

Info
The current version takes an assembly and creates an XML file containg the following information

namespace Owasp.AssemblyAnalyzer {   [Serializable] public class AssemblyRawData {               public List aAssemblies = new List; }   [Serializable] public class aAssembly {       [XmlAttribute] public string Name = ""; public List strAttributes = new List; public List mModules = new List; }   [Serializable] public class mModule {       [XmlAttribute] public string Name; public string FullyQualifiedName; public List tTypes = new List; }   [Serializable] public class tType {       [XmlAttribute] public string FullName; [XmlAttribute] public string Name; [XmlAttribute] public string Namespace; [XmlAttribute] public bool bIsAbstract; [XmlAttribute] public bool bIsAnsiClass; [XmlAttribute] public bool bIsArray; [XmlAttribute] public bool bIsAutoClass; [XmlAttribute] public bool bIsAutoLayout; [XmlAttribute] public bool bIsByRef; [XmlAttribute] public bool bIsClass; [XmlAttribute] public bool bIsCOMObject; [XmlAttribute] public bool bIsContextful; [XmlAttribute] public bool bIsEnum; [XmlAttribute] public bool bIsExplicitLayout; [XmlAttribute] public bool bIsGenericParameter; [XmlAttribute] public bool bIsGenericType; [XmlAttribute] public bool bIsGenericTypeDefinition; [XmlAttribute] public bool bIsImport; [XmlAttribute] public bool bIsInterface; [XmlAttribute] public bool bIsLayoutSequential; [XmlAttribute] public bool bIsMarshalByRef; [XmlAttribute] public bool bIsNested; [XmlAttribute] public bool bIsNestedAssembly; [XmlAttribute] public bool bIsNestedFamily; [XmlAttribute] public bool bIsNestedPrivate; [XmlAttribute] public bool bIsNestedPublic; [XmlAttribute] public bool bIsNotPublic; [XmlAttribute] public bool bIsPointer; [XmlAttribute] public bool bIsPrimitive; [XmlAttribute] public bool bIsPublic; [XmlAttribute] public bool bIsSealed; [XmlAttribute] public bool bIsSerializable; [XmlAttribute] public bool bIsSpecialName; [XmlAttribute] public bool bIsUnicodeClass; [XmlAttribute] public bool bIsValueType; [XmlAttribute] public bool bIsVisible; public string strTypeAttributes; public List strAttributes = new List; public List mMethods = new List; public List fFields = new List; public List pProperties = new List; }   [Serializable] public class mMethod {       [XmlAttribute] public string Name; [XmlAttribute] public bool bIsAbstract; [XmlAttribute] public bool bIsAssembly; [XmlAttribute] public bool bIsConstructor; [XmlAttribute] public bool bIsFamily; [XmlAttribute] public bool bIsFinal; [XmlAttribute] public bool bIsGenericMethod; [XmlAttribute] public bool bIsGenericMethodDefinition; [XmlAttribute] public bool bIsHideBySig; [XmlAttribute] public bool bIsPrivate; [XmlAttribute] public bool bIsPublic; [XmlAttribute] public bool bIsSpecialName; [XmlAttribute] public bool bIsStatic; [XmlAttribute] public bool bIsVirtual; public List strCalls = new List ; public List strUsedBy = new List ; }   [Serializable] public class fField {       [XmlAttribute] public string Name; }   [Serializable] public class pProperty {       [XmlAttribute] public string Name; } }