remotesoft protector算法
应该是一款比较老的。net加密保护工具了,看其官方网站彷佛仍是06年更新过。该软件没有提供试用版下载,相关资料比较少。去年接触过一app
个该软件保护的.Net程序。加密后的程序发布时须要附带native 的 dll。函数
这款壳能够算是jit层的壳,是jit wrap 模式,经过hook getJit函数,拦截 jit 请求。在每次发生jit请求时其运行库会将加密的程序集彻底工具
“原地” 解密还原。网站
特色:总体解密加密
脱壳:拦截地层jit请求,而后中断。这时程序集已经彻底解密,直接pe dump就好了。spa
maxtocodecode
这个你们应该比较熟悉了,和 remotesoft protector 应该时先后脚起步的关系吧。其1.x,2.x,3.1x和3.2内核有很大差异。blog
特色:单方法体解密ip
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字节码。