5
我正在試驗.NET中的內存訪問。目前,我有一個託管程序,啓動非託管的進程並檢索其加載模塊(DLL)之一的BaseAddress
。我想要做的是以某種方式讀取已加載模塊的PE標頭,以便稍後可以檢索其導出的地址。如何讀取內存中加載的模塊的PE頭?
不幸的是,我找不到任何關於此的好信息。有任何想法嗎?
我正在試驗.NET中的內存訪問。目前,我有一個託管程序,啓動非託管的進程並檢索其加載模塊(DLL)之一的BaseAddress
。我想要做的是以某種方式讀取已加載模塊的PE標頭,以便稍後可以檢索其導出的地址。如何讀取內存中加載的模塊的PE頭?
不幸的是,我找不到任何關於此的好信息。有任何想法嗎?
This是PE文件格式的一個很好的起點。
您可以從基地址P/Invoke ReadProcessMemory您必須將標題複製到您的過程。你需要解析你讀入各種PE頭的內存。第一個標題是IMAGE_DOS_HEADER,它會指向IMAGE_NT_HEADERS。然後,您可以使用IMAGE_NT_HEADERS中的IMAGE_OPTIONAL_HEADER來查找二進制文件中IMAGE_EXPORT_DIRECTORY的位置。