我只是想知道在我開始工作之前是否有可能。我可以將C#代碼注入並運行到正在運行的進程中,以及枚舉所有加載的.NET模塊。另外,我可以編輯.NET DLL的說明來添加我的方法調用。很明顯,我不能在加載DLL時編輯DLL,但是當我嘗試它時,系統消息告訴我無法編輯它,因爲它在另一個進程中加載。這導致我相信,如果我在相同的進程(因爲我的注入代碼),我可以編輯加載的DLL。我懷疑這是不對的。可能嗎?修改加載的C#DLL?
如果不是,你認爲可能卸載目標DLL,編輯它,並重新加載目標DLL?系統會重新正確地重新映射其所有值(因爲新的DLL會由於幾條指令而變大)?我有一種感覺,如果可以卸載DLL,進行編輯並將其重新加載到進程中,則操作系統應該負責其餘部分。
謝謝你的任何見解和反饋。
你爲什麼想這樣做? –
@大衛,很多原因:病毒,間諜軟件,根包。不要這麼閉目! –
它也不需要是惡意的;例如,爲某些東西寫一個自定義的插件,而不是爲了濫用目的,是完全沒問題的。 –