架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8393|回复: 3

今天给大家介绍一个开源.net混淆器——ConfuserEx

[复制链接]
发表于 2016-1-5 23:28:23 | 显示全部楼层 |阅读模式
由于项目中要用到.net 混淆器,网上搜寻了很多款,比如Dotfuscator、xeoncode、foxit等等。

但大部分收费,当然也有破解版的,公司要求不能用盗版软件。

找了半天终于找到了ConfuserEX,用起来还行,就赶紧拿出来给大家分享下。


由于网上中文介绍的比较少,我这里做个测试,给大家演示一下:

1、新建一个C#类库,我也就不改名字了,就叫ClassLibrary1吧,在Class1.cs类下面添加一个简单方法:




2、再创建一个控制台应用程序ConsoleTest,添加引用ClassLibrary1.dll,Main方法中调用ClassLibrary1.Class1 中的test方法:






编译后,用ILSpy打开ConsoleTest.exe,毋庸置疑,可以看到源码,如下图:


5407fbe18fc45.jpg



3,现在我们用ConfuserEx混淆一下试试:

下载ConfuserEx后解压,打开ConfuserEx.exe,如下图:

5407fbea15195.jpg



4、看到提示“Drag input modules here”了吧?

那就把刚才的ConsoleTest.exe托进来吧,如下图:

5407fbed8ee95.jpg



5、点击Settings
  • 选择Packer
  • Modules->ConsoleTest.exe
  • Rules 点击+号,true


如下图:

5407fbf0b2f39.jpg



6、点击Protest!->Protect! ,提示导出成功(Confused目录下),

5407fbf3b70b4.jpg



7,用ILspy打开...Confused下的ConsoleTest.exe,看看源码:

5407fbf724955.jpg

5407fbfa20b4c.jpg



方法是空的,把ConsoleTest.exe依赖的 ClassLibrary1.dll 拷贝到Confused目录下,点击运行ConsoleTest.exe,输出正确结果。

注意

8、如果只是混淆exe文件,这样就可以了,如果只是混淆一个dll文件,你将看到如下错误:

5407fbfd4f47a.jpg



错误:No executable module,没有执行体?

是不是没有exe文件呢? 我们把ConsoleTest.exe也放进来和ClassLibrary1.dll一起混淆,看看。

9、根据前面的方式,我把ConsoleTest.exe、ClassLibrary1.dll都拖放进ConfuserEx一起混淆,

如下图:

5407fc003a72d.jpg

5407fc032129a.jpg



提示成功。

10、可是我们再次打开...Confused,发现只有混淆过的ConsoleTest.exe文件,ClassLibrary1.dll跑哪去了?

是不是不能混淆dll文件呢?

别着急,我们点击ConsoleTest.exe试试,哎呀,我去,竟然运行成功了,如下图:

5407fc06678cf.jpg



这里唯一解释就是ConfuserEx把dll嵌入到exe里面了。

现在混淆过的ConsoleTest.exe是17KB,而原来的ConsoleTest.exe是5KB,ClassLibrary1.dll也是5KB。

11、我们再用ILSpy看看同时混淆ConsoleTest.exe及ClassLibrary1.dll后生成的ConsoleTest.exe,

5407fc0a23afb.jpg



看不到方法体,也看不到所引用的dll文件。

好了,今天就到这里。

附加:由于中午没找到单独混淆dll的方法,下午 @四毛的家 这位同学找到了方法,我这里再附加上如何单独混淆dll。

根据第8步,我们发现按照exe的方式混淆dll时报错了,原来应该按如下步骤:

将dll拖入ConfuserEx后,Settings里面不能选择Packer了,而是要点击右侧那个铅笔按钮,如下图。

5407fc0d80c16.jpg



点击铅笔按钮后,弹出Edit rule对话框,Preset选择一项,我这里选择Maximum,然后再点击下面 “+”按钮,选择anti ildasm(我猜是防止通过IL编译),然后导出成功。

我们在用ILSpy查看一下刚混淆的ClassLibrary1.dll,如下图,



什么都看不到。

为了测试混淆过的dll可用,我把未混淆的ConsoleTest.exe和混淆过的ClassLibrary1.dll放在一个目录下,点击运行ConsoleTest.exe,成功。




上一篇:[亲测]c#执行存储过程并返回GUID主键
下一篇:.net混淆加壳confuserex v0.6.0汉化版使用教程
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2016-1-5 23:29:18 | 显示全部楼层
ConfuserEx 支持 .NET 框架 2.0 - 4.5 和  Mono (还有其他 .NET 框架):

Symbol 重命名
WPF/BAML 重命名
Control flow obfuscation
Method reference hiding
Anti debuggers/profilers
Anti memory dumping
Anti tampering (方法加密)
嵌入式依赖
Constant 加密
Resource 加密
Compressing 输出
扩展插件 API
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2016-1-6 01:53:46 | 显示全部楼层
感谢分享,之前一直用4.0  终于有了6.0的存在了!
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2016-1-6 07:58:20 | 显示全部楼层
山猫 发表于 2016-1-6 01:53
感谢分享,之前一直用4.0  终于有了6.0的存在了!

嗯 一起多交流.net技术哈
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-16 20:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表