国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.Net 虛擬框架的實(shí)現(xiàn)原理

2024-07-10 12:37:57
字體:
供稿:網(wǎng)友

在《如何使.Net 程序脫離.net framework框架》一文中介紹了讓.NET程序脫離.NET框架的方法,但是這樣仍需要一個(gè)動(dòng)態(tài)鏈接庫的支持,那么這個(gè)虛擬框架道理是如何實(shí)現(xiàn)的呢?本文介紹虛擬框架的核心實(shí)現(xiàn)原理。

雖然能讓.NET 程序脫離 .net framework框架運(yùn)行,但是仍然需要依賴 rsdeploy.dll 才行。本文就介紹這個(gè) dll 的實(shí)現(xià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)行庫放到 dll目錄中。在dll目錄中創(chuàng)建一個(gè)本地的 GAC 目錄,再把 需要的 GAC assemblies 復(fù)制進(jìn)去。

這樣子就 OK 了,簡單的 .Net程序就可以在這個(gè)環(huán)境中運(yùn)行了。如果是復(fù)雜的程序 還需要實(shí)現(xiàn)一個(gè)虛擬注冊表系統(tǒng)。對于我們虛擬框架這個(gè)應(yīng)用來說,只需要實(shí)現(xiàn)一個(gè)只讀的虛擬注冊表就OK了。

這個(gè)實(shí)現(xiàn)可以 ring0 也可以 ring3,考慮到兼容性 直接用ring3實(shí)現(xiàn)好了。

實(shí)現(xiàn)方式可以使用 api hook的方式,即在我們的dll加載時(shí) hook advapi32.dll 中所有Reg開頭的函數(shù)。虛擬注冊表系統(tǒng)的框架就完成了,剩下的就是實(shí)現(xiàn)了。

這個(gè)虛擬框架最核心的就是 設(shè)置環(huán)境變量 COMPLUS_InstallRoot 。

虛擬注冊表系統(tǒng)只是一個(gè)擴(kuò)展。我們還可以再擴(kuò)展一下,增加一個(gè)虛擬文件系統(tǒng)。這樣就可 以做成像 xenocode vas 那樣了。把整個(gè)程序部署成單一文件。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 商洛市| 仁化县| 大港区| 嘉峪关市| 庐江县| 英山县| 新野县| 安丘市| 淮滨县| 浪卡子县| 繁峙县| 山东省| 雅安市| 江川县| 四会市| 兰州市| 通江县| 玉屏| 台山市| 体育| 五莲县| 汉川市| 江永县| 新绛县| 剑河县| 铜陵市| 盖州市| 赣州市| 日喀则市| 芜湖县| 壶关县| 名山县| 雷州市| 南漳县| 东海县| 堆龙德庆县| 南澳县| 独山县| 正蓝旗| 郯城县| 浦城县|