--- trunk/Win32/Sojaner.MemoryScanner/PEReader.cs 2012/05/28 05:30:14 160 +++ trunk/Win32/Sojaner.MemoryScanner/PEReader.cs 2012/05/28 05:55:59 161 @@ -30,23 +30,22 @@ namespace Sojaner.MemoryScanner size = Marshal.SizeOf(typeof(IMAGE_DOS_HEADER)); data = br.ReadBytes(size); pinnedPacket = GCHandle.Alloc(data, GCHandleType.Pinned); - IMAGE_DOS_HEADER IMAGE_DOS_HEADER = (IMAGE_DOS_HEADER)Marshal.PtrToStructure(pinnedPacket.AddrOfPinnedObject(), typeof(IMAGE_DOS_HEADER)); + IMAGE_DOS_HEADER DOS_HEADER = (IMAGE_DOS_HEADER)Marshal.PtrToStructure(pinnedPacket.AddrOfPinnedObject(), typeof(IMAGE_DOS_HEADER)); pinnedPacket.Free(); #endregion // skip the old dos stub - br.BaseStream.Seek(IMAGE_DOS_HEADER.e_lfanew, SeekOrigin.Begin); + br.BaseStream.Seek(DOS_HEADER.e_lfanew, SeekOrigin.Begin); #region IMAGE_NT_HEADERS size = Marshal.SizeOf(typeof(IMAGE_NT_HEADERS)); data = br.ReadBytes(size); pinnedPacket = GCHandle.Alloc(data, GCHandleType.Pinned); - IMAGE_NT_HEADERS IMAGE_NT_HEADERS = (IMAGE_NT_HEADERS)Marshal.PtrToStructure(pinnedPacket.AddrOfPinnedObject(), typeof(IMAGE_NT_HEADERS)); + IMAGE_NT_HEADERS NT_HEADER = (IMAGE_NT_HEADERS)Marshal.PtrToStructure(pinnedPacket.AddrOfPinnedObject(), typeof(IMAGE_NT_HEADERS)); pinnedPacket.Free(); #endregion - br.Close(); } @@ -61,6 +60,8 @@ namespace Sojaner.MemoryScanner { public UInt32 VirtualAddress; public UInt32 Size; + public bool HasAddress { get { return (VirtualAddress != 0); } } + public bool HasSize { get { return (Size > 0); } } } #endregion #region IMAGE_FILE_HEADER