本文共 2008 字,大约阅读时间需要 6 分钟。
CodeGuard
使用CodeGuard工具,可以对Unity项目的C#代码进行混淆(支持Android和iOS)。建议混淆变量和属性即可,函数的混淆要谨慎,很容易逻辑出问题。
CodeGuard下载地址:
使用方法
将CodeGuard导入到unity工程中
打开Window->CodeGuard->Profiles
根据你的需要进行设置。
然后打包的时候就会自动混淆代码了(会自动执行CodeGuard.cs的MidCodeGuarding函数)
具体怎么设置
情况一:All Except Skip Types
除了Skip的函数名,其余全部混淆
在Skip Types中输入Count数量,然后在Skip Type中输入要跳过的类名
情况二:Only Selected
只混淆选中的类,其余都不混淆
在Select Types中输入Count数量,然后在Select Type中输入要混淆的类名
情况三:Combination
以上两种情况的结合
公共设置
设置 | 描述 | 备注 |
Private Members | 对private成员进行混淆 | |
Private Field & Properties | 对private字段和属性进行混淆 | Field是字段,比如 private int m_a; Propertity是属性,比如 private int a { get { return m_a; } } |
Type Fields | 所有的字段都会被混淆(非强硬) | 为了确保Unity正常工作,部分字段会被跳过 |
Type Fields Aggressively | 所有的字段都会被混淆(强硬) | Unity可能无法正常工作 |
Properties | 所有属性都会被混淆 | |
Custom Mothods | 自定义函数 | 为了确保Unity正常工作,部分函数会被跳过,比如Awake、Start、Update函数会被跳过 |
Proxy Parameters | 对代理函数参数进行混淆 | 比如OnCollisionEnter(Collision collision)的参数 |
Method Parameters | 对函数的参数进行混淆 | 所有非代理函数的参数会被混淆 |
Aggressively | 尽可能多的混淆,慎用 | 可能会破会原有的逻辑,导致无法正确运行 |
Exclude Method Names | 要跳过的函数名 | |
Proxy/Unity Methoes | 生成Unity的代理函数,比如 Update()、OnGUI()等 | 自己的Update()会被混淆,生成的Update()函数中会调用被混淆的Update()函数 |
Proxy/Exclued Method Names | 为剔除的函数生成代理函数 | |
Proxy/Custom Methods | 为自定义函数生成代理函数 |
注意:CodeGuard不支持对类名进行混淆
关于Proxy
如果勾选了Unity Methods,则它会把我们的Awake、Start、Update等函数混淆,并生成Awake、Start、Update等函数(没有被混淆),然后调用我们被混淆的Awake、Start、Update等函数。
比如
void Start(){ Debug.Log("Start");}
会变成
void ك(){ Debug.Log("Start");}void Start(){ this.ك();}
具体选项可以查看自带的Read Me.txt文档说明
注意
下载下来的CodeGurad工具混淆的时候可能会报错:DirectoryNotFoundException: Directory ‘F:/Unity5.5/Unity/Editor/Data/PlaybackEngines\androidplayer\Managed’ not found
只需要把CodeGuard.cs的DoCodeGuardAndroidBuild的
files.AddRange(Directory.GetFiles(enginePath,"*.dll"));
这行注释掉即可
如果是iOS,则注释掉DoCodeGuardiOSBuild的
files.AddRange(Directory.GetFiles(enginePath,"*.dll"));
如何检查混淆是否生效
可以用ilspy反编译工具反编译apk包内的Assembly-CSharp.dll,变量和函数都变成奇怪的符号了
注:先把 .apk 改成 .zip,然后解压,进入 assets/bin/Data/Manged,就可以看到Assembly-CSharp.dll了,我们的C#代码就是变成成这个Assembly-CSharp.dll的,把Assembly-CSharp.dll拖入到ILSpy中即可
ilspy 下载地址:
转载地址:https://linxinfa.blog.csdn.net/article/details/70767114 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!