39 internal void Read(BinaryReader br,
bool mapped)
42 msdos.signature = br.ReadUInt16();
43 br.BaseStream.Seek(58, SeekOrigin.Current);
44 msdos.peSignatureOffset = br.ReadUInt32();
47 throw new BadImageFormatException();
49 br.BaseStream.Seek(msdos.peSignatureOffset, SeekOrigin.Begin);
52 for (
int i = 0; i < sections.Length; i++)
69 internal DWORD GetComDescriptorVirtualAddress()
74 internal void GetDataDirectoryEntry(
int index, out
int rva, out
int length)
80 internal long RvaToFileOffset(
DWORD rva)
85 for (
int i = 0; i < sections.Length; i++)
86 if (rva >= sections[i].VirtualAddress && rva < sections[i].VirtualAddress + sections[i].VirtualSize)
89 throw new BadImageFormatException();
92 internal bool GetSectionInfo(
int rva, out
string name, out
int characteristics, out
int virtualAddress, out
int virtualSize, out
int pointerToRawData, out
int sizeOfRawData)
94 for (
int i = 0; i < sections.Length; i++)
96 if (rva >= sections[i].VirtualAddress && rva < sections[i].VirtualAddress + sections[i].VirtualSize)
98 name = sections[i].
Name;
99 characteristics = (int)sections[i].Characteristics;
100 virtualAddress = (int)sections[i].VirtualAddress;
101 virtualSize = (int)sections[i].VirtualSize;
102 pointerToRawData = (int)sections[i].PointerToRawData;
103 sizeOfRawData = (int)sections[i].SizeOfRawData;
112 pointerToRawData = 0;