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

.Net 虛擬框架的實現原理

2013-11-13 09:47:50  來源: .NET編程 

  Net 虛擬框架的實現原理

  前面介紹了利用第三方虛擬環境來實現 Net程序脫離框架運行並介紹了如何自己編寫加載器程序今回我們介紹虛擬框架的核心實現原理感興趣的朋友可以參考自己實現在讓Net 程序 脫離 framework框架 運行(源代碼實現說明) 中我們介紹的脫離框架運行的方法仍然需要依賴 rsdeploydll 才行

  今回我們就介紹這個 dll 的實現原理

  簡單的實現方式

  首先我們需要用到一個 undocumented features

  在dll被加載時設置環境變量 COMPLUS_InstallRoot 為當前dll所在目錄

  另外復制 c\windows\\framework\v 或者 v 到 dll

  所在目錄

  把mscoreedll 以及crt運行庫放到 dll目錄中

  在dll目錄中創建一個本地的 GAC 目錄再把 需要的 GAC assemblies 復制進去

  這樣子就 OK 了簡單的 Net程序就可以在這個環境中運行了

  如果是復雜的程序 還需要實現一個虛擬注冊表系統

  對於我們虛擬框架這個應用來說只需要實現一個只讀的虛擬注冊表就OK了

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

  實現方式可以使用 api hook的方式即在我們的dll加載時 hook advapidll 中所

  有Reg開頭的函數虛擬注冊表系統的框架就完成了剩下的就是實現了

  這段時間忙著做DNGuard的官方網站 英文的基本完工了

  中文的還沒做現在還得開發一個網站的客戶中心

  等網站的事結了就發布DNGuard hvm的專業版在之後看看時間上的安排有空的話

  會考慮自己實現一下這個虛擬框架做一個小工具出來

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

  虛擬注冊表系統只是一個擴展

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


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