(Unity)Unity自定義Debug日志文件,利用VS生成Dll文件並使用Dotfuscated進展混淆,避免被反編譯


Unity自定義Debug日志文件,利用VS生成Dll文件並使用Dotfuscated進行混淆,避免被反編譯。

1、打開VS,博主所用版本是Visual Studio 2013。

2、新建一個VC項目,選擇類庫,取名為JefferyChan,具體步驟如下圖:

新建項目圖片

3、因為要調用Unity中的相關文件,所以這里要引入外部文件。首先在Unity的安裝文件夾中找到UnityEngine.dll,我的路徑是:D:\Program Files (x86)\Unity\Editor\Data\Managed 
如下圖所示:

找到UnityEngine.dll文件

4、將UnityEngine.dll引入到項目中,如下圖: 
打開項目,然后打開VS的視圖->解決方案管理器

打開解決方案管理器

5、項目文件下的引用上面單擊鼠標右鍵,引用->添加引用,引入外部文件,如下圖所示:

添加引用

6,編輯需要編譯的C#類文件,博主這里寫的是個自定義日志輸出文件,具體代碼如下:

using System.Collections;
using UnityEngine;

/** * * 新建一個命名空間 用於保存自己定義的一些公用方法 * * **/ namespace JefferyChan { /** * * 新建一個JefferyLog類用於輸出調試日志 * **/ public class JefferyLog { //定義一個標志 用於控制是否輸出日志 static public bool EnableLog = true; /** * 打印日志 但是沒有傳遞打印日志對應的組件 * **/ static public void Log(object message) { Log(message, null); } /** * 打印日志 並顯示打印日志對應的組件 * **/ static public void Log(object message, Object context) { if (EnableLog) { //message為打印的信息,context為打印信息對應的組件 Debug.Log(message, context); } } /** * 打印出錯日志 但是沒有傳遞打印日志對應的組件 * **/ static public void LogError(object message) { LogError(message, null); } /** * 打印出錯日志 並顯示打印日志對應的組件 * **/ static public void LogError(object message, Object context) { if (EnableLog) { Debug.LogError(message, context); } } /** * 打印警告日志 但是並不打印出具體的警告內容 * **/ static public void LogWarning(object message) { LogWarning(message, null); } /** * 打印警告日志 並且打印出警告內容 * **/ static public void LogWarning(object message, Object context) { if (EnableLog) { Debug.LogWarning(message, context); } } } } 

7、編譯項目,生成dll文件,如下圖所示:

編譯項目

8、找到生成的dll文件,文件路徑為:“項目路徑”->bin->Debug->JefferyChan.dll,如下圖所示:

找到dll文件

9、此時的dll文件用Reflector打開,發現反編譯出來的代碼和原始的代碼幾乎是一樣的,如下圖所示:

編譯原始文件

10、使用Dotfuscated對生成的JefferyChan.dll文件進行混淆,如下圖所示:

進行混淆

點擊生成按鈕,進行混淆。

進行混淆

11、再次反編譯混淆后的代碼,發現無法進行反編譯,如下圖所示:

這里寫圖片描述

Dotfuscated是VS自帶的,它存在於VS的安裝目錄下:D:\Program Files (x86)\Microsoft Visual Studio 12.0\PreEmptive Solutions\Dotfuscator and Analytics Community Edition

如下圖所示:

這里寫圖片描述

備注: 
將項目屬性 -> 應用程序 -> 目標框架:改為 .NET Framework 3.5或以下 。這一步很重要,因為Unity3D(當前的Unity3D版本是3.5版) 支持的 .Net 是3.5版。

如果選擇的是4.0版會出現

Internal compiler error. See the console log for more information. output was:Unhandled Exception: System.TypeLoadException: Could not load type ‘System.Runtime.Versioning.

如下圖所示:

.net版本

Reflector下載鏈接:http://pan.baidu.com/s/1o6KH9xw。


免責聲明!

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



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