最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#項目使用obfuscar混淆實踐

 更新時間:2025年12月24日 10:04:25   作者:Thinbug  
文章介紹了如何使用Obfuscar混淆C#代碼,包括安裝Obfuscar、配置混淆設(shè)置文件、設(shè)置編譯事件調(diào)用批處理文件以及注意事項,通過這些步驟,每次編譯Release版本時,代碼都會自動混淆,提高安全性

obfuscar 可以混淆C#代碼。

在項目中我們通過NuGet安裝obfuscar包。

安裝obfuscar

VS里點擊解決方案,然后搜索,點擊安裝。

設(shè)置混淆xml

然后需要編譯一個混淆設(shè)置文件obfuscar.xml,放在項目目錄中。

<?xml version='1.0'?>
<Obfuscator>
	<!-- 輸入的工作路徑,采用如約定的 Windows 下的路徑表示法,如以下表示當前工作路徑 -->
	<!-- 推薦使用當前工作路徑,因為 DLL 的混淆過程,需要找到 DLL 的所有依賴。剛好當前工作路徑下,基本都能滿足條件 -->
	<Var name="InPath" value=".\bin\Release" />
	<!-- 混淆之后的輸出路徑,如下面代碼,設(shè)置為當前工作路徑下的 Obfuscar 文件夾 -->
	<!-- 混淆完成之后的新 DLL 將會存放在此文件夾里 -->
	<Var name="OutPath" value=".\bin\Obfuscar" />
	<!-- 以下的都是細節(jié)的配置,配置如何進行混淆 -->

	<!-- 使用 KeepPublicApi 配置是否保持公開的 API 不進行混淆簽名,如公開的類型公開的方法等等,就不進行混淆簽名了 -->
	<!-- 語法的寫法就是 name 表示某個開關(guān),而 value 表示值 -->
	<!-- 對于大部分的庫來說,設(shè)置公開的 API 不進行混淆是符合預(yù)期的 -->
	<Var name="KeepPublicApi" value="true" />
	<!-- 設(shè)置 HidePrivateApi 為 true 表示,對于私有的 API 進行隱藏,隱藏也就是混淆的意思 -->
	<!-- 可以通過后續(xù)的配置,設(shè)置混淆的方式,例如使用 ABC 字符替換,或者使用不可見的 Unicode 代替 -->
	<Var name="HidePrivateApi" value="true" />
	<!-- 設(shè)置 HideStrings 為 true 可以設(shè)置是否將使用的字符串進行二次編碼 -->
	<!-- 由于進行二次編碼,將會稍微傷一點點性能,二次編碼需要在運行的時候,調(diào)用 Encoding 進行轉(zhuǎn)換為字符串 -->
	<Var name="HideStrings" value="true" />
	<!-- 設(shè)置 UseUnicodeNames 為 true 表示使用不可見的 Unicode 字符代替原有的命名,通過此配置,可以讓反編譯看到的類和命名空間和成員等內(nèi)容都是不可見的字符 -->
	<!-- 設(shè)置 UseUnicodeNames 為 true 可能在捕獲異常的時候出現(xiàn)問題,不建議開 -->
	<Var name="UseUnicodeNames" value="false" />
	<!-- 設(shè)置 UseKoreanNames 為 true 使用韓文字 -->
	<Var name="UseKoreanNames" value="true" />
	<!-- 是否復(fù)用命名,設(shè)置為 true 的時候,將會復(fù)用命名,如在不同的類型里面,對字段進行混淆,那么不同的類型的字段可以是重名的 -->
	<!-- 設(shè)置為 false 的時候,全局將不會有重復(fù)的命名 -->
	<Var name="ReuseNames" value="true" />
	<!-- 配置是否需要重命名字段,默認配置了 HidePrivateApi 為 true 將都會打開重命名字段,因此這個配置的存在只是用來配置為 false 表示不要重命名字段 -->
	<Var name="RenameFields" value="true" />
	<!-- 是否需要重新生成調(diào)試信息,生成 PDB 符號文件 -->
	<Var name="RegenerateDebugInfo" value="false" />

	<Var name="OptimizeMethods" value="true"/>

	<Var name="SuppressIldasm" value="false"/>

	<!-- 需要進行混淆的程序集,可以傳入很多個,如傳入一排排 -->
	<!-- <Module file="$(InPath)\Lib1.dll" /> -->
	<!-- <Module file="$(InPath)\Lib2.dll" /> -->
	<Module file="$(InPath)\MyApp.exe">
		<!--SkipType跳過指定的類 Program是Main所在的類名-->
		<!--<SkipType name="Program"  />-->
		<!--SkipMethod 跳過指定的方法-->
		<!--<SkipMethod type="Program" name="Main"/>-->
	</Module>
	
	

	<!-- 程序集的引用加載路徑,對于 dotnet 6 應(yīng)用,特別是 WPF 或 WinForms 項目,是需要特別指定引用加載路徑的 -->
	<!-- 這里有一個小的需要敲黑板的知識點,應(yīng)該讓 Microsoft.WindowsDesktop.App 放在 Microsoft.NETCore.App 之前 -->
	<!-- 對于部分項目,如果沒有找到如下順序,將會在混淆過程中,將某些程序集解析為舊版本,從而失敗 -->
	<!--<AssemblySearchPath path="C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\6.0.1\" />
	<AssemblySearchPath path="C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.1\" />-->
