This site is the archived OWASP Foundation Wiki and is no longer accepting Account Requests.
To view the new OWASP Foundation website, please visit https://owasp.org
Difference between revisions of ".Net Assembly Analyzer"
From OWASP
Dinis.cruz (talk | contribs) |
Dinis.cruz (talk | contribs) |
||
| Line 106: | Line 106: | ||
[XmlAttribute()] public string Name; | [XmlAttribute()] public string Name; | ||
} | } | ||
| − | } | + | } |
| + | |||
| + | |||
| + | == Output Sample== | ||
| + | |||
| + | The output is a serialized version of the populated AssemblyRawData object | ||
| + | |||
| + | <?xml version="1.0"?> | ||
| + | <AssemblyRawData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> | ||
| + | <aAssemblies> | ||
| + | <aAssembly Name="AssemblyAnalyzer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"> | ||
| + | <strAttributes> | ||
| + | <string>System.Reflection.AssemblyConfigurationAttribute</string> | ||
| + | <string>System.Reflection.AssemblyTitleAttribute</string> | ||
| + | <string>System.Reflection.AssemblyCompanyAttribute</string> | ||
| + | <string>System.Reflection.AssemblyFileVersionAttribute</string> | ||
| + | <string>System.Reflection.AssemblyProductAttribute</string> | ||
| + | <string>System.Diagnostics.DebuggableAttribute</string> | ||
| + | <string>System.Runtime.CompilerServices.CompilationRelaxationsAttribute</string> | ||
| + | <string>System.Runtime.CompilerServices.RuntimeCompatibilityAttribute</string> | ||
| + | <string>System.Reflection.AssemblyDescriptionAttribute</string> | ||
| + | <string>System.Runtime.InteropServices.GuidAttribute</string> | ||
| + | <string>System.Runtime.InteropServices.ComVisibleAttribute</string> | ||
| + | <string>System.Reflection.AssemblyTrademarkAttribute</string> | ||
| + | <string>System.Reflection.AssemblyCopyrightAttribute</string> | ||
| + | </strAttributes> | ||
| + | <mModules> | ||
| + | <mModule Name="AssemblyAnalyzer.exe"> | ||
| + | <FullyQualifiedName>F:\_Research\_MS session in Seattle\AssemblyAnalyzer\bin\AssemblyAnalyzer.exe</FullyQualifiedName> | ||
| + | <tTypes> | ||
| + | <tType FullName="Owasp.AssemblyAnalyzer.Properties.Resources" Name="Resources" Namespace="Owasp.AssemblyAnalyzer.Properties" bIsAbstract="false" bIsAnsiClass="true" bIsArray="false" bIsAutoClass="false" bIsAutoLayout="true" bIsByRef="false" bIsClass="true" bIsCOMObject="false" bIsContextful="false" bIsEnum="false" bIsExplicitLayout="false" bIsGenericParameter="false" bIsGenericType="false" bIsGenericTypeDefinition="false" bIsImport="false" bIsInterface="false" bIsLayoutSequential="false" bIsMarshalByRef="false" bIsNested="false" bIsNestedAssembly="false" bIsNestedFamily="false" bIsNestedPrivate="false" bIsNestedPublic="false" bIsNotPublic="true" bIsPointer="false" bIsPrimitive="false" bIsPublic="false" bIsSealed="false" bIsSerializable="false" bIsSpecialName="false" bIsUnicodeClass="false" bIsValueType="false" bIsVisible="false"> | ||
| + | <strTypeAttributes>AutoLayout, AnsiClass, Class, BeforeFieldInit</strTypeAttributes> | ||
| + | <strAttributes> | ||
| + | <string>System.Diagnostics.DebuggerNonUserCodeAttribute</string> | ||
| + | <string>System.Runtime.CompilerServices.CompilerGeneratedAttribute</string> | ||
| + | <string>System.CodeDom.Compiler.GeneratedCodeAttribute</string> | ||
| + | </strAttributes> | ||
| + | <mMethods> | ||
| + | <mMethod Name="GetType" bIsAbstract="false" bIsAssembly="false" bIsConstructor="false" bIsFamily="false" bIsFinal="false" bIsGenericMethod="false" bIsGenericMethodDefinition="false" bIsHideBySig="true" bIsPrivate="false" bIsPublic="true" bIsSpecialName="false" bIsStatic="false" bIsVirtual="false"> | ||
| + | <strCalls /> | ||
| + | <strUsedBy /> | ||
| + | </mMethod> | ||
| + | <mMethod Name="ToString" bIsAbstract="false" bIsAssembly="false" bIsConstructor="false" bIsFamily="false" bIsFinal="false" bIsGenericMethod="false" bIsGenericMethodDefinition="false" bIsHideBySig="true" bIsPrivate="false" bIsPublic="true" bIsSpecialName="false" bIsStatic="false" bIsVirtual="true"> | ||
| + | <strCalls /> | ||
| + | <strUsedBy /> | ||
| + | </mMethod> | ||
| + | <mMethod Name="Equals" bIsAbstract="false" bIsAssembly="false" bIsConstructor="false" bIsFamily="false" bIsFinal="false" bIsGenericMethod="false" bIsGenericMethodDefinition="false" bIsHideBySig="true" bIsPrivate="false" bIsPublic="true" bIsSpecialName="false" bIsStatic="false" bIsVirtual="true"> | ||
| + | <strCalls /> | ||
| + | <strUsedBy /> | ||
| + | </mMethod> | ||
| + | <mMethod Name="GetHashCode" bIsAbstract="false" bIsAssembly="false" bIsConstructor="false" bIsFamily="false" bIsFinal="false" bIsGenericMethod="false" bIsGenericMethodDefinition="false" bIsHideBySig="true" bIsPrivate="false" bIsPublic="true" bIsSpecialName="false" bIsStatic="false" bIsVirtual="true"> | ||
| + | <strCalls /> | ||
| + | <strUsedBy /> | ||
| + | </mMethod> | ||
| + | </mMethods> | ||
| + | <fFields /> | ||
| + | <pProperties /> | ||
| + | </tType> | ||
| + | <tType FullName="Owasp.AssemblyAnalyzer.utils.serialization" Name="serialization" Namespace="Owasp.AssemblyAnalyzer.utils" bIsAbstract="false" bIsAnsiClass="true" bIsArray="false" bIsAutoClass="false" bIsAutoLayout="true" bIsByRef="false" bIsClass="true" bIsCOMObject="false" bIsContextful="false" bIsEnum="false" bIsExplicitLayout="false" bIsGenericParameter="false" bIsGenericType="false" bIsGenericTypeDefinition="false" bIsImport="false" bIsInterface="false" bIsLayoutSequential="false" bIsMarshalByRef="false" bIsNested="false" bIsNestedAssembly="false" bIsNestedFamily="false" bIsNestedPrivate="false" bIsNestedPublic="false" bIsNotPublic="true" bIsPointer="false" bIsPrimitive="false" bIsPublic="false" bIsSealed="false" bIsSerializable="false" bIsSpecialName="false" bIsUnicodeClass="false" bIsValueType="false" bIsVisible="false"> | ||
| + | <strTypeAttributes>AutoLayout, AnsiClass, Class, BeforeFieldInit</strTypeAttributes> | ||
| + | <strAttributes /> | ||
| + | <mMethods> | ||
| + | <mMethod Name="returnStringOfSerializedObject" bIsAbstract="false" bIsAssembly="false" bIsConstructor="false" bIsFamily="false" bIsFinal="false" bIsGenericMethod="false" bIsGenericMethodDefinition="false" bIsHideBySig="true" bIsPrivate="false" bIsPublic="true" bIsSpecialName="false" bIsStatic="true" bIsVirtual="false"> | ||
| + | <strCalls> | ||
| + | <string>System.Object.GetType</string> | ||
| + | <string>System.Xml.Serialization.XmlSerializer..ctor</string> | ||
| + | <string>System.Object.GetType</string> | ||
| + | <string>System.Xml.Serialization.XmlSerializer..ctor</string> | ||
| + | <string>System.IO.MemoryStream..ctor</string> | ||
| + | <string>System.Xml.Serialization.XmlSerializer.Serialize</string> | ||
| + | <string>System.IO.Stream.Flush</string> | ||
| + | <string>System.IO.Stream.set_Position</string> | ||
| + | <string>System.IO.Stream.get_Length</string> | ||
| + | <string>System.IO.Stream.get_Length</string> | ||
| + | <string>System.IO.Stream.Read</string> | ||
| + | <string>System.Text.Encoding.get_UTF8</string> | ||
| + | <string>System.Text.Encoding.GetString</string> | ||
| + | </strCalls> | ||
| + | <strUsedBy /> | ||
| + | </mMethod> | ||
| + | <mMethod Name="returnDeSerializedObjectOfSerializedString" bIsAbstract="false" bIsAssembly="false" bIsConstructor="false" bIsFamily="false" bIsFinal="false" bIsGenericMethod="false" bIsGenericMethodDefinition="false" bIsHideBySig="true" bIsPrivate="false" bIsPublic="true" bIsSpecialName="false" bIsStatic="true" bIsVirtual="false"> | ||
| + | <strCalls> | ||
| + | <string>System.Xml.Serialization.XmlSerializer..ctor</string> | ||
| + | <string>System.Text.Encoding.get_UTF8</string> | ||
| + | <string>System.Text.Encoding.GetBytes</string> | ||
| + | <string>System.IO.MemoryStream..ctor</string> | ||
| + | <string>System.Xml.Serialization.XmlSerializer.Deserialize</string> | ||
| + | </strCalls> | ||
| + | <strUsedBy /> | ||
| + | </mMethod> | ||
Revision as of 06:35, 28 July 2006
.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 File:AssemblyAnalyzer v0.2.zip.ppt AssemblyAnalyzer v0.2.zip.ppt (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<aAssembly> aAssemblies = new List<aAssembly>();
}
[Serializable]
public class aAssembly
{
[XmlAttribute()] public string Name = "";
public List<String> strAttributes = new List<String>();
public List<mModule> mModules = new List<mModule>();
}
[Serializable]
public class mModule
{
[XmlAttribute()] public string Name;
public string FullyQualifiedName;
public List<tType> tTypes = new List<tType>();
}
[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<String> strAttributes = new List<String>();
public List<mMethod> mMethods = new List<mMethod>();
public List<fField> fFields = new List<fField>();
public List<pProperty> pProperties = new List<pProperty>();
}
[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<string> strCalls = new List<string>();
public List<string> strUsedBy = new List<string>();
}
[Serializable]
public class fField
{
[XmlAttribute()] public string Name;
}
[Serializable]
public class pProperty
{
[XmlAttribute()] public string Name;
}
}
Output Sample
The output is a serialized version of the populated AssemblyRawData object
<?xml version="1.0"?> <AssemblyRawData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <aAssemblies> <aAssembly Name="AssemblyAnalyzer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"> <strAttributes> <string>System.Reflection.AssemblyConfigurationAttribute</string> <string>System.Reflection.AssemblyTitleAttribute</string> <string>System.Reflection.AssemblyCompanyAttribute</string> <string>System.Reflection.AssemblyFileVersionAttribute</string> <string>System.Reflection.AssemblyProductAttribute</string> <string>System.Diagnostics.DebuggableAttribute</string> <string>System.Runtime.CompilerServices.CompilationRelaxationsAttribute</string> <string>System.Runtime.CompilerServices.RuntimeCompatibilityAttribute</string> <string>System.Reflection.AssemblyDescriptionAttribute</string> <string>System.Runtime.InteropServices.GuidAttribute</string> <string>System.Runtime.InteropServices.ComVisibleAttribute</string> <string>System.Reflection.AssemblyTrademarkAttribute</string> <string>System.Reflection.AssemblyCopyrightAttribute</string> </strAttributes> <mModules> <mModule Name="AssemblyAnalyzer.exe"> <FullyQualifiedName>F:\_Research\_MS session in Seattle\AssemblyAnalyzer\bin\AssemblyAnalyzer.exe</FullyQualifiedName> <tTypes> <tType FullName="Owasp.AssemblyAnalyzer.Properties.Resources" Name="Resources" Namespace="Owasp.AssemblyAnalyzer.Properties" bIsAbstract="false" bIsAnsiClass="true" bIsArray="false" bIsAutoClass="false" bIsAutoLayout="true" bIsByRef="false" bIsClass="true" bIsCOMObject="false" bIsContextful="false" bIsEnum="false" bIsExplicitLayout="false" bIsGenericParameter="false" bIsGenericType="false" bIsGenericTypeDefinition="false" bIsImport="false" bIsInterface="false" bIsLayoutSequential="false" bIsMarshalByRef="false" bIsNested="false" bIsNestedAssembly="false" bIsNestedFamily="false" bIsNestedPrivate="false" bIsNestedPublic="false" bIsNotPublic="true" bIsPointer="false" bIsPrimitive="false" bIsPublic="false" bIsSealed="false" bIsSerializable="false" bIsSpecialName="false" bIsUnicodeClass="false" bIsValueType="false" bIsVisible="false"> <strTypeAttributes>AutoLayout, AnsiClass, Class, BeforeFieldInit</strTypeAttributes> <strAttributes> <string>System.Diagnostics.DebuggerNonUserCodeAttribute</string> <string>System.Runtime.CompilerServices.CompilerGeneratedAttribute</string> <string>System.CodeDom.Compiler.GeneratedCodeAttribute</string> </strAttributes> <mMethods> <mMethod Name="GetType" bIsAbstract="false" bIsAssembly="false" bIsConstructor="false" bIsFamily="false" bIsFinal="false" bIsGenericMethod="false" bIsGenericMethodDefinition="false" bIsHideBySig="true" bIsPrivate="false" bIsPublic="true" bIsSpecialName="false" bIsStatic="false" bIsVirtual="false"> <strCalls /> <strUsedBy /> </mMethod> <mMethod Name="ToString" bIsAbstract="false" bIsAssembly="false" bIsConstructor="false" bIsFamily="false" bIsFinal="false" bIsGenericMethod="false" bIsGenericMethodDefinition="false" bIsHideBySig="true" bIsPrivate="false" bIsPublic="true" bIsSpecialName="false" bIsStatic="false" bIsVirtual="true"> <strCalls /> <strUsedBy /> </mMethod> <mMethod Name="Equals" bIsAbstract="false" bIsAssembly="false" bIsConstructor="false" bIsFamily="false" bIsFinal="false" bIsGenericMethod="false" bIsGenericMethodDefinition="false" bIsHideBySig="true" bIsPrivate="false" bIsPublic="true" bIsSpecialName="false" bIsStatic="false" bIsVirtual="true"> <strCalls /> <strUsedBy /> </mMethod> <mMethod Name="GetHashCode" bIsAbstract="false" bIsAssembly="false" bIsConstructor="false" bIsFamily="false" bIsFinal="false" bIsGenericMethod="false" bIsGenericMethodDefinition="false" bIsHideBySig="true" bIsPrivate="false" bIsPublic="true" bIsSpecialName="false" bIsStatic="false" bIsVirtual="true"> <strCalls /> <strUsedBy /> </mMethod> </mMethods> <fFields /> <pProperties /> </tType> <tType FullName="Owasp.AssemblyAnalyzer.utils.serialization" Name="serialization" Namespace="Owasp.AssemblyAnalyzer.utils" bIsAbstract="false" bIsAnsiClass="true" bIsArray="false" bIsAutoClass="false" bIsAutoLayout="true" bIsByRef="false" bIsClass="true" bIsCOMObject="false" bIsContextful="false" bIsEnum="false" bIsExplicitLayout="false" bIsGenericParameter="false" bIsGenericType="false" bIsGenericTypeDefinition="false" bIsImport="false" bIsInterface="false" bIsLayoutSequential="false" bIsMarshalByRef="false" bIsNested="false" bIsNestedAssembly="false" bIsNestedFamily="false" bIsNestedPrivate="false" bIsNestedPublic="false" bIsNotPublic="true" bIsPointer="false" bIsPrimitive="false" bIsPublic="false" bIsSealed="false" bIsSerializable="false" bIsSpecialName="false" bIsUnicodeClass="false" bIsValueType="false" bIsVisible="false"> <strTypeAttributes>AutoLayout, AnsiClass, Class, BeforeFieldInit</strTypeAttributes> <strAttributes /> <mMethods> <mMethod Name="returnStringOfSerializedObject" bIsAbstract="false" bIsAssembly="false" bIsConstructor="false" bIsFamily="false" bIsFinal="false" bIsGenericMethod="false" bIsGenericMethodDefinition="false" bIsHideBySig="true" bIsPrivate="false" bIsPublic="true" bIsSpecialName="false" bIsStatic="true" bIsVirtual="false"> <strCalls> <string>System.Object.GetType</string> <string>System.Xml.Serialization.XmlSerializer..ctor</string> <string>System.Object.GetType</string> <string>System.Xml.Serialization.XmlSerializer..ctor</string> <string>System.IO.MemoryStream..ctor</string> <string>System.Xml.Serialization.XmlSerializer.Serialize</string> <string>System.IO.Stream.Flush</string> <string>System.IO.Stream.set_Position</string> <string>System.IO.Stream.get_Length</string> <string>System.IO.Stream.get_Length</string> <string>System.IO.Stream.Read</string> <string>System.Text.Encoding.get_UTF8</string> <string>System.Text.Encoding.GetString</string> </strCalls> <strUsedBy /> </mMethod> <mMethod Name="returnDeSerializedObjectOfSerializedString" bIsAbstract="false" bIsAssembly="false" bIsConstructor="false" bIsFamily="false" bIsFinal="false" bIsGenericMethod="false" bIsGenericMethodDefinition="false" bIsHideBySig="true" bIsPrivate="false" bIsPublic="true" bIsSpecialName="false" bIsStatic="true" bIsVirtual="false"> <strCalls> <string>System.Xml.Serialization.XmlSerializer..ctor</string> <string>System.Text.Encoding.get_UTF8</string> <string>System.Text.Encoding.GetBytes</string> <string>System.IO.MemoryStream..ctor</string> <string>System.Xml.Serialization.XmlSerializer.Deserialize</string> </strCalls> <strUsedBy /> </mMethod>