.Net 虛擬框架的實現原理
簡單的實現方式:首先我們需要用到一個undocumented features,在dll被載入時,設定環境變數 COMPLUS_InstallRoot 為當前dll所在目錄。
另外複製c:\windows\microsoft.net\framework\v1.14322或者v2.0.50727到dll所在目錄。把mscoree.dll 以及crt執行庫放到dll目錄中。在dll目錄中建立一個本地的GAC目錄,再把需要的GAC assemblies複製進去。
這樣子就OK了,簡單的.Net程式就可以在這個環境中執行了。如果是複雜的程式還需要實現一個虛擬登錄檔系統。對於我們虛擬框架這個應用來說,只需要實現一個只讀的虛擬登錄檔就OK了。
這個實現可以ring0 也可以ring3,考慮到相容性直接用ring3實現好了。
實現方式可以使用api hook的方式,即在我們的dll載入時hook advapi32.dll 中所有Reg開頭的函式。虛擬登錄檔系統的框架就完成了,剩下的就是實現了。
這段時間忙著做DNGuard的官方網站http://www.dnguard.net/ ,英文的基本完工了,中文的還沒做,現在還得開發一個網站的客戶中心。等網站的事結了,就釋出DNGuard hvm的專業版。在之後看看時間上的安排,有空的話會考慮自己實現一下這個虛擬框架,做一個小工具出來。
這個虛擬框架最核心的就是設定環境變數COMPLUS_InstallRoot 。
虛擬註冊表系統只是一個擴充套件。我們還可以再擴充套件一下,增加一個虛擬檔案系統。這樣就可以做成像 xenocode vas 那樣了。把整個程式部署成單一檔案。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-541451/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 虛擬函式的實現原理函式
- 虛擬函式實現原理(轉)函式
- .Net框架 = Java虛擬機器?框架Java虛擬機
- React 虛擬Dom 轉成 真實Dom 實現原理React
- angular髒檢查原理及虛擬碼實現Angular
- 虛擬函式表-C++多型的實現原理函式C++多型
- Java虛擬機器類裝載的原理及實現Java虛擬機
- 實現WEB中的@虛擬域名系統(原理篇) (轉)Web
- 全面理解虛擬DOM,實現虛擬DOM
- 打破虛擬與現實邊界的遊戲設計理論框架遊戲設計框架
- 【kubernetes】網路虛擬網路卡對veth pair、flannel網路模型實現原理AI模型
- 虛擬現實技術
- http 框架的路由實現原理HTTP框架路由
- Java虛擬機器類裝載:原理、實現與應用Java虛擬機
- C++(虛擬函式實現多型基本原理)C++函式多型
- 虛擬現實還需要多久才能真正的實現
- 虛擬函式的呼叫原理函式
- 虛擬現實能做什麼?虛擬現實玩遊戲以外還能做很多事遊戲
- 虛擬蜜罐:從資訊模擬到實現虛擬蜜罐技術
- vue虛擬dom原理Vue
- 利用虛擬列實現虛擬刪除的主外來鍵約束
- 瞭解react、vue的一大核心技術:虛擬DOM的實現原理ReactVue
- Fork/Join框架實現原理框架
- 使用DiskGenius工具來實現物理機遷移虛擬機器,實現虛擬化虛擬機
- 實現一個簡單的虛擬DOM
- 虛擬Dom與Diff的簡單實現
- 虛擬化中裝置直通的實現
- 想要永生?虛擬現實中實現永生或成現實
- WebComponents框架direflow實現原理Web框架
- 深入理解 Python 虛擬機器:整型(int)的實現原理及原始碼剖析Python虛擬機原始碼
- 深入理解 Python 虛擬機器:列表(list)的實現原理及原始碼剖析Python虛擬機原始碼
- java虛擬機器的執行原理Java虛擬機
- VR虛擬現實遊戲所體現的亮點分析VR遊戲
- Linux下的虛擬Bridge實現 ###############3Linux
- web技術分享| 虛擬列表實現Web
- 走進網頁虛擬現實 WebVR網頁WebVR
- Netty 實現原理淺析Netty
- 深入理解 Python 虛擬機器:元組(tuple)的實現原理及原始碼剖析Python虛擬機原始碼