private static NT_HEADER_INFO_BITNESS_INDEPENDENT FetchNtHeaderInfoX64(ulong address, IStructureReader structureReader) { var optionalHeaderOffset = Marshal.OffsetOf <IMAGE_NT_HEADERS64>(nameof(IMAGE_NT_HEADERS64.OptionalHeader)).ToInt32(); var header = structureReader.ReadStructure <IMAGE_NT_HEADERS64>(address); return(new NT_HEADER_INFO_BITNESS_INDEPENDENT( optionalHeaderOffset, header.FileHeader.SizeOfOptionalHeader, header.FileHeader.NumberOfSections, (int)header.OptionalHeader.SizeOfHeaders)); }
public static NT_HEADER_INFO_BITNESS_INDEPENDENT FetchNtHeaderInfo(ulong address, IStructureReader structureReader) { if (Environment.Is64BitProcess) { return(FetchNtHeaderInfoX64(address, structureReader)); } return(FetchNtHeaderInfoX86(address, structureReader)); }