0
我正在編程生成.NET程序集清單的庫,我需要獲取程序集模塊的圖像基值。我怎樣才能在C#中獲得它?如何在C#中獲取.NET模塊的圖像基值?
我正在編程生成.NET程序集清單的庫,我需要獲取程序集模塊的圖像基值。我怎樣才能在C#中獲得它?如何在C#中獲取.NET模塊的圖像基值?
您必須閱讀DLL或EXE的Portable Executable頭。說明這樣做可以在這裏找到:
閱讀C#中的可移植可執行(PE)頭
http://code.cheesydesign.com/?p=572
ImageBase
位於IMAGE_OPTIONAL_HEADER32
:
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct IMAGE_OPTIONAL_HEADER32 {
public UInt16 Magic;
public Byte MajorLinkerVersion;
public Byte MinorLinkerVersion;
public UInt32 SizeOfCode;
public UInt32 SizeOfInitializedData;
public UInt32 SizeOfUninitializedData;
public UInt32 AddressOfEntryPoint;
public UInt32 BaseOfCode;
public UInt32 BaseOfData;
public UInt32 ImageBase; <------------------ Here
public UInt32 SectionAlignment;
public UInt32 FileAlignment;
public UInt16 MajorOperatingSystemVersion;
public UInt16 MinorOperatingSystemVersion;
public UInt16 MajorImageVersion;
public UInt16 MinorImageVersion;
public UInt16 MajorSubsystemVersion;
public UInt16 MinorSubsystemVersion;
public UInt32 Win32VersionValue;
public UInt32 SizeOfImage;
public UInt32 SizeOfHeaders;
public UInt32 CheckSum;
public UInt16 Subsystem;
public UInt16 DllCharacteristics;
public UInt32 SizeOfStackReserve;
public UInt32 SizeOfStackCommit;
public UInt32 SizeOfHeapReserve;
public UInt32 SizeOfHeapCommit;
public UInt32 LoaderFlags;
public UInt32 NumberOfRvaAndSizes;
}
什麼是「影像基地值」?如果我們不得不穀歌來找出這意味着什麼,那麼Google或許可以自己得到答案。 –
您的意思是[DLL的首選基址](http://msdn.microsoft.com/zh-cn/library/b1awdekb.aspx)? – dtb
我認爲他的意思是'ImageBase',ILDASM將提供[如果你問它。](http://msdn.microsoft.com/en-us/library/ceats605.aspx) –