Skip to content

客户端安全加固Secfort

1 功能介绍

  • so加密保护

对so文件进行代码、字符串加密,加大代码被逆向破解的难度,防止攻击者恶意篡改应用实现对应用的破解。

  • so导入表乱序

对so导入表进行乱序,进一步增加游戏破解的难度。

  • AssetBundle资源加密

对UnityAB包资源文件进行高强度加密,防止资源被盗取,竞品抄袭、游戏内容被提前解包等问题。

  • global-metadata加密

对global-metadata实现加密,保护unity游戏符号,提高逆向破解的难度。

  • HybridCLR脚本文件乱序保护

对HybridCLR脚本文件进行乱序保护,保护脚本文件不被篡改,防止攻击者通过修改源码来实现恶意功能。

  • Lua脚本文件保护

对Lua脚本文件进行加密保护,保护脚本文件不被篡改,防止攻击者通过修改源码来实现恶意功能。

  • PE文件加固

对Windows端的PE文件进行加固,加大代码被逆向破解的难度,防止攻击者恶意篡改应用实现对应用的破解。

  • js文件加固

    • 对js文件进行字符串加密、代码混淆等功能,实现对js文件的保护
  • 支持多端加固

加固方案支持Android/iOS/PC/鸿蒙NEXT/H5。

image-20260503185550846

2 接入页面

image-20260305110552959

image-20260305110612492

3 特性/优势

  • 涵盖平台广:支持Android/iOS/Windows/鸿蒙/H5多端
  • 兼容性表现稳定:支持Android5-15及市面上常见模拟器,如雷电模拟器、夜神模拟器、逍遥模拟器、腾讯手游助手、MuMu模拟器
  • 性能开销低
  • 接入方式灵活便捷
  • 加固强度能确保游戏的安全性和不影响性能

4 效果展示

  • AssetBundle加密

AssetBundle加密前,使用AssetStudio将其打开,可以看见资源能够正常读取

ab1

AssetBundle加密后,将其拖进AssetStudio,资源没有被正确读取

ab2

  • global-metadata加密

global-metadata.dat加密前

gb1

使用il2cppdumper,正常解析global-metadata.dat文件

gb2

会生成以下文件

gb3

global-metadata.dat加密后

gb4

使用il2cppdumper,会提示文件找不到或已加密

gb5

  • so加固

so加固前

通过二进制反编译工具ida可正常反汇编函数

so1

字符串表

image-20241122154731890

导入表未乱序

image-20241122155936526

so加固后

ida无法正确识别函数

so2

字符串被加密了

image-20241122154810855

导入表乱序后

image-20241122155728982

  • HybridCLR热更代码保护

Dll未加固前,使用dnspy打开,可以看到c#源码被正常反编译 Hybrid1

Dll加固后,使用dnspy打开,可以看到c#源码反编译失败 Hybrid2

  • Lua代码保护

字节码文件加密前,LuaJIT的特征还是很明显的 lua1

字节码文件加密后,LuaJIT的特征及字符串信息都被抹去了 lua2

5 性能测试

  • AssetBundle加密

加载耗时

场景:加载300个ab包

LoadFromFile/LoadFromFileAsync加载加密前后的ab包,各跑10次取加载时间的平均值

LoadFromFile加密前/加密后耗时(ms)LoadFromFileAsync加密前/加密后耗时(ms)
nexus5x(低)196.8/206.77.76/8.75
pixel4(中)73.6/76.21.58/1.84
小米13(高)48.4/51.41.51/1.58

低配设备LoadFromFile耗时增加大约10ms左右,LoadFromFileAsync耗时增加大约1ms左右

中、高配设备LoadFromFile耗时增加约3ms左右,LoadFromFileAsync耗时增加大约1ms以内

LoadFromMemory加密前/加密后耗时(ms)LoadFromMemoryAsync加密前/加密后耗时(ms)
nexus5x(低)1192.3/1217418/431
pixel4(中)367.1/371121.7/122.6
小米13(高)313.7/321.678.3/81.4

低配设备LoadFromMemory耗时增加约25ms左右,LoadFromMemoryAsync耗时增加大约13ms左右

中、高配设备LoadFromMemory耗时增加约8ms以内,LoadFromMemoryAsync耗时增加大约3ms以内

LoadFromFile

加固前CPU占用平均值/最大值(%)加固前内存占用平均值/最大值(MB)加固后CPU加固后内存
12.78/4.22151.09/151.233.00/4.40151.72/151.92
22.73/4.50150.51/150.692.77/4.31151.85/152.09
32.85/4.42151.25/151.453.00/4.22151.57/151.74
43.04/4.10151.28/151.633.15/4.01151.80/151.94
53.27/4.63151.02/151.143.04/4.62151.65/151.84

加固前与加固后CPU占用平均值增加约1.9%,最大值波动范围为1.4%

加固前与加固后内存占用平均值增加为0.45%,最大值增加为0.44%

LoadFromFileAsync

加固前CPU占用平均值/最大值(%)加固前内存占用平均值/最大值(MB)加固后CPU加固后内存
12.98/5.03147.85/153.442.97/5.85148.88/154.40
22.78/5.51148.19/153.993.02/5.47149.13/154.94
32.88/5.05148.69/154.963.20/5.54149.03/154.96
42.82/5.67148.61/154.432.92/5.56148.07/154.04
52.87/5.01147.68/153.372.80/5.33149.63/155.55

加固前与加固后CPU占用平均值增加约4%,最大值增加为5.6%

加固前与加固后内存占用平均值增加为0.5%,最大值增加为0.48%

LoadFromMemory

加固前CPU占用平均值/最大值(%)加固前内存占用平均值/最大值(MB)加固后CPU加固后内存
14.37/8.77144.35/150.634.26/9.33146.28/156.18
24.62/9.23146.62/154.224.34/10.39147.09/158.03
34.14/8.95145.41/155.165.04/8.70144.13/155.36
44.51/9.49144.16/152.414.32/8.23146.67/156.69
54.35/8.88147.63/158.344.43/8.91147.38/155.16

加固前与加固后CPU占用平均值增加约1.8%,最大值增加为0.5%

加固前与加固后内存占用平均值增加为0.46%,最大值增加为1.38%

LoadFromMemoryAsync

加固前CPU占用平均值/最大值(%)加固前内存占用平均值/最大值(MB)加固后CPU加固后内存
15.90/10.33259.70/392.466.07/10.65264.08/391.55
26.38/11.13262.10/391.126.18/11.29262.35/390.71
36.06/11.19261.27/389.516.26/11.35261.18/391.93
46.18/11.72260.69/389.916.31/11.42260.15/390.96
56.22/11.02258.13/389.846.46/11.62259.35/392.80

加固前与加固后CPU占用平均值增加约1.7%,最大值增加为1.6%

加固前与加固后内存占用平均值增加为0.40%,最大值增加为0.26%

  • so加固

设备:Google pixel4

对libunity.so、libil2cpp.so进行加固

加固前CPU占用平均值/最大值(%)加固前内存占用平均值/最大值(MB)加固后CPU加固后内存
12.37/4.42116.11/117.432.39/4.11116.01/117.57
22.44/4.39116.62/117.922.50/4.30116.13/117.68
32.53/4.16116.00/117.442.50/4.43115.70/117.60
42.30/4.04115.63/117.752.48/4.03115.97/117.66
52.87/4.10115.99/117.572.70/4.39116.30/117.64

加固前与加固后CPU占用平均值增加约0.47%,最大值增加约为0.71%

加固前与加固后内存占用平均值波动范围约为0.041%,最大值增加约为0.0068%

  • HybridCLR热更代码保护

设备:Google pixel4

Android 13,内核版本4.14.276 ,

内核版本:高通SDM855骁龙855

内存:6gb

测试用例

加载aot dll和热更dll,跑测试用例

加固前CPU占用平均值/最大值(%)加固前内存占用平均值/最大值(MB)加固后CPU加固后内存
110.23/14.66160.15/169.6810.53/14.21160.20/169.57
210.24/14.29160.16/169.2910.05/14.18156.70/168.72
310.52/14.65159.83/169.6610.56/13.80159.61/168.76
410.55/14.40157.11/168.9510.00/13.97155.85/168.90
510.10/13.92160.79/169.8310.43/14.62157.57/169.25

加固前cpu占用与加固后平均值波动范围约为0.1%,最大值波动范围为1.6%

加固前与加固后内存占用平均值波动范围为1%,最大值波动范围为0.2%

6 客户案例

  • 某大型棋牌游戏平台:覆盖Android、iOS、Harmony、Windows平台
  • 某MOBA手游