/// <summary> /// Internal use only /// </summary> /// <param name="file"></param> /// <param name="item"></param> /// <param name="parrent"></param> public DotNetMethod(PEParaser file, MethodTabelRow item, DotNetType parrent, uint nextMethod) { this.file = file; this.method = item; this.Parrent = parrent; this.flags = (MethodAttr)item.Flags; this.nextMethod = nextMethod; this.Signature = file.ClrStringsStream.GetByOffset(item.Signature); this.Name = file.ClrStringsStream.GetByOffset(item.Name); }
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++; } }