.Net 虚拟框架的实现原理
|
源代码网整理以下。Net 虚拟框架的实现原理 源代码网整理以下 今回我们就介绍这个 dll 的实现原理。 源代码网整理以下 简单的实现方式: 源代码网整理以下 首先我们需要用到一个 undocumented features , 源代码网整理以下 在dll被加载时,设置环境变量 COMPLUS_InstallRoot 为当前dll所在目录。 源代码网整理以下 另外复制 c:windowsmicrosoft.netframeworkv1.14322 或者 v2.0.50727 到 dll 软件开发网 www.mscto.com
源代码网整理以下 所在目录。 源代码网整理以下 把mscoree.dll 以及crt运行库放到 dll目录中。 源代码网整理以下 在dll目录中创建一个本地的 GAC 目录,再把 需要的 GAC assemblies 复制进去。 软件开发网 www.mscto.com
源代码网整理以下 这样子就 OK 了,简单的 .Net程序就可以在这个环境中运行了。 源代码网整理以下 如果是复杂的程序 还需要实现一个虚拟注册表系统。 源代码网整理以下 对于我们虚拟框架这个应用来说,只需要实现一个只读的虚拟注册表就OK了。 源代码网整理以下 这个实现可以 ring0 也可以 ring3,考虑到兼容性 直接用ring3实现好了。 源代码网整理以下 实现方式可以使用 api hook的方式,即在我们的dll加载时 hook advapi32.dll 中所 源代码网整理以下 有Reg开头的函数。虚拟注册表系统的框架就完成了,剩下的就是实现了。 源代码网整理以下 这段时间忙着做DNGuard的官方网站 http://www.dnguard.net/ ,英文的基本完工了, 源代码网整理以下 中文的还没做,现在还得开发一个网站的客户中心。 源代码网整理以下 等网站的事结了,就发布DNGuard hvm的专业版。在之后看看时间上的安排,有空的话 源代码网整理以下 会考虑自己实现一下这个虚拟框架,做一个小工具出来。 源代码网整理以下 这个虚拟框架最核心的就是 设置环境变量 COMPLUS_InstallRoot . 软件开发网 www.mscto.com
源代码网整理以下 虚拟注册表系统只是一个扩展。 源代码网整理以下 我们还可以再扩展一下,增加一个虚拟文件系统。这样就可以做成像 xenocode vas 那样了。把整个程序部署成单一文件。 源代码网推荐 源代码网供稿. |
