本文主要介绍一些dotNet加密保护工具的原理以及就其脱壳进行简单探讨。

remotesoft protector、maxtocode、.Net Reactor、Cliprotector、themida .Net、xenocode native compiler、DNGuard。

remotesoft protector

应该是一款比较老的。net加密保护工具了,看其官方网站似乎还是06年更新过。该软件没有提供试用版下载,相关资料比较少。去年接触过一

个该软件保护的.Net程序。加密后的程序发布时需要附带native 的 dll。

这款壳可以算是jit层的壳,是jit wrap 模式,通过hook getJit函数,拦截 jit 请求。在每次发生jit请求时其运行库会将加密的程序集完全

“原地” 解密还原。

特点:整体解密

脱壳:拦截地层jit请求,然后中断。这时程序集已经完全解密,直接pe dump就行了。

maxtocode

这个大家应该比较熟悉了,和 remotesoft protector 应该时前后脚起步的关系吧。其1.x,2.x,3.1x和3.2内核有很大差别。

特点:单方法体解密

maxtocode 1.x 版本没有用过,不过DST组的菩提曾经写过 maxtocode 1.x 的脱壳机。

maxtocdoe 2.x 其内核是EE层,单方法体“原地”解密。编译之后再擦除解密的代码。

脱壳:因为是“原地”解密,所以方法体代码逃不过profile的。可以在profile里面记录每个方法体,然后填充到文件中。

方法二:nop 调 其内核 的擦除代码。这个不用修改其内核文件,只要还原 mscorwks。dll 中其hook的第二处地方即可。这样方法体解密后就

在内存中了。所有方法invoke一面,直接pe dump即可。

maxtocode 3.1x,这个版本接触得比较多,我接触的第一个maxtocode版本就是3.10。这一版其内核相对2.x变动比较大。方法体已经不是原地

解密的了,也就是说profile已经不能监视到其il代码了,这算是一个巨大的进步吧。3.1x的内核基本上是一样的,只是后续的版本针对反射做

了一些小动作。

脱壳:直接反射、修复后反射。

方法二:直接调用其内核的解密函数进行脱壳,简单快速。

maxtocode 2007 企业版,Jit层内核 ,其在 ee 层和 jit层均安装了多处 hook。其内核在前面的文章里面有详细介绍。

脱壳:因其jit层内核的漏洞,可以用简单的方式还原方法体。Hook Jit 后可以简单的进行方法体还原完成单个方法的脱壳。

把每个方法都脱一面,填回文件即可。

.Net Reactor

一款很特别的。net加密壳。它有两种模式, application 和 library。

第一种模式 是把 。net程序整体加密,然后创建一个 native的loader。整体加密的脱壳很简单,dump 内存即可。

第二种模式 加密后的程序集也要带一个native的dll。和maxtocode一样,加了很多静态构造函数,一个startup函数。

但是在 startup函数调用后,即完成了程序集的全部“原地”解密。所以运行后直接dump内存就可以了。

脱壳:直接pe dump。

CliProtector

一款jit层的加密壳,大概是去年年底发现的。当时我在进行DNGuard2.0的开发,经分析后发现其内核模式和当时DNGuard 2.0的jit层内核很相似。分析后不久就发现了其jit层内核处理的一个漏洞,可以用简单的方式还原方法体。也就是最近在maxtocode 2007 企业版中发现的那个。在我的DNGuard 2.0 中对这个漏洞进行了预防处理。

个人感觉其模式兼容性比maxtocode 2007企业版要好。只是可惜,它除了有jit层漏洞,还偷了赖,IL代码没有加密,和我出的dnguard 1.0 demo一样,只是把 il搬了一下位置,没有加密。不过对于jit层脱壳来说加不加密倒无所谓了。但这样可能导致破解者从另一个角度去脱壳了。

特点:单方法体解密

脱壳:Jit hook,简单方法体还原, 同maxtocode2007企业版的脱壳方式。

方法二:分析其加密文件结构,直接还原(因其il代码没有加密,可以不用考虑解密算法的研究)。

themida .Net

themida 是win32的一个强壳,它支持 。Net的加密,其加密方式是整体加密,但是凭借其win32 anti的优势,相比其它整体加密的加密工具来说强度要高一点,不过也就仅仅那么一点。

脱壳:过anti,pe dump。

xenocode native compiler

xenocode 的专长是混淆保护,不过它也提供了一个所谓的生成本地代码的功能。其生成本地代码其实就是把 程序集打包,创建一个native loader。但是它的打包把framework都包进去了,也就是说打包后的程序可以在没有安装framework的机器上直接运行,代价是生成的文件体积非常大,因为它把十几兆的framework包进去了。

脱壳:直接pe dump。

方法二:分析其打包的文件格式直接解包(已有工具)。

DNGuard 1.0 内核模式同 maxtocode 3.1x。脱壳方式也雷同。

DNGuard 2.0 Jit层内核,同maxtocode 2007企业版和CLIProtector。相比少了一个漏洞,不能用简单方式还原方法体。

如果破解者对jit内核工作非常熟悉,也能从jit层的结构体中重构出方法体。

脱壳:Jit hook 结构体重构模式。

总结:

以上除了 maxtocode 3.x, DNGuard, CLiProtector 外,其它工具加密的程序都存在profile漏洞,可以通过profile获取代码。

综合兼容性和强度 CLiProtector 和 maxtocode 2007 企业版 要好一些。

DNGuard 2.0的强度好一些,兼容性比较差,就只支持 v2.0.50727.42 的framework。

DNGuard新版已经开始采用兼容全部framework的模式了。

上面的所有工具加密的程序集,都可以直接在jit层中截获 IL字节码。 IL字节码不是方法体,它是方法体的一部分。

只取得il字节码无法完成脱壳工作,但是已可反为MSIL汇编代码,进行算法分析了。

DNGuard HVM的目标就是不让jit层截获可分析的IL字节码。

.Net加密保护工具分析介绍的更多相关文章

  1. 常见dotNet加密保护工具分析介绍(转)

    本文主要介绍一些dotNet加密保护工具的原理以及就其脱壳进行简单探讨.remotesoft protector.maxtocode..Net Reactor.Cliprotector  .themi ...

  2. Unity3D 代码加密保护工具

    加密方式   对于Unity3D的保护方式,主要是通过Virbox Protector Standalone对Unity3D程序的整个生成目录进行加密,可以保护Unity的主要代码逻辑不被反编译,最大 ...

  3. 日志分析工具-ApexSQL介绍

    原文:日志分析工具-ApexSQL介绍 使用场景:业务数据异常变化,通过代码分析不出来的时候,迫不得已需要通过日志来分析 下载地址:http://www.apexsql.com/Download.as ...

  4. Windows系统内存分析工具的介绍

      Windows系统内存分析工具的介绍(进程管理器,资源管理器,性能监视器, VMMap, RamMap,PoolMon) 微软官方提供多种工具来分析Windows 的内存使用情况,除了系统自带的任 ...

  5. 性能分析工具gprof介绍(转载)

    性能分析工具gprof介绍Ver:1.0 目录1. GPROF介绍 42. 使用步骤 43. 使用举例 43.1 测试环境 43.2 测试代码 43.3 数据分析 53.3.1 flat profil ...

  6. 6个常用Java 源代码 保护工具(混淆、加密、底层)

    6个常用Java 源代码 保护工具(混淆.加密.底层) ProGuard Java源代码保护工具ProGuard的3.6与4.1版  下载地址:http://download.csdn.net/sou ...

  7. 马哈鱼血缘分析工具部署介绍--win 10

    马哈鱼血缘分析工具部署介绍--win 10 随着大数据技术的发展与普及,数据治理和数据质量变得越来越重要,数据血缘分析在业界悄然兴起并得到了广泛流行,马哈鱼是国内少有的一款专业且易用的血缘分析工具.本 ...

  8. .NET 产品版权保护方案 (.NET源码加密保护) (转载)

    说 明:你希望自己用.net辛辛苦苦做出来的软件被人轻易破解吗?你希望自己花了大量人力物力用.net开发出来的产品被竞争对手轻易获取核心代码吗?这是 一篇比较详尽地介绍如何保护自己的.net源代码的文 ...

  9. [C#防止反编译].NET 产品版权保护方案 (.NET源码加密保护)

    [C#防止反编译].NET 产品版权保护方案 (.NET源码加密保护) 标签: .net加密产品c#dll工具 2011-03-24 21:06 27009人阅读 评论(13) 收藏 举报 分类: C ...

随机推荐

  1. Constraint1:主键约束,唯一性约束和唯一索引

    1,主键约束创建索引 作为Primay Key的列是唯一的,非空的,Sql Server在创建主键约束时,自动为主键列创建一个唯一索引,并且索引列不允许为null. create table dbo. ...

  2. 修改NLS_DATE_FORMAT的四种方式

    一. 在用户环境变量中指定(LINUX) 在用户的.bash_profile中增加两句: export NLS_LANG=AMERICAN ---这一句必须指定,否则下一句不生效.export NLS ...

  3. 百度地图JavaScript API自定义覆盖物、自定义信息窗口增删时的显示问题

    项目中,需求:在百度地图上实时画出车辆,并能点击车辆弹出信息框查看实时信息. 实现:通过不停的画覆盖物并删除掉.点击覆盖物时弹出信息窗口. 问题:删除掉覆盖物后信息窗也删除掉了.因为信息窗是建立在覆盖 ...

  4. Testing - 测试基础 - 概念

    测试是为了度量和提高被测试软件的质量,对测试软件进行工程设计.实施.维护的的整个生命周期过程. 仅仅发现Bug是测试的初步,而分析出根本原因推动问题的解决,却要有很深的功底. 不同的测试岗位从事不同的 ...

  5. iHover – 30+ 纯 CSS 实现的超炫的图片悬停特效

    iHover 是一个令人印象深刻的图片悬停效果集合,完全基于 CSS3 实现,无依赖,能够搭配 Bootstrap 3 很好地工作.基于 SCSS 技术构建,便于修改变量.有模块化的代码,无需包含整个 ...

  6. Windows Azure HandBook (10) 测试本地网络到微软云的延迟

    <Windows Azure Platform 系列文章目录> 之前遇到一些微软云的客户,在使用海外数据中心的时候,需要评估本地网络到微软云网络的延迟. 我们建议部署到微软云上的服务,离最 ...

  7. ASP.NET MVC WEB API必知必会知识点总结

    一.理解WEB API:提供基于RESTful架构的WEB服务,通过HTTP请求方法(GET, PUT, POST, DELETE)映射到服务器端相应的ACTION方法(CRUD). RESTful架 ...

  8. Css定位总结

    CSS position   static 默认值,没有定位.元素框正常生成.块级元素生成一个矩形框,作为文档流(normal flow)的一部分,行内元素则会创建一个或多个行框,置于其父元素中.to ...

  9. Dapper学习 - Dapper的基本用法(三) - CUD

    之前介绍了Dapper的查询, 存储过程, 函数的调用, 接下来要说一下Dapper的增删改, 其实Dapper的增删改, 都是同一种模式的. 我就不分开介绍了, 直接在一个例子上展现好了. var ...

  10. qrcodenet 代码中一些基础的认识 帮助

    1): gRender.WriteToStream(matrix, ImageFormat.Png, stream, new Point(600, 600)); new Point(600, 600) ...