.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 那

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

目录
相关文章
|
2月前
|
设计模式 开发框架 JavaScript
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!
|
3月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
178 3
|
6天前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
|
26天前
|
消息中间件 开发框架 监控
NET任务调度框架Hangfire使用指南
Hangfire 是一个用于 .NET 应用程序的开源任务调度框架,支持长时间运行任务、定时任务等。通过简单的安装配置,即可将任务从主线程分离,提升应用性能。支持多种数据库,提供丰富的任务类型如立即执行、延迟执行和周期性任务,并有可视化管理界面 Hangfire Dashboard。还支持安全性配置及扩展插件,如 Hangfire.HttpJob,适合各种复杂场景下的任务调度需求。
48 1
NET任务调度框架Hangfire使用指南
|
2月前
|
开发框架 安全 .NET
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱。它不仅加速了应用开发进程,提升了开发质量和可靠性,还促进了创新和业务发展,培养了专业人才和技术社区,为软件开发和数字化转型做出了重要贡献。
35 5
|
2月前
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
46 4
|
2月前
|
开发框架 .NET C#
.NET 技术凭借高效开发环境、强大框架支持及跨平台特性,在软件开发中占据重要地位
.NET 技术凭借高效开发环境、强大框架支持及跨平台特性,在软件开发中占据重要地位。从企业应用到电子商务,再到移动开发,.NET 均展现出卓越性能,助力开发者提升效率与项目质量,推动行业持续发展。
36 4
|
2月前
|
消息中间件 监控 数据可视化
基于.NET开源、功能强大且灵活的工作流引擎框架
基于.NET开源、功能强大且灵活的工作流引擎框架
|
2月前
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
|
2月前
|
网络协议 Unix Linux
精选2款C#/.NET开源且功能强大的网络通信框架
精选2款C#/.NET开源且功能强大的网络通信框架