2011-09-23 23 views
-6

我試圖根據開發人員的意願加載和執行動態外部程序集。它對GetCallingAssembly()進行散列檢查。位置並關閉。如何打敗C#GetCallingAssembly()。位置安全

該程序集經常更新,因此編輯IL代碼以繞過此檢查將是可能的,但需要在加載之前以編程方式完成。這將是不可靠的,我找不到任何可用於輕鬆修補它的工具的適當文檔。如果我可以從程序集中解析出幾個字符串,我也可以直接調用後面的函數來完全繞過檢查。這會更容易,但是最不可靠的是,如果有什麼重大的變化,我的代碼會被破壞。

AFAIK有沒有簡單的方法我可以控制GetCallingAssembly()返回的內容。子進程的位置。如果有幫助,我對執行的計算機擁有完整的權限。

否則,我希望我可以使用某種鉤子或Windows 7功能來重定向從一個文件讀取到另一個文件的C#FileStream,但我不知道如何去做這件事。

請指點我一些想法。我知道這種檢查很愚蠢,應該很容易繞過正確的知識。

感謝

+2

爲什麼你不要求作者去除你的支票? ;) –

回答

3

這個網站可能是沒有注意到這一點的最好的地方是對作家進行希望,因爲我們都是開發者在這裏。

但是,如果我不得不繞過合法的原因(研究,舊軟件等),我需要在這樣的情況下修補它。由於調用進入了系統.net庫,因此如果不使用運行時加載程序將該函數修補到系統庫中,或者在生成的程序集中修補該函數,則無法控制返回。有辦法掛鉤系統庫,但我不確定這裏的內容是否合法,所以我不會評論。