/// <summary> /// Should be used internaly /// </summary> /// <param name="file"></param> /// <param name="item"></param> /// <param name="NextTypeIndex"></param> public DotNetType(PEParaser file, TypeDefTabelRow item, int NextTypeIndex) { this.file = file; this.type = item; this.NextTypeIndex = NextTypeIndex; this.flags = (TypeFlags)item.Flags; Name = file.ClrStringsStream.GetByOffset(item.Name); NameSpace = file.ClrStringsStream.GetByOffset(item.Namespace); }
public Tabels(PEParaser p) { //Init this.p = p; this.r = p.MetadataReader; var x = r.BaseStream.Position; //Read all of the tabels ModuleTabel = new List <ModuleTabelRow>(); TypeRefTabel = new List <TypeRefTabelRow>(); TypeDefTabel = new List <TypeDefTabelRow>(); FieldTabel = new List <FieldTabelRow>(); MethodTabel = new List <MethodTabelRow>(); ParmTabel = new List <ParamTabelRow>(); InterfaceImplTable = new List <InterfaceImplTabelRow>(); MemberRefTabelRow = new List <MemberRefTabelRow>(); int a = 0; //Read module Tabel (if any) if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.Module) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new ModuleTabelRow(); m.Read(r); ModuleTabel.Add(m); } a++; } //Read TypeRef Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.TypeRef) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new TypeRefTabelRow(); m.Read(r); TypeRefTabel.Add(m); } a++; } //Read TypeDef Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.TypeDef) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new TypeDefTabelRow(); m.Read(r); TypeDefTabel.Add(m); } a++; } //Read Field Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.Field) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new FieldTabelRow(); m.Read(r); FieldTabel.Add(m); } a++; } //Read Method tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.Method) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new MethodTabelRow(); m.Read(r); MethodTabel.Add(m); } a++; } //Read Parm Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.Param) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new ParamTabelRow(); m.Read(r); ParmTabel.Add(m); } a++; } //Read interfaceimpl Tabel (NOT TESTED) if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.InterfaceImpl) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new InterfaceImplTabelRow(); m.Read(r); InterfaceImplTable.Add(m); } a++; } //Read MemberRef tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.MemberRef) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new MemberRefTabelRow(); m.Read(r); MemberRefTabelRow.Add(m); } a++; } }