private static IList <uint> ReadFunctionAddresses(ImageReader reader, CoffDirectoryTableExportHeader directory) { var result = new List <uint>(); reader.ToRva(directory.AddressOfFunctions); for (int i = 0; i < directory.NumberOfNames; i++) { result.Add(reader.ReadUInt32()); } return(result); }
private static IList <ushort> ReadFunctionOrdinals(ImageReader reader, CoffDirectoryTableExportHeader directory) { var result = new List <ushort>(); reader.ToRva(directory.AddressOfNameOrdinals); for (int i = 0; i < directory.NumberOfNames; i++) { result.Add((ushort)(reader.ReadUInt16() + directory.Base)); } return(result); }
// Helpers private static IList <string> ReadFunctionNames(ImageReader reader, CoffDirectoryTableExportHeader directory) { var result = new List <string>(); for (int i = 0; i < directory.NumberOfNames; i++) { reader.ToRva((uint)(directory.AddressOfNames + sizeof(uint) * i)); reader.ToRva(reader.ReadUInt32()); result.Add(reader.ReadNullTerminatedString()); } return(result); }
internal static void Present(CoffDirectoryTableExportHeader header) { Shell.WriteHeader("COFF Directory Table Export"); Shell.WriteItem("Characteristics", header.Characteristics); Shell.WriteItem("TimeDateStamp", header.TimeDateStamp); Shell.WriteItem("MajorVersion", header.MajorVersion); Shell.WriteItem("MinorVersion", header.MinorVersion); Shell.WriteItem("Name", header.Name); Shell.WriteItem("Base", header.Base); Shell.WriteItem("NumberOfFunctions", header.NumberOfFunctions); Shell.WriteItem("NumberOfNames", header.NumberOfNames); Shell.WriteItem("AddressOfFunctions", header.AddressOfFunctions); Shell.WriteItem("AddressOfNames", header.AddressOfNames); Shell.WriteItem("AddressOfNameOrdinals", header.AddressOfNameOrdinals); Shell.WriteFooter(); }