熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

解讀.Net虛擬框架的實現原理

2013-11-13 12:11:59  來源: .NET編程 

  在讓Net 程序脫離net framework框架運行(源代碼實現說明) 中我們介紹的脫離框架運行的方法仍然需要依賴rsdeploydll才行今回我們就介紹這個dll的實現原理

  簡單的實現方式首先我們需要用到一個undocumented features在dll被加載時設置環境變量 COMPLUS_InstallRoot 為當前dll所在目錄

  另外復制c:\windows\microsoftnet\framework\v或者v到dll所在目錄把mscoreedll 以及crt運行庫放到dll目錄中在dll目錄中創建一個本地的GAC目錄再把需要的GAC assemblies復制進去

  這樣子就OK了簡單的Net程序就可以在這個環境中運行了如果是復雜的程序還需要實現一個虛擬注冊表系統對於我們虛擬框架這個應用來說只需要實現一個只讀的虛擬注冊表就OK了

  這個實現可以ring 也可以ring考慮到兼容性直接用ring實現好了

  實現方式可以使用api hook的方式即在我們的dll加載時hook advapidll 中所有Reg開頭的函數虛擬注冊表系統的框架就完成了剩下的就是實現了

  這段時間忙著做DNGuard的官方網站http://wwwdnguardnet/ 英文的基本完工了中文的還沒做現在還得開發一個網站的客戶中心等網站的事結了就發布DNGuard hvm的專業版在之後看看時間上的安排有空的話會考慮自己實現一下這個虛擬框架做一個小工具出來

  這個虛擬框架最核心的就是設置環境變量COMPLUS_InstallRoot

  虛擬注冊表系統只是一個擴展我們還可以再擴展一下增加一個虛擬文件系統這樣就可以做成像 xenocode vas 那樣了把整個程序部署成單一文件


From:http://tw.wingwit.com/Article/program/net/201311/15380.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.