zoukankan      html  css  js  c++  java
  • 使用VS2013自带的PreEmptive Dotfuscator and Analytis来混淆C#代码

    1. 使用VS2013编译你要打包的程序,会在文件夹中的 ..inRelease中

    2. 点击VS2013中的TOOLS -> PreEmptive Dotfuscator and Analytics :

            

             打开的界面如下图:

           

    3. 选择需要混淆的文件,一般只需要混淆 *.Dll 或 *.exe文件,

        点击界面中的 Inputs -> Inputs框下的 + 号 ->    在你程序中的Release文件夹中选择需要混淆的文件   

    4. 为了方便下次混淆,建议勾上覆盖已存在的文件,如下图:

         

    5. 然后保存文件

    6. 进行混淆,点击保存按钮 右边的 绿色三角形按键 进行混淆

        当现实的结果最后出现 百分百数字时,就表示已经混淆完毕了

    7. 特别注意:

         7.1. 如果运行混淆后的代码出现以下错误,然后程序崩溃:

                

                   7.1.1. 原因之一:程序缺少组件

                                     因为混淆时只是对Release文件夹中的*.dll , *.exe进行混淆,所以可能会导致部分文件没有拷贝到最终的文件夹中,

                            解决的方法,对比Release文件夹与混淆后的文件夹,查看是否有哪些文件没有从Release中拷贝到混淆后的目标目录中

                    7.1.2. 原因之二:程序中存在x86, x64的区分     

          7.2. 混淆后程序能够运行,但有些节目中的数据没有初始化

                 1、则需要考虑程序中是否有一些公用类没有加上public修饰符,而只是使用了默认的修饰符,导致程序不能正常初始化

              

    总结:

             Dotfuscator作为一款代码混淆的软件,具有很强的反编译功能,但使用时应注意以下几点:

             1、如果你加密的dll、exe里有public类,需要被外部引用的话,那么引用这个public的相关dll、exe也要一起放到Dotfuscator Input 里,同时进行混淆加密,不然外部调用出错。

             2、如果有public类,但是你不想照着第1点的方式做的话,可以勾选 Library 模式(input 里 展开项目,见下图),或者不选择 rename 选项,仅仅用 control flow 混淆(该种方式下会看见类名、函数名,但是看不到函数体)。

             3、如果有public类,但是你也不想按照我的第一点、第二点的方法做的话,可以在rename选项里排除这些public的类名、方法名、属性名即可:使用 rename exclude 里左侧排除项目,或 右侧 正则排除方法。

            当然如果你编写的软件不涉及商业用途的话,本着开源的思想,不推荐使用代码混淆器。使用代码混淆器存在一定的风险,在使用前最好做好相关代码备份。

  • 相关阅读:
    EasyUI基础searchbox&progressbar(搜索框,进度条)
    git 仓库
    “农民代码”讨论
    多线程和多进程之间的区别
    move_uploaded_file
    在form里面,放了四个UEditor,怎么在后台分别获取它们值
    ThinkPHP模板IF标签用法详解
    Tp框架查询分页显示与全部查询出来显示运行时间快慢有区别吗?
    百度UEditor基本使用
    织梦DedeCms获取当前页面URL地址的调用方法
  • 原文地址:https://www.cnblogs.com/czhelp/p/8430619.html
Copyright © 2011-2022 走看看