欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# dll代碼混淆加密的實現(xiàn)

 更新時間:2023年02月06日 09:52:36   作者:熊思宇  
本文主要介紹了C# dll代碼混淆加密的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、需求

C# 項目生成 dll,在反編譯工具下,好比皇帝的新裝,dll 內(nèi)部的代碼看的一清二楚,在這里推薦一個工具ConfuserEx,可以給C#代碼混淆,甚至 exe 文件都可以加密,軟件是免費開源的,但是,目前已經(jīng)停止維護,并且不支持最新的 .Net6。

下載地址:

GitHub - yck1509/ConfuserEx: An open-source, free protector for .NET applications

特征:

1.支持.NET Framework 2.0/3.0/3.5/4.0/4.5
2.符號重命名(支持 WPF/BAML)
3.防止調(diào)試器/分析器
4.防止內(nèi)存轉(zhuǎn)儲
5.防止篡改(方法加密)
6.控制流混淆
7.常量/資源加密
8.引用隱藏代理
9.禁用反編譯器
10.嵌入依賴
11.壓縮輸出
12.可擴展的插件 API

二、用法

1.新建C#項目

新建一個基于 .NET Framework  的類庫項目,就用默認(rèn)添加的 class1 好了,代碼如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace 加密程序集1
{
    public class Class1
    {
        public static string User { get; set; } = "張三";
 
        public static string Password { get; set; } = "erwtyyhghdgh";
 
        public static void Test()
        {
            Console.WriteLine("f**k you");
        }
    }
}

添加完代碼后,點擊生成,我們用工具 dnSpy 打開這個 dll 看看

代碼一覽無余 ,下面我們就開始加密這個 dll

2.開始加密

打開 ConfuserEx,將 dll 拖入界面,并設(shè)置導(dǎo)出路徑,路徑我這里選擇的是桌面,和需要加密的dll放在一起。

3.常見的錯誤

我試過導(dǎo)出路徑用 D 盤,但結(jié)果發(fā)現(xiàn)報錯。

導(dǎo)出的時候,路徑就容易報這種錯誤,不知道是什么原因。

另外,如果使用 .NET6 類庫,在導(dǎo)出的時候也會報下面的錯誤:

4.添加加密規(guī)則

在完成第二節(jié)的操作后(拖入DLL,選擇導(dǎo)出路徑),接下來點擊 Settings 選項卡,按下面步驟操作:

開始添加加密規(guī)則

我這里連點五下,然后按 1-5 的順序選擇加密規(guī)則,選擇完成后,點擊 Done。

這里并不推薦使用過多的加密規(guī)則,越高混淆越強,但性能越低,兼容性也越差。

5.導(dǎo)出加密dll

選擇 Protect 選項,點擊 Protect 按鈕

如果出現(xiàn)了圖中的綠字,說明加密成功了,找到對應(yīng)的位置

用 dnSpy 打開這個加密的 DLL,可以看到,代碼已經(jīng)混淆了

6.調(diào)用加密dll

新建一個 .NET Framework 的控制臺項目,將加密的 dll,放入項目的 Debug 目錄下。

代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
 
namespace 調(diào)用加密dll
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Assembly dll = Assembly.LoadFrom("加密程序集1.dll");
            Type[] types = dll.GetTypes();
            //獲取類名
            Type type = types.Where(arg => arg.Name.Equals("Class1")).FirstOrDefault();
            //獲取方法名
            MethodInfo methodInfo = type.GetMethod("Test");
            //方法無參數(shù)的話
            methodInfo.Invoke(null, null);
 
            //如果方法有參數(shù)的話,下面的 value 是返回值,沒用返回值則返回null
            //object value = methodInfo.Invoke(null, new object[]{param1,param2});
 
            //獲取指定的屬性
            object value1 = type.GetProperty("User").GetValue(type);
            Console.WriteLine(value1);
 
            object value2 = type.GetProperty("Password").GetValue(type);
            Console.WriteLine(value2);
 
            Console.ReadKey();
        }
    }
}

運行:

到此這篇關(guān)于C# dll代碼混淆加密的實現(xiàn)的文章就介紹到這了,更多相關(guān)C# dll代碼混淆加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#比較時間大小的方法總結(jié)

    C#比較時間大小的方法總結(jié)

    在本篇內(nèi)容里小編給大家分享的是關(guān)于C#比較時間大小的方法總結(jié),對此有需要的朋友們可以學(xué)習(xí)下。
    2018-12-12
  • C#實現(xiàn)簡單工廠模式

    C#實現(xiàn)簡單工廠模式

    這篇文章介紹了C#實現(xiàn)簡單工廠模式的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 大白話講解C# 中的委托

    大白話講解C# 中的委托

    這篇文章主要介紹了C# 中的委托的相關(guān)資料,幫助初學(xué)者更好的理解和使用c#,感興趣的朋友可以了解下
    2020-11-11
  • 使用C#與SQL Server數(shù)據(jù)庫進行交互的詳細步驟

    使用C#與SQL Server數(shù)據(jù)庫進行交互的詳細步驟

    在C#中與數(shù)據(jù)庫進行交互,通常使用ADO.NET(ActiveX Data Objects .NET)框架,ADO.NET是.NET Framework中用于數(shù)據(jù)訪問的一組類庫,它提供了多種用于連接和操作數(shù)據(jù)庫的方法,以下是使用C#與SQL Server數(shù)據(jù)庫進行交互的詳細步驟,需要的朋友可以參考下
    2024-08-08
  • c# winform多線程死循環(huán)踩坑

    c# winform多線程死循環(huán)踩坑

    本文主要介紹了c# winform多線程死循環(huán)踩坑,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • 在類庫或winform項目中打開另一個winform項目窗體的方法

    在類庫或winform項目中打開另一個winform項目窗體的方法

    這篇文章主要介紹了在類庫或winform項目中打開另一個winform項目窗體的方法,可以實現(xiàn)Winform項目間窗體的調(diào)用,在進行Winform項目開發(fā)中非常具有實用價值,需要的朋友可以參考下
    2014-11-11
  • c# 遍歷 Dictionary的四種方式

    c# 遍歷 Dictionary的四種方式

    這篇文章主要介紹了c# 遍歷 Dictionary的四種方式,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-09-09
  • C#將時間轉(zhuǎn)成文件名使用方法

    C#將時間轉(zhuǎn)成文件名使用方法

    C#將時間轉(zhuǎn)成文件名用到的是DateTime類的ToFileTime方法,下面看使用方法吧
    2014-01-01
  • Winform中實現(xiàn)圖片格式轉(zhuǎn)換

    Winform中實現(xiàn)圖片格式轉(zhuǎn)換

    這篇文章主要介紹了Winform中實現(xiàn)圖片格式轉(zhuǎn)換的示例代碼,幫助大家更好的理解和使用winform開發(fā),感興趣的朋友可以了解下
    2020-12-12
  • C#并行編程之PLINQ(并行LINQ)

    C#并行編程之PLINQ(并行LINQ)

    這篇文章介紹了C#并行編程之PLINQ(并行LINQ),文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05

最新評論