zoukankan      html  css  js  c++  java
  • 开源.net 混淆器ConfuserEx介绍

    原文地址:https://www.cnblogs.com/zhangzhi19861216/p/3937434.html

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

    http://yck1509.github.io/ConfuserEx/

    由于项目中要用到.net 混淆器,网上搜寻了很多款,比如Dotfuscator、xeoncode、foxit等等。

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

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

    下载地址:https://github.com/yck1509/ConfuserEx/releases

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

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

    复制代码
     public class Class1
        {
            public string test()
            {
                return "2";
            }
        }
    复制代码

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

    复制代码
    static void Main(string[] args)
            {
                ClassLibrary1.Class1 c = new ClassLibrary1.Class1();
                Console.WriteLine(c.test());
                Console.ReadLine();
    
            }
    复制代码

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

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

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

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

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

    5、点击Settings

    (1)选择Packer

    (2)Modules->ConsoleTest.exe

     (3) Rules 点击+号,true

     如下图:

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

     

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

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

    注意

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

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

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

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

    如下图:

    提示成功。

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

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

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

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

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

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

     

    看不到方法体,也看不到所引用的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时,有很多混淆规则,我们可以按照自己的方式混淆。其实那些规则是什么,我也不知道,有心的同学试试。

    再次感谢@四毛的家。

  • 相关阅读:
    [模板] 循环数组的最大子段和
    [最短路][几何][牛客] [国庆集训派对1]-L-New Game
    [洛谷] P1866 编号
    1115 Counting Nodes in a BST (30 分)
    1106 Lowest Price in Supply Chain (25 分)
    1094 The Largest Generation (25 分)
    1090 Highest Price in Supply Chain (25 分)
    树的遍历
    1086 Tree Traversals Again (25 分)
    1079 Total Sales of Supply Chain (25 分 树
  • 原文地址:https://www.cnblogs.com/lzhu/p/10778387.html
Copyright © 2011-2022 走看看