C#混淆 xenocode使用说明2010-01-18 06:391、澄清:是混淆,不是加密,混淆!=加密
2、导入要加密的dot
NET程序或assembly文件(.dll/.exe)
3、选择第二个选项卡“Protect”
4、点击“Select Pattern”
5、选中所有“Object Type”和所有“Visiblility”
6、“Action”选择“Do not obfuscate”,Apply,把所有的内容都设为不进行混淆
7、“Action”选择“Obfuscate”,“Visibility”只选择“Private”,Apply (默认情况下已经是这样了,注意不要把选择public或是自己在上面选,否则在用的时候会出现不能加载的错误)
8、右下角按下“XenoCode Assemblies”,导出混淆后的文件
用法二:
1、选中Application标签
2、点击Add按钮,加载要混淆的Dll、Exe文件
3、如果是Dll文件则选中Preset
列表框中的第二项,反之选中第一项
4、点击Apply按钮
5、选中Protect标签
6、选中Supress other reflection tools复选框
7、点击Select String按钮进行设置
8、点击XenoCode按钮完成混淆工作
9、再换一个文件进行混合到全部文件混淆完毕为止!
本文主要介绍一些dotNet加密保护工具的原理以及就其脱壳进行简单探讨。remotesoft protector、maxtocode、.Net Reactor、Cliprotector 、themida .Net、xenocode native compiler、DNGuard。
remotesoft protector
应该是一款比较老的。net加密保护工具了,看其官方网站似乎还是06年更新过。该软件没有提供试用版下载,相关资料比较少。去年接触过一个该
软件保护的.Net程序。加密后的程序发布时需要附带native 的 dll。 这款壳可以算是jit层的壳,是jit wrap 模式,通过hook getJit函数,拦截 jit 请求。在每次发生jit请求时其运行库会将加密的程序集完全“原地” 解密还原。
特点:整体解密
脱壳:拦截地层jit请求,然后中断。这时程序集已经完全解密,直接pe dump就行了。
maxtocode
这个大家应该比较熟悉了,和 remotesoft protector 应该时前后脚起步的关系吧。其1.x,2.x,3.1x和3.2内核有很大差别。
特点:单方法体解密
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函数调用后,即完成了程序集的全部