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

DNGuard_HVM_脱壳工具.zip 不会用不要乱弄 专去HVM壳10和11运行不了 打开没反应记得换xp系统或在VM下操作 立即下载
 

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代码的加解密 ”时已经进行过测试了。

 
DNGuard_HVM_Unpacker(.net2.0-4.0) xp系统的HVM脱壳,必须是xp系统,.net 2.0和4.0的库都可以 立即下载

相关推荐

DNGuard_HVM_Unpacker 双版本2.0-4.0最新版

Full Dnguard 3.68 support. Dnguard trial should be all supported! Dnguard 3.69/3.70 are not yet supported. Recommended OS: Windows XP DNGuard_HVM_Unpacker.exe should be loaded by Framework 2.0 DNGuard_HVM_Unpackerfr4.exe should be loaded by Framework 4.0

mscorwks.dll文件丢失导致程序无法运行问题

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个mscorwks.dll文件(挑选合适的版本文件)把它放入到程序或系统目录中,当我们执行某一个.exe程序时,相应的DLL文件就会被调用,因此将缺失的文件放回到原目录之后就能打开你的软件或游戏了.那么出现mscorwks.dll丢失要怎么解决?

2301_76755223的博客 881

DNGuard_HVM_Unpackerfr4.zip

支持dnguard3.8试用版脱壳,注意:1、需要在netbox40下使用此工具;2、测试支持exe文件,dll文件就要靠运气了。

mscorwks.dll没有被指定在Windows上运行,或者它包含错误...

每次电脑开机后都会出现一个弹窗,弹窗的内容为: C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll 没有被指定在Windows上运行,或者它包含错误。请尝试使用原始安装媒体重新安装程序,或者联系您的系统管理员或者软件供应商以获取支持。 下面提供一些解决方法: 文章目录一、问题截图二、解决方法方法1:替换.dll文件方法2:重新注册文件方法3:重新安装ASP.NET 2.0 版方法4:注册.dll类文件小结: 一、问题截图 这台电脑版本.

斜键仙的博客 7167

Jetson Nano(1)——笔记本电脑控制

笔记本电脑控制Jetson Nano没有显示屏如何控制Jetson Nano一、使用ssh客户端连接到Jetson Nano的命令端1.将电脑的网线口和jetson nano的网线口通过网线连接2.在控制面版中打开“更改配适器设置”3.查找jetson nano的ip地址4.利用putty链接二、远程桌面配置 没有显示屏如何控制Jetson Nano Jetson Nano相当于一个微型电脑,能快...

weixin_43619070的博客 1万+

使用 Python 获取网络数据

本文介绍了 Python 获取网络数据、使用 requests 库、编写爬虫代码以及使用 IP 代理的方法。Python 的 requests 库非常方便,可以帮助我们快速访问网络资源。编写爬虫程序需要掌握正则表达式、HTTP 协议等知识,同时需要注意爬取速度和频率,以避免对被爬取网站造成负担。最后,使用 IP 代理可以帮助我们隐匿身份,保护我们的网络安全。

互联说 2695

【亲测免费】 解决Windows系统中的mscorwks.dll错误:一个简单有效的解决方案

解决Windows系统中的mscorwks.dll错误:一个简单有效的解决方案 【下载地址】mscorwks.dll错误修复资源文件 本资源文件旨在帮助解决 Windows 系统中出现的 `mscorwks.dll` 文件错误问题。当您在运行某些应用程序或游戏时,可能会遇到以下错误提示:```C:\Windows\Mic...

gitblog_06536的博客 801

国内开发者福音:手把手教你用微软Authenticator搞定GitHub 2FA验证(附Recovery Codes保存指南)

本文详细介绍了国内开发者如何使用微软Authenticator中国版轻松配置GitHub双重身份验证(2FA),解决短信验证不可用和国际验证器访问困难的问题。重点强调了恢复码(Recovery Codes)的安全备份策略,确保账户安全无忧。

weixin_28840143的博客 437

未能加载 mscorwks.dll错误解决方法

提示:未能加载c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorwks.dll网上的几种说法:卸载老版本net framework装新的试。如果是.NET framework 2.0和.NET framework 3.5共存,建议直接在安装卸载中修复.NET framework 3.5安装,重新恢复.NET framework 3.5

paoyufen99的专栏 6107

从原理图到代码:深入解析SX1278 LoRa模块与STM32的SPI通信驱动(附完整工程)

本文深入解析了SX1278 LoRa模块与STM32的SPI通信驱动实现,从硬件原理图到完整工程代码,详细介绍了LoRa技术的通信原理、寄存器配置、SPI接口设计及低功耗优化策略。适合物联网开发者和嵌入式工程师提升远距离无线通信能力,附完整工程代码助力快速开发。

weixin_42715608的博客 425

VS2022+Qt6保姆级环境配置指南:从插件安装到项目互通全流程

本文提供VS2022与Qt6深度整合的全流程指南,涵盖环境配置、插件安装、项目互通等关键步骤。详细解析编译器版本匹配、跨IDE协作方案及效能优化技巧,帮助开发者高效搭建C++界面设计开发环境,实现软件项目无缝互通。

zero1的博客 735

面向.NET开发人员的WinDbg入门教程

原文:http://blogs.msdn.com/b/kaevans/archive/2011/04/11/intro-to-windbg-for-net-developers.aspx 翻译:cxfksword 当你的代码发布为产品后,无论是在其他人的电脑中运行,还是部署到服务器中,你通常不再能访问到它的程序文件,也不能观察到代码的当前运行情况和运行环境。当你的代码在新的环境运行时,有很多因...

weixin_30344131的博客 238

C#调用Halcon程序三种方法

C#调用Halcon程序三种方法 1.halcon导出C#文件,在C#里面调用 2.在C#里面使用Halcon引擎调用Halcon程序 3.在C#里面使用Halcon引擎调用.hdev下本地函数或者.hdvp外部函数 Halcon引擎手册:C:/Program Files/MVTec/HALCON-21.11-Progress/doc_en_US/html/manuals/programmers_guide/programmers_guide_0120.html 1.导出C#(代码我只给出类,需要调用)

A541925504的博客 1万+
上一篇: DotNet资源站点汇总
下一篇: AJAX如何与后台交互
JavaProgramers
博客等级 码龄22年 660粉丝 304原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值