</Obfuscator>

Module里配置要混淆的exe或者Dll。

編譯自動混淆

然后我們寫一個批處理,在編譯完成時候調(diào)用。 這里注意版本號和路徑

echo 批處理開始混淆和拷貝發(fā)布程序

cd E:\Github\MyAppConsole\MyApp\MyApp
..\packages\Obfuscar.2.2.49\tools\Obfuscar.Console.exe .\obfuscar.xml
echo 混淆結(jié)束

我們在項目生成事件里調(diào)用這個bat文件。

這樣我們每次編譯release就可以自動混淆了。

注意事項

因為混淆會修改函數(shù)名字,所以要注意一些反射或者按照字符串反射函數(shù)或者變量的地方,這些地方要排除掉,還有使用Json讀取等反射,需要標記[Serializable]

[Serializable]
public class ShopInfo
{
    public string id;
    public string ver_url;
}

這樣就混淆成功了,我們可以使用dnSpy軟件來看我們混淆后的代碼。

基本上這樣就沒什么可閱讀性了。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Unity實現(xiàn)簡單虛擬搖桿

    Unity實現(xiàn)簡單虛擬搖桿

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)簡單虛擬搖桿,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#實現(xiàn)把dgv里的數(shù)據(jù)完整的復(fù)制到一張內(nèi)存表的方法

    C#實現(xiàn)把dgv里的數(shù)據(jù)完整的復(fù)制到一張內(nèi)存表的方法

    這篇文章主要介紹了C#實現(xiàn)把dgv里的數(shù)據(jù)完整的復(fù)制到一張內(nèi)存表的方法,需要的朋友可以參考下
    2014-08-08
  • C#、ASP.NET通用擴展工具類之TypeParse

    C#、ASP.NET通用擴展工具類之TypeParse

    這篇文章主要介紹了C#、ASP.NET通用擴展工具類之TypeParse,使用了此類,類型轉(zhuǎn)換方便多了,本文直接給出實現(xiàn)代碼和使用方法,需要的朋友可以參考下
    2015-06-06
  • C#利用Spire.XLS for .NET將Excel轉(zhuǎn)換為HTML格式

    C#利用Spire.XLS for .NET將Excel轉(zhuǎn)換為HTML格式

    在數(shù)字化浪潮中,數(shù)據(jù)是核心,而Excel作為最常用的數(shù)據(jù)管理工具之一,其生成的報表、統(tǒng)計數(shù)據(jù)等常常需要發(fā)布到Web平臺,供用戶在線瀏覽或集成進Web應(yīng)用,今天,我們將借助Spire.XLS庫,快速實現(xiàn)Excel到HTML的精準轉(zhuǎn)換,需要的朋友可以參考下
    2025-10-10
  • c# 實現(xiàn)漢諾塔游戲

    c# 實現(xiàn)漢諾塔游戲

    這篇文章主要介紹了c# 實現(xiàn)漢諾塔游戲的示例,幫助大家更好的理解和使用c# 編程語言,感興趣的朋友可以了解下
    2020-11-11
  • Unity游戲開發(fā)之射擊小游戲的實現(xiàn)

    Unity游戲開發(fā)之射擊小游戲的實現(xiàn)

    本篇文章為大家?guī)硪粋€橫版2D射擊小游戲,游戲制作超級簡單,玩法一學(xué)就會。文中的示例代碼講解詳細,快跟隨小編一起動手試一試
    2022-03-03
  • 詳解WPF中值轉(zhuǎn)換器的使用方法

    詳解WPF中值轉(zhuǎn)換器的使用方法

    在WPF(Windows Presentation Foundation)中,值轉(zhuǎn)換器(Value Converter)是一種機制,允許你在綁定時轉(zhuǎn)換綁定源和綁定目標之間的值,本文給大家介紹了WPF中值轉(zhuǎn)換器的使用方法,需要的朋友可以參考下
    2024-02-02
  • c#強制類型轉(zhuǎn)換int方式

    c#強制類型轉(zhuǎn)換int方式

    這篇文章主要介紹了c#強制類型轉(zhuǎn)換int方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • C#實現(xiàn)工廠方法模式

    C#實現(xiàn)工廠方法模式

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

    WPF利用RichTextBox實現(xiàn)富文本編輯器

    在實際應(yīng)用中,富文本隨處可見,那么在WPF開發(fā)中,如何實現(xiàn)富文本編輯呢?本文以一個簡單的小例子,簡述如何通過RichTextBox實現(xiàn)富文本編輯功能,需要的可以參考下
    2024-02-02

最新評論

衡山县| 阿尔山市| 镶黄旗| 贵港市| 青川县| 南华县| 江阴市| 祁门县| 金华市| 宾川县| 五峰| 宜兰市| 遵化市| 沐川县| 吉首市| 曲沃县| 靖边县| 若尔盖县| 鄢陵县| 文化| 富民县| 桓台县| 大洼县| 广水市| 巴彦淖尔市| 泰和县| 曲阳县| 边坝县| 大洼县| 博罗县| 阿合奇县| 安康市| 阜城县| 德惠市| 龙口市| 东兴市| 尼木县| 泾川县| 当涂县| 德昌县| 会泽县|