解讀.Net虛擬框架的實(shí)現(xiàn)原理_.Net教程
推薦:解讀.Net技術(shù)開(kāi)發(fā)中兩個(gè)“屬性”引起的歧異對(duì)于property和attribute這兩個(gè)名詞都叫
在讓.Net 程序脫離.net framework框架運(yùn)行(源代碼實(shí)現(xiàn)說(shuō)明) 中我們介紹的脫離框架運(yùn)行的方法,仍然需要依賴(lài)rsdeploy.dll才行。今回我們就介紹這個(gè)dll的實(shí)現(xiàn)原理。
簡(jiǎn)單的實(shí)現(xiàn)方式:首先我們需要用到一個(gè)undocumented features,在dll被加載時(shí),設(shè)置環(huán)境變量 COMPLUS_InstallRoot 為當(dāng)前dll所在目錄。
另外復(fù)制c:\windows\microsoft.net\framework\v1.14322或者v2.0.50727到dll所在目錄。把mscoree.dll 以及crt運(yùn)行庫(kù)放到dll目錄中。在dll目錄中創(chuàng)建一個(gè)本地的GAC目錄,再把需要的GAC assemblies復(fù)制進(jìn)去。
這樣子就OK了,簡(jiǎn)單的.Net程序就可以在這個(gè)環(huán)境中運(yùn)行了。如果是復(fù)雜的程序還需要實(shí)現(xiàn)一個(gè)虛擬注冊(cè)表系統(tǒng)。對(duì)于我們虛擬框架這個(gè)應(yīng)用來(lái)說(shuō),只需要實(shí)現(xiàn)一個(gè)只讀的虛擬注冊(cè)表就OK了。
這個(gè)實(shí)現(xiàn)可以ring0 也可以ring3,考慮到兼容性直接用ring3實(shí)現(xiàn)好了。
實(shí)現(xiàn)方式可以使用api hook的方式,即在我們的dll加載時(shí)hook advapi32.dll 中所有Reg開(kāi)頭的函數(shù)。虛擬注冊(cè)表系統(tǒng)的框架就完成了,剩下的就是實(shí)現(xiàn)了。
這段時(shí)間忙著做DNGuard的官方網(wǎng)站http://www.dnguard.net/ ,英文的基本完工了,中文的還沒(méi)做,現(xiàn)在還得開(kāi)發(fā)一個(gè)網(wǎng)站的客戶(hù)中心。等網(wǎng)站的事結(jié)了,就發(fā)布DNGuard hvm的專(zhuān)業(yè)版。在之后看看時(shí)間上的安排,有空的話(huà)會(huì)考慮自己實(shí)現(xiàn)一下這個(gè)虛擬框架,做一個(gè)小工具出來(lái)。
這個(gè)虛擬框架最核心的就是設(shè)置環(huán)境變量COMPLUS_InstallRoot 。
虛擬注冊(cè)表系統(tǒng)只是一個(gè)擴(kuò)展。我們還可以再擴(kuò)展一下,增加一個(gè)虛擬文件系統(tǒng)。這樣就可以做成像 xenocode vas 那樣了。把整個(gè)程序部署成單一文件。
分享:解讀.net垃圾回收和CLR 4.0對(duì)垃圾回收所做的改進(jìn)之一A survey of garbage collection and the changes CLR 4.0 brings in - series of what is new in CLR 4.0 導(dǎo)言Introduction 垃圾回收(Garbage Collection)在.net中是一個(gè)很重要的機(jī)制. 本文將要談到CLR4.0對(duì)垃圾回收做了哪些改進(jìn). 為了更好地理解這些改進(jìn),
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無(wú)刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶(hù)端IP常見(jiàn)代碼存在的偽造IP問(wèn)題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過(guò)程實(shí)現(xiàn)分頁(yè)示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- .net全局定時(shí)定期執(zhí)行某些操作在Global.asax中具體實(shí)現(xiàn)
- c# 連接字符串?dāng)?shù)據(jù)庫(kù)服務(wù)器端口號(hào)
- ASP.NET生成高質(zhì)量縮略圖通用函數(shù)(c#代碼)
- 解析gridview超出長(zhǎng)度用..代替,提示顯示詳細(xì)信息
- 關(guān)于VS2012自帶的 性能分析 工具使用實(shí)例(圖文介紹)
- Asp.net中DataTable導(dǎo)出到Excel的方法介紹
- 教你簡(jiǎn)單方便獲取Web設(shè)計(jì)的免費(fèi)資源
- 使用asp.net的pageDataSource中時(shí)索引問(wèn)題解決方法
- 添加GridView/DataGrid單擊一行服務(wù)器事件
- 淺析電子商務(wù)的框架
- 相關(guān)鏈接:
- 教程說(shuō)明:
.Net教程-解讀.Net虛擬框架的實(shí)現(xiàn)原理
。