“原地”解密。所以运行后直接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字节码。