我正在與沙箱技術相關的項目中工作。從C中的緩衝區運行程序集.exe
目前我正在寫一個C程序,從遠程Web服務器獲取一個小程序集.exe
二進制(.NET)
。這個二進制文件存儲在內存中(從不接觸磁盤),我的意圖是從內存中運行這個二進制文件。如果我的客戶是在.NET
中製作的,我從內存中運行該程序集沒有任何問題(事實上,有很多不同的方法可以獲得這個),但當然這不可能與C
(不完全確定)。
我的問題是:在我的C
程序的地址空間中有該程序集.exe
,有沒有什麼辦法可以從那裏運行它?有什麼辦法可以讓CLR
運行它嗎?起初我想調用powershell從那裏運行它(使用Reflection.Assembly),但是這種情況涉及到將程序集寫入磁盤。
在任何情況下,毫無疑問,最好的和有效的方式是通過使用.NET
客戶端。
這是可能的,我毫不懷疑。簡單?不,我相當懷疑這遠遠超出了單個SO回答的範圍。 –
那麼,我們知道.net程序集只能由.net運行時(或等效)執行。那麼如何使用cli與C中的C#進行交互,然後使用已有的C#方法從內存中運行程序集。這會按照你想要的方式工作嗎? – kbzombie
它可以在沒有寫入磁盤的PS中完成。絕對不容易。以下是[how]的概要(https://www.defcon.org/images/defcon-21/dc-21-presentations/Bialek/DEFCON-21-Bialek-PowerPwning-Post-Exploiting-by-Overpowering-Powershell .pdf)和[很多代碼]的鏈接(https://github.com/clymb3r/powershell) –