文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程Asp.Netmscorwks.dll在.Net中的地位以及在.Net代码保护方面的应用
精品推荐
特别推荐
·技巧实例:ASP.NET生成静态页面实现方法
·ASP.NET、JSP及PHP之间的抉择
·.net基础知识错误注意二十二点知识
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·.NET基础知识-什么是.NET
·初学C#+ASP.NET+Oracle时积累的备忘点滴
·专家详解:复杂表达式的执行步骤
·asp.net中的加密方法
·DataGrid常见关注问题解决方案
·学习笔记 ASP.NET 5种页面转向法
·ASP.NET网络编程中经常会用到的27个函数集
·ASP.NET之上传文件管理策略
·专家:用.NET动态创建类的实例讲解
·ASP.NET WEB服务和Flash打造MP3播放器
·精通ASP.NET中弹出窗口技术
·asp.net常用代码
·asp.net创建文件夹的IO类的问题
·Asp.Net函数集
·Asp.net cache 简述
·如何最大限度提高.NET的性能 (续)
热点TOP10
·DataTable控件的使用
·ASP.NET上传文件的实例
·ASP.NET2.0下含有DropDownList的GridView编辑、删除的完整例子!
·asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
·ASP.NET购物车的实现及结算处理
·在ASP.NET中防止注入攻击[翻译]
·使用ASP.NET2.0的ReportViewer查看RDLC报表
·asp.net程序中最常用的三十三种编程代码
·ASP.NET 2.0的导航控件treeview和menu的实例
·asp.net常用代码
·在C#后代码里使用IE WEB Control TreeView
·Lucene.net 实现全文搜索
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·Access 通用数据访问类(asp.net 2.0 c#)
·.Net分页控件发布
·ASP.NET之上传文件管理策略
·AspNetPager分页控件--使用方法
·asp.net 2.0中gridview里嵌套dropdownlist
·ASP.net在线购物商城系统完全解析
·手把手教你在Win2003下配置ASP.NET开发环境

mscorwks.dll在.Net中的地位以及在.Net代码保护方面的应用

日期:2007年6月10日 作者: 查看:[大字体 中字体 小字体]


mscorwks.dll是dotNet的核心文件,尤其是在net2.0中,以前分散的功能都集中到了这个dll中。
net1.1中,还有一个文件mscorsvr.dll 和 mscorwks.dll 是同等地位的。
它们分别对应于 windows service程序以及 desktop 程序。
在net2.0中,它们都统一到了 mscorwks。dll中。
同时在net2.0中mscorsn.dll 的功能也合并到了 mscorwks.dll中。
它就是dotnet运行库的核心。
DotNet的执行引擎(ee),内部对象的实现都在这个dll里面。

在我们用reflector查看dotnet类库源代码时经常会遇到一些函数看不到源代码,只是标记成内部实现。这些函数基本上实际实现的代码就在这个dll里面,是native实现的。如反射功能的相关对象以及实现就是这里面。

net程序的执行主要由它来完成,还有另外一个重要的文件mscorjit.dll 被它所调用。
现在我们把 mscorwks.dll 分成两个区 A 和 B,
A 是主要执行引擎(ee)和native 实现。
B 是ee调用jit的处理部分。

net2.0的反射功能是在A区实现的。加密壳如果要实现完美的兼容性(即不破坏DotNet本身的任何功能和特性)就应该在 A 区挂入其内核。
在A区有一个函数实现获取方法体的内容,ee层需要取得方法体内容是通过这个函数来获得的。因此完美的方法就是 替换这个函数,用加密壳的内核实现这个函数。

这样的最大缺点就是反射漏洞,因为反射也是调用这个函数取得方法体的。

在这个基础上要要破坏反射有什么办法呢?
在反射是需要调用Method的成员函数GetMethodBody,这个函数是native实现的,就在mscorwks。dll中,因此加密壳可以hook这个函数做一些预防处理。
但是效果不理想,破解者可以恢复这个函数的原始实现。

还有一个方法,不是完美,但是有效,即不直接替换获取方法体的函数,
而是只替换编译前获取方法体的地方。这样只在要编译方法时才提供内核解密服务。

效果如何?也不太理想,破解这可以修改反射的实现函数,直接jmp到加密壳的内核服务。

这种方式就是DNGuard v1.0采用的方法,似乎也是某壳目前版本的方法。
当然,DNGuard 1.0还简单的加入了放内存修改,不过这个效果也能太乐观,破解者也能够把这部分屏蔽掉。
因为反射在A区实现,如果壳的内核也挂接A区,反射就比较容易修复。

在我做DNGuard 2.0之前,我曾想过一种方法,能使反射无效,甚至难于修复。
即同时在内核挂接在 A 区,和 B区。
先来介绍一下一个函数要被执行是是怎么个流程。
首先,EE会检查函数是否编译?编译了就直接调用了。没有编译就进行编译。由一个prestub实现。
然后EE取得方法体,对方法头和SEH TAble进行简单解析,转换成结构。
(这些在A区完成),进入B区调用Jit进行编译。

在A区ee只关系方法头和sehtable,而B区调用jit时 il字节码才有实际意义。
所以可以将内核分别挂接这两个区,A区中只提供header和seh,B区中提供il字节码。

不过在我开始做DNGuard v2.0后就放弃了这个想法,因为这样还是不安全。
参考这里:深入Jit,实现dotNet代码的加解密

不管内核是在A区还是B区,如果一个加密壳的内核只限于在mscorwks.dll进行挂接实现。那么都无法脱逃 jit层脱壳机的脱壳。我在写文章“深入Jit,实现dotNet代码的加解密 ”时已经进行过测试了。

今回到这里,下回介绍mscorjit。dll。

(出处:清风网络学院






上一篇:DataTable操作中的性能问题

下一篇:.NET调用Oracle存储过程,使用数组类型的参数(如ArrayList)

mscorwks.dll在.Net中的地位以及在.Net代码保护方面的应用 相关文章:
·QQ空间免费换皮肤代码
·qq空间皮肤背景代码:QQ空间不用Q币更换主页皮肤方法
·QQ空间透明flash代码
·最全面的WindowsXP修改大全
·[最新QQ空间代码]QQ空间花,漂浮物、开场动画代码
·免费领养QQ空间五级花最新技巧及代码放送
·如何在QQ空间加入播放器代码
·QQ空间流星雨效果代码
·C#编写的windows计算器-源代码
·QQ空间植物代码
mscorwks.dll在.Net中的地位以及在.Net代码保护方面的应用 相关软件:
·中文版 AutoCAD2004 应用实例与技巧
·Excel应用宝典
·Sim Aquarium v2.06 -非常漂亮的海底世界屏幕保护程序
·嵌入式系统应用开发技术 wmv 视频教程
·CorelDRAW9应用速成
·注册表实例应用视频教程swf
·AUTOCAD 2002机械设计应用与实例
·超强ASP代码集『推荐』
·5000个大型网站源代码打包下载 ASP/PHP 急要和我联系
·蔡依林《假面的告白》MV

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot