Unity 代码混淆: CodeGuard的使用
发布日期:2021-06-30 19:39:16 浏览次数:2 分类:技术文章

本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:UGUI 列表循环使用
下一篇:Unity 查看所有GUI默认样式

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月14日 14时32分57秒