.net 混淆器,网上搜寻了很多款,比如Dotfuscator、xeoncode、foxit等等。但大部分收费,当然也有破解版的,github上找到一个ConfuserEx,开源地址:https://github.com/yck1509/ConfuserEx
混淆加壳以及脱壳,反编译工具常用如下:ConfuserEx、UnConfuserEx、Fixer、ConfuserExStringDecryptor、ConfuserExSwitchKiller、de4dot、ILSpy
1、新建一个C#类库,ConfuserTest_Library,以及一个控制台程序ConfuserTest_HelloWorld
//控制台程序 using ConfuserTest_Library; using System; namespace ConfuserTest_HelloWorld { class Program { static void Main(string[] args) { Console.WriteLine(new HelloWorld("ConfuserEx")); Console.ReadKey(); } } } //测试用类库 using System; namespace ConfuserTest_Library { public class HelloWorld { private string _i_am_Who = string.Empty; public HelloWorld(string i_am_Who) { _i_am_Who = i_am_Who; } public override string ToString() { return $"Hello World! I\'m {_i_am_Who}"; } } }
编译后,用Reflector打开ConfuserTest_HelloWorld.exe,毋庸置疑,可以看到源码,如下图:
2,现在我们用ConfuserEx混淆一下试试:
下载ConfuserEx后解压,打开ConfuserEx.exe,把ConfuserTest_HelloWorld.exe(此处注意,拖进来的文件的路径应该是普通用户有访问权限的路径)拖进来,如下图:
点击Settings
(1)选择Packer,(个人理解输出可执行包,不准确,因为单独打包类库,选择这个则报错)
(2)Modules->选择ConfuserTest_HelloWorld.exe
(3) Rules 点击+号,true
如下图:
击Protest!->Protect! ,提示导出成功(Confused目录下),
在用ILspy打开ConfuserTest_HelloWorld.exe查看
3、如果只是混淆exe文件,这样就可以了,如果混淆整个项目,则把ConfuserTest_HelloWorld.exe,ConfuserTest_Library.dll都拖进来
这时,混淆后就只有一个ConfuserTest_HelloWorld.exe文件了,但是,点击运行时正常运行的,confuserEx是把两个文件给合并了,可以看出ConfuserTest_HelloWorld.exe由原来的5k增加到了18k
4.如果我们只需要混淆某一个dll,这时如果在Settings上选中Packer则报“No executable module!”没有执行模块错误,所以单独选择dll混淆时,不要选择Packer。
另外,在设置规则Rules时,还可以编辑选项,如下: