首页 > 其他分享 >Unity3D代码混淆方案详解

Unity3D代码混淆方案详解

时间:2024-01-18 15:11:08浏览次数:36  
标签:Unity3D ipa 混淆 代码 配置 Unity 详解 ipaguard

背景

Unity引擎使用Mono运行时,而C#语言易受反编译影响,存在代码泄露风险。本文通过《QQ乐团》项目实践,提出一种适用于Unity引擎的代码混淆方案,以保护代码逻辑。

在这里插入图片描述

 

引言

在Unity引擎下,为了防止代码被轻易反编译,需要采取相应的保护措施。本文将分享一种基于实践经验的可行方案,希望能对关注Unity引擎的开发者提供一些参考价值。

正文

Unity引擎下代码混淆的特殊性

  • 代码被资源引用:Unity中资源的可视化编辑特性导致代码以组件形式附加到资源实例上,需要注意不破坏资源与代码的对应关系。

  • 发布到Web的项目:Unity项目的编译和打包过程捆绑在一起,无法像普通.NET程序那样对编译出的程序集进行混淆后再打包。

  • UnityEngine按函数名进行调用:MonoBehaviour上的方法如Awake、Start等通过方法名称访问,重命名会导致调用失败。

思路

由于官方未提供独立的接口进行混淆,作者尝试将代码编译成DLL,混淆后再添加到Unity项目中。然而,遇到了Unity引擎处理DLL中模版类型的缺陷,使得之前的尝试受挫。

实际混淆步骤

最终,作者将项目进行分层,独立出敏感的“逻辑层”并编译成DLL进行混淆,加上利用ipaguard加固混淆方案将程序加密处理。Ipa Guard是一款功能强大的ipa混淆工具,不需要ios app源码,直接对ipa文件进行混淆加密。可对IOS ipa 文件的代码,代码库,资源文件等进行混淆保护。 可以根据设置对函数名、变量名、类名等关键代码进行重命名和混淆处理,降低代码的可读性,增加ipa破解反编译难度。可以对图片,资源,配置等进行修改名称,修改md5。只要是ipa都可以,不限制OC,Swift,Flutter,React Native,H5类app。代码混淆步骤

  1. 选择要混淆保护的ipa文件

 

在这里插入图片描述

 

  1. 选择要混淆的类名称选择左侧的代码模块中的OC类名称或者Swift类名称,选择IPA种要混淆的二进制文件,然后勾选可执行文件代码里面的类名称。如果类太多可以使用搜索查看功能,ipaguard提供了级别选择,名称搜索,已选未选过滤来帮助配置混淆对象。

在这里插入图片描述
  1.  

  2. 选择要混淆保护的函数,方法选择左侧代码模块下的oc方法或者swift方法,点击右侧的选择文件选取一个可执行二进制文件,勾选需要混淆保护的方法和函数。ipaguard提供了风险等级过滤,名称搜索过滤,根据类名称过滤条件来辅助配置混淆目标

 

在这里插入图片描述

 

  1. 配置签名证书

     

    点击左侧的签名配置,设置ios签名证书,描述文件等信息。测试阶段用开发证书,这样可以方便安装到测试机子上检验是否测试后的app运行正常;最终配置测试ok,发布的时候再改成发布证书,混淆配置完后可以提交上架。

 

在这里插入图片描述

 

  1. 混淆和测试运行

     

    点击开始处理按钮,ipaguard将对ipa中选中的内容进行混淆保护,并安装混淆好的ipa到手机上,运行如果ok,点击保存配置,下次直接加载配置即可,无需每次配置要混淆的内容。

ipaguard在做混淆这块还是做的很人性化的,混淆目标可控,强度可控,极大地简化了配置混淆内容的过程,可视化的操作也非常的方便。

在这里插入图片描述

 

总结

  • Unity项目的代码反编译较为容易,需要重视代码混淆工作。

  • 代码混淆方案实施限制较多,对项目的架构分层有强制性要求。

参考资料

以上是根据提供的资料,对英文技术博客进行了改写,添加了更加丰富的内容,并结合MD语法进行了排版。希望对您有所帮助。

标签:Unity3D,ipa,混淆,代码,配置,Unity,详解,ipaguard
From: https://www.cnblogs.com/gddg/p/17972559

相关文章

  • JavaScript到底应不应该加分号?JavaScript自动插入分号规则详解
    JavaScript提供了automaticsemicoloninsertion(ASI)自动插入分号规则,在不加分号的情况下,会自动补充分号来分隔不同语句。导致在继左大括号换行、tab和space圣战后,前端又出现了一场战争。并且随着那个男人加入这场讨论之后,关于是否应该加分号的讨论更是激烈了。ASI自......
  • MyBatis三级缓存详解
    MyBatis作为一款优秀的持久层框架,在处理数据库操作时提供了丰富的功能,其中之一就是三级缓存。本篇博文将深入介绍MyBatis的三级缓存,通过详细的例子带你了解三级缓存的使用和原理。背景MyBatis的三级缓存是指在执行SQL语句时,可以将查询的结果缓存在三个不同的范围内,分别是LocalC......
  • SpringSecurity-认证流程源码级详解
    自定义用户认证逻辑处理用户信息获取逻辑:UserDetailsService处理用户校验逻辑:UserDetails处理密码加密解密:PasswordEncoder认证处理流程以表单认证为例:从发起认证请求到认证过滤器,接着认证成功后,响应从认证过滤器返回的整个过程。SpringSecurity做了什么,设计到了哪些类?他......
  • Java异步编程详解
    在现代应用程序开发中,异步编程变得越来越重要,特别是在处理I/O密集型任务时。Java提供了一套强大的异步编程工具,使得开发者能够更有效地处理并发任务。本篇博文将深入探讨Java中异步编程的方方面面,通过具体例子详细说明异步编程的实践。异步编程的背景在传统的同步编程模型中,任务......
  • RocketMQ 中冷热分离的随机索引模块详解
    作者:苏昌盛消息系统中随机索引的特点RocketMQ广泛使用于各类业务场景中,在实际生产场景中,用户通常会选择消息ID或者特定的业务Key(例如学号,订单号)来查询和定位特定的一批消息,进而定位分布式系统中的复杂问题。传统方案下,消息索引的存储是基于数据库系统或者基于本地文件系统实现......
  • RocketMQ 中冷热分离的随机索引模块详解
    作者:苏昌盛消息系统中随机索引的特点RocketMQ广泛使用于各类业务场景中,在实际生产场景中,用户通常会选择消息ID或者特定的业务Key(例如学号,订单号)来查询和定位特定的一批消息,进而定位分布式系统中的复杂问题。传统方案下,消息索引的存储是基于数据库系统或者基于本地文件系统实......
  • ETLCloud详解,如何实现最佳实践及问题排查
    ETLCloud介绍ETLCloud是新一代全域数据集成平台,领先于市场同类产品的数据集成平台(DataOps),只需单击几下即可完成数据清洗转换、传输入仓等操作,具备高效、智能、一站式的全域数据集成优势,如:毫秒级实时数据同步支持异构数据源实时数据监听读取,实时数据通过经过清选、转换后可以实时......
  • Markdown语法详解
    Markdown学习标题:#空格标题名二级标题字体HelloWorld!两边加一个*变成斜体HelloWordl!两边加两个*变成粗体HelloWordl!两边加~~HelloWordl!两边***斜体粗体引用我是一个很牛逼的程序员>空格分割线三个-或者三个*图片!jietu](C:\Users\王牛逼\Deskto......
  • 详解shell环境与函数执行
    理清楚函数在shell环境中加载场景:函数定义和执行,分开在不同的文件中,Linux自带的诸多脚本,就是基于该形式使用的1.函数写在一个文件中,只定义,不执行2.另外一个脚本,读取该函数文件,且加载该函数第一步:先生成一个脚本my_func.sh,作用只记录函数,不运行第二步:如......
  • linux之线程概念(八千字长文详解)
    linux之线程概念线程的概念首先我们要进程和线程区分开来什么是进程——专业点的说法就是加载到内存的一个执行流!而在linux里面本质点的来说就是内核数据结构+进程对应的代码和数据每一个进程——都有自己独立的PCB,自己的进程地址空间,页表进程地址空间决定了,进程能够看到的......