(Unity)Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进展混淆,避免被反编译
2016-09-17 22:44
633 查看
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
如下图所示:
4、将UnityEngine.dll引入到项目中,如下图:
打开项目,然后打开VS的视图->解决方案管理器
5、项目文件下的引用上面单击鼠标右键,引用->添加引用,引入外部文件,如下图所示:
6,编辑需要编译的C#类文件,博主这里写的是个自定义日志输出文件,具体代码如下:
7、编译项目,生成dll文件,如下图所示:
8、找到生成的dll文件,文件路径为:“项目路径”->bin->Debug->JefferyChan.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.
如下图所示:
Reflector下载链接:http://pan.baidu.com/s/1o6KH9xw。
1、打开VS,博主所用版本是Visual Studio 2013。
2、新建一个VC项目,选择类库,取名为JefferyChan,具体步骤如下图:
3、因为要调用Unity中的相关文件,所以这里要引入外部文件。首先在Unity的安装文件夹中找到UnityEngine.dll,我的路径是:D:\Program Files (x86)\Unity\Editor\Data\Managed
如下图所示:
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,如下图所示:
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.
如下图所示:
Reflector下载链接:http://pan.baidu.com/s/1o6KH9xw。
相关文章推荐
- Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进行混淆,避免被反编译。
- Win7 64b的VS2015 如何使用nmake成功编译detour express 3.0-error2202 警告被视为错误 - 没有生成“object”文件
- 使用Maven管理依赖JAR文件,自定义项目布局,利用ANT生成不同的发布包
- VS 编译提示 无法将“obj\Debug\*.*”复制到“bin\Debug\*.*”,文件...正在由另一个进程使用,因此该进程无法访问此文件 解决办法
- 使用Maven管理依赖JAR文件,自定义项目布局,利用ANT生成不同的发布包
- 使用WinRar将Qt编译生成的exe和依赖的dll文件打包为一个exe文件的简单方法
- 网狐荣耀版vs生成解决方案时出现“出现未能写入日志,请求的操作无法在使用用户映射区域打开的文件上执行“错误
- AutoCode (vs插件)自动生成代码插件 下载及使用教程(C#版)( 更新简单自定义模板教程)
- 使用cvs的时候,WEB-INF/classes中不能编译生成class文件的原因?
- 使用自动生成java文件和自动编译的动态代理模式-马士兵设计模式教程
- 如何在XCode中使用gcc编译生成的.a库文件?
- vs c++ Rebuilt 编译时不能生成 .dll文件
- asp.net 利用VS将CS类文件生成DLL文件
- Python: 利用StringIO缓存,避免生成文件
- 使用自动生成java文件和自动编译的动态代理模式
- 使用自动生成java文件和自动编译的静态代理模式-马士兵设计模式教程
- 使用ZLIB生成DLL文件,并进行有中文的ZIP文件压缩与解压操作!支持目录压与解!
- VS保存和编译问题] 总是出现另一个程序正在使用此文件,进程无法访问
- C#使用StreamWriter写日志,直接在根目录下生成日志文件
- (转)如何让一个动态链接库文件debug和release编译的时候生成不同的文件名