C#_混淆/反混淆,逆向/反逆向之Dotfuscator


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

 

    飄易使用的是 Dotfuscator 4.2 PRO 版本,有需要的可以到網上搜索下載 Dotfuscator Professional Edition 4.9破解版本。安裝 Dotfuscator 好 打開界面,有幾個需要配置的地方: Options、Input、Rename、String Encryption、Build,其他的默認即可,下面飄易一一講解。

 

 Dotfuscator

 

    Options 選項 這是全局配置選項:
    把 Disable String Encryption 設為 NO,即啟用字符串加密;檢查 Disable Control flow、Dsiable Renaming 也為 NO,即保證控制流和混淆功能打開,其他默認。如下圖:

 Dotfuscator Options

 

    Input 選項里 選擇你需要混淆加密的 dll、exe文件,參考第一幅圖;

 

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

Dotfuscator Rename

 

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

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

 

    Build 選項 設置輸出目標文件夾,點擊下方的 “Build”按鈕即可重新生成新的 exe、dll文件了。

Dotfuscator Build

 

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

 

   原來的代碼:

        string tt = "fm";
        bool vip = false;

 

        private void Form1_Load(object sender, EventArgs e)
        {
            richTextBox1.Text = "start";
        }

 

        private void button1_Click(object sender, EventArgs e)
        {
            richTextBox1.Text = "button1 Clicked";
            vip = true;
            richTextBox1.Text += vip.ToString();
        }

 

    經過Dotfuscator混淆加密后,我們使用著名的反編譯軟件 Reflector 來查看,可以發現函數體內的代碼已經看不到了,提示:“  This item is obfuscated and can not be translated.”;字符串也變成了亂碼,函數名稱也不可見了,效果圖如下:

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

 

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

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


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

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

 

    這里有一篇其他網友寫的用Dotfuscator 混淆asp.net程序實踐心得,可以參考閱讀。

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM