『7x24小时有问必答』
致力于挖掘功能强大、性能优越、创新前沿且简单易用的 C#/.NET 开源框架、项目、类库与工具。助力 .NET 开发者轻松解锁并运用这些实用的宝藏资源,提升开发效率与创新能力!

项目概述

Obfuz 是一款专为 Unity 开发者设计的开源代码混淆与加固工具,旨在满足商业化游戏项目对代码安全性的高要求。通过混淆和加固 Unity 项目中的 C# 代码,Obfuz 可以有效防止逆向工程、代码篡改和非法复制,保护开发者的知识产权和商业利益。

应用场景

它特别适用于需要高度安全性的游戏开发场景,如在线游戏、付费游戏、以及包含敏感逻辑或算法的游戏项目。

功能模块

Obfuz 提供了丰富的功能模块,以满足不同场景下的代码保护需求:
符号混淆:支持丰富的配置规则和增量混淆,灵活高效地保护代码符号(如类名、方法名、字段名等)。
常量混淆:混淆  intlongfloatdoublestring  等常量,防止逆向工程者通过常量值推断代码逻辑。
变量内存加密:加密内存中的变量,提升运行时安全性,防止内存窥探和篡改。
函数调用混淆:打乱函数调用结构,增加破解难度,使逆向工程者难以理解代码执行流程。
随机加密虚拟机:生成随机化虚拟机,有效抵御反编译和破解工具,提供更高层次的保护。
静态与动态解密:结合静态和动态解密技术,防止离线静态分析,确保代码在运行时的安全性。
深度 Unity 集成:与 Unity 工作流无缝衔接,配置简单即可使用,无需复杂设置。
热更新支持:全面兼容 HybridCLR、xLua、Puerts 等热更新框架,确保动态代码更新顺畅无阻。
1.jpeg

功能特点

开源免费:基于 MIT 协议,免费使用和修改,无需担心版权问题。
企业级保护:提供媲美商业工具的强大混淆功能,满足商业化游戏项目的高安全性需求。
专为 Unity 设计:深度集成 Unity 生态,简化开发流程,提升开发效率。
热更新优化:为现代 Unity 项目中的热更新方案提供优异支持,确保动态代码的安全性。

添加代码

在Assets目录下创建Bootstrap.cs代码文件,文件内容如下:
using Obfuz;

using Obfuz.EncryptionVM;

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Bootstrap : MonoBehaviour

{

      // 初始化EncryptionService后被混淆的代码才能正常运行,

      // 因此尽可能地早地初始化它。

      [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterAssembliesLoaded)]

      private static void  SetUpStaticSecretKey()

      {

            Debug.Log("SetUpStaticSecret begin");

            EncryptionService<defaultstaticencryptionscope>.Encryptor = new GeneratedEncryptionVirtualMachine(Resources.Load<textasset>("Obfuz/defaultStaticSecretKey").bytes);

            Debug.Log("SetUpStaticSecret end");

      }

      int Add(int a, int b)

      {

             return  a + b + 1;

      }

      // Start is called before the first frame update

      void  Start()

      {

            Debug.Log("Hello, Obfuz");

            int a = Add(10, 20);

            Debug.Log($"a = {a}");

      }

}

查看混淆后的Assembly-CSharp程序集

使用ILSpy打开Library/Obfuz/{buildTarget}/ObfuscatedAssemblies/Assembly-CSharp.dll, 发现程序集确实被混淆了。
混淆后的Boostrap类代码变成如下:

using  $a;

using  $A;

using UnityEngine;

public class Bootstrap : MonoBehaviour

{

      [RuntimeInitializeOnLoadMethod(/*Could not decode attribute arguments.*/)]

      private static void  SetUpStaticSecretKey()

      {

            Debug.Log((object)"SetUpStaticSecret begin");

             $A.$C<$c>.$L  = new global::$a.$A(Resources.Load<textasset>("Obfuz/defaultStaticSecretKey").bytes);

            Debug.Log((object)"SetUpStaticSecret end");

      }

      private int  $a(int 1, int 1)

      {

             return  1 + 1 +  $A.$C<$c>.$I($d.$A, 0, 14, -2097817526);

      }

      private void  Start()

      {

             $e.$a($A.$C<$c>.$K($d.$A, 4, 12, 169, 534648667),  $A.$C<$c>.$d(1718597184, 154, 2114032877));

            int num =  $e.$A(this,  $A.$C<$c>.$I($d.$A, 16, 27, -201418147),  $A.$C<$c>.$I($d.$A, 20, 153, -875938825),  $A.$C<$c>.$d(1757957431, 242, 760404455));

             $e.$a(string.Format($A.$C<$c>.$K($d.$A, 24, 7, 10, 1708888075), num),  $A.$C<$c>.$d(1718597184, 154, 2114032877));

      }

}

源码地址

https://gitee.com/focus-creative-games/obfuz
2.gif

3.gif
</textasset></textasset></defaultstaticencryptionscope>

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码