C#使用Dotfuscator混淆代碼以及加密

C#編寫的代碼若是不進行必定程度的混淆和加密,那麼是很是容易被反編譯進行破解的,特別是對於一些商業用途的C#軟件來講,由於盯着的人多,更是極易被攻破。使用Dotfuscator能夠實現混淆代碼、變量名修改、字符串加密等功能。html

這裏介紹的是DotfuscatorPro_4.9.7750_2.0 版本,有須要的能夠到網上搜索下載https://skydrive.live.com/?cid=d2b11227abf128d8&id=D2B11227ABF128D8%21104。安裝 Dotfuscator 好 打開界面,有幾個須要配置的地方: Options、Input、Rename、String Encryption、Build,其餘的默認便可,下面一一講解。函數

 

 

 

    Settings->Global Options 這是全局配置選項:post

     把 Disable String Encryption 設爲 NO,即啓用字符串加密;檢查 Disable Control flow、Dsiable Renaming 也爲 NO,即保證控制流和混淆功能打開,其餘默認。以下圖:ui

 

    Input 選項裏 選擇你須要混淆加密的 dll、exe文件,其中Library不要勾選,不然有些類、變量等等不會混淆;加密

             

    Rename 選項 勾選「use enhanced overload induction」(使用加強模式),注意:不要勾選下方的「 Do not suppress on serializable types」,即序列化類型的變量不加密,不然編譯後可能異常; 「Renaming Scheme」 選擇「Unprintable」(不可打印字符,即亂碼),也能夠選擇其餘如小寫字母、大寫字符、數字的方式。以下圖:url

 

    String Encryption 選項 include裏勾選須要字符串加密的工程文件exe、dll等。spa

 

    Settings->Build Settings 選項 設置輸出目標文件夾,點擊上方的按鈕便可從新生成新的 exe、dll文件了。code

 

    好了,咱們來看一下加密混淆後的效果:htm

 

   原來的代碼:blog

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static readonly int A = B * 10;
        static readonly int B = 10;
        //const int A = B * 10;
        //const int B = 10;

        public static void Main(string[] args)
        {
            Person p = new Person();            
            Console.WriteLine("A is {0},B is {1} ", A, B);
        }
    }

    public class Person
    {
        static int age;
    }

}

    通過Dotfuscator混淆加密後,咱們使用著名的反編譯軟件 Reflector 來查看,能夠發現函數體內的代碼已經看不到了,字符串也變成了亂碼,函數名稱也不可見了,效果圖以下:

 

    【使用Dotfuscator混淆的幾個注意點】:
一、若是你加密的dll、exe裏有public類,須要被外部引用的話,那麼引用這個public的相關dll、exe也要一塊兒放到Dotfuscator Input 裏,同時進行混淆加密,否則外部調用出錯。
二、若是有public類,可是你不想照着第1點的方式作的話,能夠勾選 Library 模式(input 裏 展開項目,見下圖),或者不選擇 rename 選項,僅僅用 control flow 混淆(該種方式下會看見類名、函數名,可是看不到函數體)。

C#使用Dotfuscator混淆代碼的加密方法


三、若是有public類,可是你也不想按照個人第一點、第二點的方法作的話,能夠在rename選項裏排除這些public的類名、方法名、屬性名便可:使用 rename exclude 裏左側排除項目,或 右側 正則排除方法,見下圖:

C#使用Dotfuscator混淆代碼的加密方法 

    固然,軟件世界沒有不能破解的,可是利用Dotfuscator混淆加密後 至少能夠擋住很多新手們!

做者:flymorn
來源:flymorn
版權全部。轉載時必須以連接形式註明做者和原始出處及本聲明。

相關文章
相關標籤/搜索