本文主要介绍一些dotNet加密保护工具的原理以及就其脱壳进行简单探讨
remotesoft protector
maxtocode
Net Reactor
Cliprotector
themida
Net
xenocode native compiler
DNGuard
remotesoft protector
应该是一款比较老的net加密保护工具了看其官方网站似乎还是年更新过该软件没有提供试用版下载相关资料比较少去年接触过一个该软件保护的Net程序加密后的程序发布时需要附带native 的 dll这款壳可以算是jit层的壳是jit wrap 模式通过hook getJit函数拦截 jit 请求在每次发生jit请求时其运行库会将加密的程序集完全原地 解密还原
特点整体解密
脱壳拦截地层jit请求然后中断这时程序集已经完全解密直接pe dump就行了
maxtocode 这个大家应该比较熟悉了和 remotesoft protector 应该时前后脚起步的关系吧其xxx和内核有很大差别
特点单方法体解密
maxtocode x 版本没有用过不过DST组的菩提曾经写过 maxtocode x 的脱壳机
maxtocdoe x 其内核是EE层单方法体原地解密编译之后再擦除解密的代码
脱壳因为是原地解密所以方法体代码逃不过profile的可以在profile里面记录每个方法体然后填充到文件中
方法二nop 调 其内核 的擦除代码这个不用修改其内核文件只要还原 mscorwksdll 中其hook的第二处地方即可这样方法体解密后就在内存中了所有方法invoke一面直接pe dump即可
maxtocode x这个版本接触得比较多我接触的第一个maxtocode版本就是这一版其内核相对x变动比较大方法体已经不是原地
解密的了也就是说profile已经不能监视到其il代码了这算是一个巨大的进步吧x的内核基本上是一样的只是后续的版本针对反射做了一些小动作
脱壳直接反射修复后反射
方法二直接调用其内核的解密函数进行脱壳简单快速
maxtocode 企业版Jit层内核 其在 ee 层和 jit层均安装了多处 hook其内核在前面的文章里面有详细介绍
脱壳因其jit层内核的漏洞可以用简单的方式还原方法体Hook Jit 后可以简单的进行方法体还原完成单个方法的脱壳
把每个方法都脱一面填回文件即可
Net Reactor
一款很特别的net加密壳它有两种模式 application 和 library
第一种模式 是程序整体加密然后创建一个native的loader整体加密的脱壳很简单dump 内存即可
第二种模式 加密后的程序集也要带一个native的dll和maxtocode一样加了很多静态构造函数一个startup函数
但是在 startup函数调用后即完成了程序集的全部原地解密所以运行后直接dump内存就可以了
脱壳直接pe dump
CliProtector 一款jit层的加密壳大概是去年年底发现的当时我在进行DNGuard的开发经分析后发现其内核模式和当时DNGuard 的jit层内核很相似分析后不久就发现了其jit层内核处理的一个漏洞可以用简单的方式还原方法体也就是最近在maxtocode 企业版中发现的那个在我的DNGuard 中对这个漏洞进行了预防处理
个人感觉其模式兼容性比maxtocode 企业版要好只是可惜它除了有jit层漏洞还偷了赖IL代码没有加密和我出的dnguard demo一样只是把 il搬了一下位置没有加密不过对于jit层脱壳来说加不加密倒无所谓了但这样可能导致破解者从另一个角度去脱壳了
特点单方法体解密
脱壳Jit hook简单方法体还原 同maxtocode企业版的脱壳方式
方法二分析其加密文件结构直接还原(因其il代码没有加密可以不用考虑解密算法的研究)
themida Net
themida 是win的一个强壳它支持 Net的加密其加密方式是整体加密但是凭借其win anti的优势相比其它整体加密的加密工具来说强度要高一点不过也就仅仅那么一点
脱壳过antipe dump
xenocode native compiler
xenocode 的专长是混淆保护不过它也提供了一个所谓的生成本地代码的功能其生成本地代码其实就是把 程序集打包创建一个native loader但是它的打包把framework都包进去了也就是说打包后的程序可以在没有安装framework的机器上直接运行代价是生成的文件体积非常大因为它把十几兆的framework包进去了
脱壳直接pe dump
方法二分析其打包的文件格式直接解包(已有工具)
DNGuard 内核模式同 maxtocode x脱壳方式也雷同
DNGuard Jit层内核同maxtocode 企业版和CLIProtector相比少了一个漏洞不能用简单方式还原方法体
如果破解者对jit内核工作非常熟悉也能从jit层的结构体中重构出方法体
脱壳Jit hook 结构体重构模式
总结 以上除了 maxtocode x DNGuard CLiProtector 外其它工具加密的程序都存在profile漏洞可以通过profile获取代码
综合兼容性和强度 CLiProtector 和 maxtocode 企业版 要好一些
DNGuard 的强度好一些兼容性比较差就只支持 v 的framework
DNGuard新版已经开始采用兼容全部framework的模式了
上面的所有工具加密的程序集都可以直接在jit层中截获 IL字节码 IL字节码不是方法体它是方法体的一部分
只取得il字节码无法完成脱壳工作但是已可反为MSIL汇编代码进行算法分析了
DNGuard HVM的目标就是不让jit层截获可分析的IL字节码