首 页IT知识库翔宇问吧收藏本站
当前位置:翔宇亭IT乐园IT知识库WEBASP.NET

.Net 虚拟框架的实现原理

减小字体 增大字体 作者:不详  来源:中文C#技术站  发布时间:2010-08-29 08:29:00

在《如何使.Net 程序脱离.net framework框架》一文中介绍了让.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开头的函数。虚拟注册表系统的框架就完成了,剩下的就是实现了。

这个虚拟框架最核心的就是 设置环境变量 COMPLUS_InstallRoot 。

虚拟注册表系统只是一个扩展。我们还可以再扩展一下,增加一个虚拟文件系统。这样就可 以做成像 xenocode vas 那样了。把整个程序部署成单一文件。来源:紫雨轩 .Net - 博客园


本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!

Tags:.NET 框架

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

用户名: 查看更多评论

分 值:100分 90分 80分 70分 60分 40分 20分

内 容:

请注意用语文明且合法,不要发布带有攻击性、侮辱性的言论,谢谢合作!

验证码:

关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图 | 用户守则 | 联系我们
本站部分内容来自互联网,如有侵权,请来信告之,谢谢!
Copyright © 2007-2019 biye5u.com. All Rights Reserved.
网站备案号:黑ICP备13005378号-3