今天给你们介绍一个开源.net混淆器——ConfuserExgit
http://yck1509.github.io/ConfuserEx/github
因为项目中要用到.net 混淆器,网上搜寻了不少款,好比Dotfuscator、xeoncode、foxit等等。测试
但大部分收费,固然也有破解版的,公司要求不能用盗版软件。spa
找了半天终于找到了ConfuserEX,用起来还行,就赶忙拿出来给你们分享下。.net
下载地址:https://github.com/yck1509/ConfuserEx/releases3d
因为网上中文介绍的比较少,我这里作个测试,给你们演示一下:code
编译后,用ILSpy打开ConsoleTest.exe,毋庸置疑,能够看到源码,以下图:blog
下载ConfuserEx后解压,打开ConfuserEx.exe,以下图:input
那就把刚才的ConsoleTest.exe托进来吧,以下图:源码
选择Packer
Modules->ConsoleTest.exe
Rules 点击+号,true
以下图:
方法是空的,把ConsoleTest.exe依赖的 ClassLibrary1.dll 拷贝到Confused目录下,点击运行ConsoleTest.exe,输出正确结果。
注意
错误:No executable module,没有执行体?
是否是没有exe文件呢? 咱们把ConsoleTest.exe也放进来和ClassLibrary1.dll一块儿混淆,看看。
以下图:
提示成功。
是否是不能混淆dll文件呢?
别着急,咱们点击ConsoleTest.exe试试,哎呀,我去,居然运行成功了,以下图:
这里惟一解释就是ConfuserEx把dll嵌入到exe里面了。
如今混淆过的ConsoleTest.exe是17KB,而原来的ConsoleTest.exe是5KB,ClassLibrary1.dll也是5KB。
看不到方法体,也看不到所引用的dll文件。
好了,今天就到这里。
附加:因为中午没找到单独混淆dll的方法,下午 @四毛的家 这位同窗找到了方法,我这里再附加上如何单独混淆dll。
根据第8步,咱们发现按照exe的方式混淆dll时报错了,原来应该按以下步骤:
将dll拖入ConfuserEx后,Settings里面不能选择Packer了,而是要点击右侧那个铅笔按钮,以下图。
点击铅笔按钮后,弹出Edit rule对话框,Preset选择一项,我这里选择Maximum,而后再点击下面 "+"按钮,选择anti ildasm(我猜是防止经过IL编译),而后导出成功。
咱们在用ILSpy查看一下刚混淆的ClassLibrary1.dll,以下图,
什么都看不到。
为了测试混淆过的dll可用,我把未混淆的ConsoleTest.exe和混淆过的ClassLibrary1.dll放在一个目录下,点击运行ConsoleTest.exe,成功。
后记:在混淆dll时,有不少混淆规则,咱们能够按照本身的方式混淆。其实那些规则是什么,我也不知道,有心的同窗试试。