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

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

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

一、需求

C# 項(xiàng)目生成 dll,在反編譯工具下,好比皇帝的新裝,dll 內(nèi)部的代碼看的一清二楚,在這里推薦一個(gè)工具ConfuserEx,可以給C#代碼混淆,甚至 exe 文件都可以加密,軟件是免費(fèi)開(kāi)源的,但是,目前已經(jīng)停止維護(hù),并且不支持最新的 .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.符號(hào)重命名(支持 WPF/BAML)
3.防止調(diào)試器/分析器
4.防止內(nèi)存轉(zhuǎn)儲(chǔ)
5.防止篡改(方法加密)
6.控制流混淆
7.常量/資源加密
8.引用隱藏代理
9.禁用反編譯器
10.嵌入依賴(lài)
11.壓縮輸出
12.可擴(kuò)展的插件 API

二、用法

1.新建C#項(xiàng)目

新建一個(gè)基于 .NET Framework  的類(lèi)庫(kù)項(xiàng)目,就用默認(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");
        }
    }
}

添加完代碼后,點(diǎn)擊生成,我們用工具 dnSpy 打開(kāi)這個(gè) dll 看看

代碼一覽無(wú)余 ,下面我們就開(kāi)始加密這個(gè) dll

2.開(kāi)始加密

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

3.常見(jiàn)的錯(cuò)誤

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

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

另外,如果使用 .NET6 類(lèi)庫(kù),在導(dǎo)出的時(shí)候也會(huì)報(bào)下面的錯(cuò)誤:

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

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

開(kāi)始添加加密規(guī)則

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

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

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

選擇 Protect 選項(xiàng),點(diǎn)擊 Protect 按鈕

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

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

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

新建一個(gè) .NET Framework 的控制臺(tái)項(xiàng)目,將加密的 dll,放入項(xiàng)目的 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();
            //獲取類(lèi)名
            Type type = types.Where(arg => arg.Name.Equals("Class1")).FirstOrDefault();
            //獲取方法名
            MethodInfo methodInfo = type.GetMethod("Test");
            //方法無(wú)參數(shù)的話
            methodInfo.Invoke(null, null);
 
            //如果方法有參數(shù)的話,下面的 value 是返回值,沒(méi)用返回值則返回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();
        }
    }
}

運(yùn)行:

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

相關(guān)文章

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

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

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

    C#實(shí)現(xiàn)簡(jiǎn)單工廠模式

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

    大白話講解C# 中的委托

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

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

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

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

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

    在類(lèi)庫(kù)或winform項(xiàng)目中打開(kāi)另一個(gè)winform項(xiàng)目窗體的方法

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

    c# 遍歷 Dictionary的四種方式

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

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

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

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

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

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

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

最新評(píng)論