常见dotNet加密保护工具分析介绍

常见dotNet加密保护工具分析介绍,第1张

 本文主要介绍一些dotNet加密保护工具的原理以及就其脱壳进行简单探讨 remotesoft protector maxtocode Net Reactor Cliprotector   themida Net xenocode native piler DNGuard           remotesoft protector      应该是一款比较老的 net加密保护工具了 看其官方网站似乎还是 年更新过 该软件没有提供试用版下载 相关资料比较少 去年接触过一个该软件保护的 Net程序 加密后的程序发布时需要附带native 的 dll  这款壳可以算是jit层的壳 是jit wrap 模式 通过hook getJit函数 拦截 jit 请求 在每次发生jit请求时其运行库会将加密的程序集完全 原地 解密还原      特点 整体解密   脱壳 拦截地层jit请求 然后中断 这时程序集已经完全解密 直接pe dump就行了           maxtocode   这个大家应该比较熟悉了 和 remotesoft protector 应该时前后脚起步的关系吧 其 x x x和 内核有很大差别   特点 单方法体解密      maxtocode x 版本没有用过 不过DST组的菩提曾经写过 maxtocode x 的脱壳机      maxtocdoe x 其内核是EE层 单方法体 原地 解密 编译之后再擦除解密的代码      脱壳 因为是 原地 解密 所以方法体代码逃不过profile的 可以在profile里面记录每个方法体 然后填充到文件中   方法二 nop 调 其内核 的擦除代码 这个不用修改其内核文件 只要还原 mscorwks dll 中其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的优势 相比其它整体加密的加密工具来说强度要高一点 不过也就仅仅那么一点      脱壳 过anti pe dump       xenocode native piler   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字节码 lishixinzhi/Article/program/net/201311/11563

dotNet Protector[1]是一款功能强大的NET代码保护系统,具有强大的反混淆功能,可以对程序反复加密 dotNet Protector是一个功能强大的NET代码保护系统,它可以防止程序集被反编译。dotNet Protector使用的是一个新的主体混淆技术保护应用程序和组件。程序集不再需要合并到一个win32可执行文件中,但是会保留其net特性。dotNet Protector 采用一个命名混淆器结合一个主体混淆器来保护您的代码。

dotNet Protector常用的保护方法 混淆

混淆主要是将原始程序集转换为更复杂难懂的程序集。一些混淆器使用ILDASM拆解程序集并且 *** 作被拆解的MSIL,然后使用ILASM重组程序集;另一些不通过ILDASM/ILASM而直接混淆,总之使程序集更复杂难懂。

潜在风险:混淆是可逆的,通过一些工具比如PvLog Deobfuscator就可以对某些程序反混淆。 加密加密通常分为两步,第一步先将源程序集加壳,第二步就将被加密后的程序集整体封装为一个可执行程序。然而,在运行时,应用程序会把程序集释放到内存中,这些在内存中的程序集都是没有被加密的。

潜在风险:被一些工具比如Windbg 或 PvLog Sniffer直接从内存中提取出程序集

Dotnet

源代码保护方案和加密工具有很多,第三方保护工具较好的厂商有:

1. Aiasted.SOFT

a)

产品

MaxtoCode

,种类

:加密、混淆

2. PerEmptive Solutions

a)

产品

Dotfuscator Community

,种类

:混淆

3. Remotesoft

a)

产品

Remotesoft Protect

,种类

:加密

b)

产品

Remotesoft Dotfuscator

,种类

:混淆

4. XenoCode

a)

产品

XenoCode

,种类:混淆


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11435434.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存