Unity 代码混淆: CodeGuard的使用

74 篇文章 28 订阅
58 篇文章 10 订阅

CodeGuard

使用CodeGuard工具,可以对Unity项目的C#代码进行混淆(支持Android和iOS)。建议混淆变量和属性即可,函数的混淆要谨慎,很容易逻辑出问题。

CodeGuard下载地址:http://download.csdn.net/detail/kaitiren/9101453

使用方法

将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://github.com/icsharpcode/ILSpy/releases

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林新发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值