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

來源:互聯網
上載者:User

標籤:over   on()   rar   控制   tin   工程檔案   read   http   settings   

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

C#編寫的代碼如果不進行一定程度的混淆和加密,那麼是非常容易被反編譯進行破解的,特別是對於一些商業用途的C#軟體來說,因為盯著的人多,更是極易被攻破。使用Dotfuscator可以實現混淆代碼、變數名修改、字串加密等功能。

這裡介紹的是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 這是全域配置選項:

     把 Disable String Encryption 設為 NO,即啟用字串加密;檢查 Disable Control flow、Dsiable Renaming 也為 NO,即保證控制流程和混淆功能開啟,其他預設。如:

 

    Input 選項裡 選擇你需要混淆加密的 dll、exe檔案,其中Library不要勾選,否則有些類、變數等等不會混淆;

             

    Rename 選項 勾選“use enhanced overload induction”(使用增強模式),注意:不要勾選下方的“ Do not suppress on serializable types”,即序列化類別型的變數不加密,否則編譯後可能異常; “Renaming Scheme” 選擇“Unprintable”(不可列印字元,即亂碼),也可以選擇其他如小寫字母、大寫字元、數位方式。如:

 

    String Encryption 選項 include裡勾選需要字串加密的工程檔案exe、dll等。

 

    Settings->Build Settings 選項 設定輸出目標檔案夾,點擊上方的按鈕即可重建新的 exe、dll檔案了。

 

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

 

   原來的代碼:

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混淆的幾個注意點】:
1、如果你加密的dll、exe裡有public類,需要被外部參考的話,那麼引用這個public的相關dll、exe也要一起放到Dotfuscator Input 裡,同時進行混淆加密,不然外部調用出錯。
2、如果有public類,但是你不想照著第1點的方式做的話,可以勾選 Library 模式(input 裡 展開項目,見),或者不選擇 rename 選項,僅僅用 control flow 混淆(該種方式下會看見類名、函數名,但是看不到函數體)。


3、如果有public類,但是你也不想按照我的第一點、第二點的方法做的話,可以在rename選項裡排除這些public的類名、方法名、屬性名稱即可:使用 rename exclude 裡左側排除項目,或 右側 正則排除方法,見:

 

    當然,軟體世界沒有不能破解的,但是利用Dotfuscator混淆加密後 至少可以擋住不少新手們!

flymorn
來源:flymorn
著作權。轉載時必須以連結形式註明作者和原始出處及本聲明。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.