我正在寫在進程中運行的加載項。我可靠地能夠發現已經在該進程中加載的DLL的內存地址。在明確的偏移存儲器示出了一個「MZ」 DOS頭和「PE」報頭。後來,似乎是導出函數的名稱等,這走路和說話像一個加載的DLL。所以,現在我想了解更多關於什麼是DLL,更有趣的是,我可能能夠使用來做。我有一個加載的DLL的起始地址,我怎麼能發現並調用它的出口?
我用PE事業中來,但他們一直與基於文件的工作的DLL。如何列出一個內存中的DLL導出的函數,除了通過檢查過程中十六進制編輯器?有什麼方法可以發現當前加載的基於文件的DLL嗎? (我不太熟悉我在dll加載時發生的鏈接。)
如果我有導出函數的名稱,是否只是嘗試調用這些函數,並猜測他們的論點和返回值?還是有一些更強大的逆向工程可以執行?
鑑於DLL的起始地址和函數名,我將如何去在C#中進行調用?