.Net 虚拟框架的实现原理

简介: .Net 虚拟框架的实现原理 前面介绍了利用第三方虚拟环境来实现 .Net程序脱离框架运行, 并介绍了如何自己编写加载器程序。 今回我们介绍虚拟框架的核心实现原理,感兴趣的朋友可以参考自己实现。 在 让 .Net 程序 脱离 .net framework框架 运行(源代码实现说明)  中我们介绍的脱 离框架运行的方法,仍然需要依赖 rsdeploy.dll 才行。

.Net 虚拟框架的实现原理

前面介绍了利用第三方虚拟环境来实现 .Net程序脱离框架运行,
并介绍了如何自己编写加载器程序。
今回我们介绍虚拟框架的核心实现原理,感兴趣的朋友可以参考自己实现。

在 让 .Net 程序 脱离 .net framework框架 运行(源代码实现说明)  中我们介绍的脱

离框架运行的方法,仍然需要依赖 rsdeploy.dll 才行。
今回我们就介绍这个 dll 的实现原理。

简单的实现方式:
首先我们需要用到一个 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 那

样了。把整个程序部署成单一文件。

目录
相关文章
|
27天前
|
数据可视化 网络协议 C#
C#/.NET/.NET Core优秀项目和框架2024年3月简报
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排名不分先后,都是十分优秀的开源项目和框架,每周定期更新分享(欢迎关注公众号:追逐时光者,第一时间获取每周精选分享资讯🔔)。
|
3月前
|
开发框架 JavaScript 前端开发
5个.NET开源且强大的快速开发框架(帮助你提高生产效率)
5个.NET开源且强大的快速开发框架(帮助你提高生产效率)
105 4
|
5月前
|
开发框架 缓存 Cloud Native
微软发布 .NET 云原生开发框架—— .NET Aspire
微软于 2023-11-14日 发布了 .NET 8 的正式版。伴随着这个重要 .NET 版本的发布,微软也发布了一个全新的 .NET云原生开发框架 —— .NET Aspire,它提供了如下 3 个方面的能力,来帮助我们使用 .NET 开发分层、云就绪的可观测、本地与生产环境一致的分布式云原生应用程序。
209 0
|
2天前
|
人工智能 自然语言处理 算法
分享几个.NET开源的AI和LLM相关项目框架
分享几个.NET开源的AI和LLM相关项目框架
|
2月前
|
开发框架 网络协议 .NET
深入.net框架
深入.net框架
12 0
|
3月前
|
算法 BI API
C#/.NET/.NET Core优秀项目和框架2024年1月简报
C#/.NET/.NET Core优秀项目和框架2024年1月简报
|
4月前
|
PHP Windows
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
|
4月前
|
开发框架 前端开发 JavaScript
一款基于.NET Core的快速开发框架、支持多种前端UI、内置代码生成器
一款基于.NET Core的快速开发框架、支持多种前端UI、内置代码生成器
105 0
|
4月前
|
SQL JavaScript NoSQL
3个.NET开源简单易用的任务调度框架
3个.NET开源简单易用的任务调度框架
117 0
|
4月前
|
数据采集 开发框架 JavaScript
C#/.NET/.NET Core优秀项目和框架2023年12月简报
C#/.NET/.NET Core优秀项目和框架2023年12月简报