Appearance
客户端安全加固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。

2 接入页面


3 特性/优势
- 涵盖平台广:支持Android/iOS/Windows/鸿蒙/H5多端
- 兼容性表现稳定:支持Android5-15及市面上常见模拟器,如雷电模拟器、夜神模拟器、逍遥模拟器、腾讯手游助手、MuMu模拟器
- 性能开销低
- 接入方式灵活便捷
- 加固强度能确保游戏的安全性和不影响性能
4 效果展示
- AssetBundle加密
AssetBundle加密前,使用AssetStudio将其打开,可以看见资源能够正常读取

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

- global-metadata加密
global-metadata.dat加密前

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

会生成以下文件

global-metadata.dat加密后

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

- so加固
so加固前
通过二进制反编译工具ida可正常反汇编函数

字符串表

导入表未乱序

so加固后
ida无法正确识别函数

字符串被加密了

导入表乱序后

- HybridCLR热更代码保护
Dll未加固前,使用dnspy打开,可以看到c#源码被正常反编译 
Dll加固后,使用dnspy打开,可以看到c#源码反编译失败 
- Lua代码保护
字节码文件加密前,LuaJIT的特征还是很明显的 
字节码文件加密后,LuaJIT的特征及字符串信息都被抹去了 
5 性能测试
- AssetBundle加密
加载耗时
场景:加载300个ab包
LoadFromFile/LoadFromFileAsync加载加密前后的ab包,各跑10次取加载时间的平均值
| LoadFromFile加密前/加密后耗时(ms) | LoadFromFileAsync加密前/加密后耗时(ms) | |
|---|---|---|
| nexus5x(低) | 196.8/206.7 | 7.76/8.75 |
| pixel4(中) | 73.6/76.2 | 1.58/1.84 |
| 小米13(高) | 48.4/51.4 | 1.51/1.58 |
低配设备LoadFromFile耗时增加大约10ms左右,LoadFromFileAsync耗时增加大约1ms左右
中、高配设备LoadFromFile耗时增加约3ms左右,LoadFromFileAsync耗时增加大约1ms以内
| LoadFromMemory加密前/加密后耗时(ms) | LoadFromMemoryAsync加密前/加密后耗时(ms) | |
|---|---|---|
| nexus5x(低) | 1192.3/1217 | 418/431 |
| pixel4(中) | 367.1/371 | 121.7/122.6 |
| 小米13(高) | 313.7/321.6 | 78.3/81.4 |
低配设备LoadFromMemory耗时增加约25ms左右,LoadFromMemoryAsync耗时增加大约13ms左右
中、高配设备LoadFromMemory耗时增加约8ms以内,LoadFromMemoryAsync耗时增加大约3ms以内
LoadFromFile
| 加固前CPU占用平均值/最大值(%) | 加固前内存占用平均值/最大值(MB) | 加固后CPU | 加固后内存 | |
|---|---|---|---|---|
| 1 | 2.78/4.22 | 151.09/151.23 | 3.00/4.40 | 151.72/151.92 |
| 2 | 2.73/4.50 | 150.51/150.69 | 2.77/4.31 | 151.85/152.09 |
| 3 | 2.85/4.42 | 151.25/151.45 | 3.00/4.22 | 151.57/151.74 |
| 4 | 3.04/4.10 | 151.28/151.63 | 3.15/4.01 | 151.80/151.94 |
| 5 | 3.27/4.63 | 151.02/151.14 | 3.04/4.62 | 151.65/151.84 |
加固前与加固后CPU占用平均值增加约1.9%,最大值波动范围为1.4%
加固前与加固后内存占用平均值增加为0.45%,最大值增加为0.44%
LoadFromFileAsync
| 加固前CPU占用平均值/最大值(%) | 加固前内存占用平均值/最大值(MB) | 加固后CPU | 加固后内存 | |
|---|---|---|---|---|
| 1 | 2.98/5.03 | 147.85/153.44 | 2.97/5.85 | 148.88/154.40 |
| 2 | 2.78/5.51 | 148.19/153.99 | 3.02/5.47 | 149.13/154.94 |
| 3 | 2.88/5.05 | 148.69/154.96 | 3.20/5.54 | 149.03/154.96 |
| 4 | 2.82/5.67 | 148.61/154.43 | 2.92/5.56 | 148.07/154.04 |
| 5 | 2.87/5.01 | 147.68/153.37 | 2.80/5.33 | 149.63/155.55 |
加固前与加固后CPU占用平均值增加约4%,最大值增加为5.6%
加固前与加固后内存占用平均值增加为0.5%,最大值增加为0.48%
LoadFromMemory
| 加固前CPU占用平均值/最大值(%) | 加固前内存占用平均值/最大值(MB) | 加固后CPU | 加固后内存 | |
|---|---|---|---|---|
| 1 | 4.37/8.77 | 144.35/150.63 | 4.26/9.33 | 146.28/156.18 |
| 2 | 4.62/9.23 | 146.62/154.22 | 4.34/10.39 | 147.09/158.03 |
| 3 | 4.14/8.95 | 145.41/155.16 | 5.04/8.70 | 144.13/155.36 |
| 4 | 4.51/9.49 | 144.16/152.41 | 4.32/8.23 | 146.67/156.69 |
| 5 | 4.35/8.88 | 147.63/158.34 | 4.43/8.91 | 147.38/155.16 |
加固前与加固后CPU占用平均值增加约1.8%,最大值增加为0.5%
加固前与加固后内存占用平均值增加为0.46%,最大值增加为1.38%
LoadFromMemoryAsync
| 加固前CPU占用平均值/最大值(%) | 加固前内存占用平均值/最大值(MB) | 加固后CPU | 加固后内存 | |
|---|---|---|---|---|
| 1 | 5.90/10.33 | 259.70/392.46 | 6.07/10.65 | 264.08/391.55 |
| 2 | 6.38/11.13 | 262.10/391.12 | 6.18/11.29 | 262.35/390.71 |
| 3 | 6.06/11.19 | 261.27/389.51 | 6.26/11.35 | 261.18/391.93 |
| 4 | 6.18/11.72 | 260.69/389.91 | 6.31/11.42 | 260.15/390.96 |
| 5 | 6.22/11.02 | 258.13/389.84 | 6.46/11.62 | 259.35/392.80 |
加固前与加固后CPU占用平均值增加约1.7%,最大值增加为1.6%
加固前与加固后内存占用平均值增加为0.40%,最大值增加为0.26%
- so加固
设备:Google pixel4
对libunity.so、libil2cpp.so进行加固
| 加固前CPU占用平均值/最大值(%) | 加固前内存占用平均值/最大值(MB) | 加固后CPU | 加固后内存 | |
|---|---|---|---|---|
| 1 | 2.37/4.42 | 116.11/117.43 | 2.39/4.11 | 116.01/117.57 |
| 2 | 2.44/4.39 | 116.62/117.92 | 2.50/4.30 | 116.13/117.68 |
| 3 | 2.53/4.16 | 116.00/117.44 | 2.50/4.43 | 115.70/117.60 |
| 4 | 2.30/4.04 | 115.63/117.75 | 2.48/4.03 | 115.97/117.66 |
| 5 | 2.87/4.10 | 115.99/117.57 | 2.70/4.39 | 116.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 | 加固后内存 | |
|---|---|---|---|---|
| 1 | 10.23/14.66 | 160.15/169.68 | 10.53/14.21 | 160.20/169.57 |
| 2 | 10.24/14.29 | 160.16/169.29 | 10.05/14.18 | 156.70/168.72 |
| 3 | 10.52/14.65 | 159.83/169.66 | 10.56/13.80 | 159.61/168.76 |
| 4 | 10.55/14.40 | 157.11/168.95 | 10.00/13.97 | 155.85/168.90 |
| 5 | 10.10/13.92 | 160.79/169.83 | 10.43/14.62 | 157.57/169.25 |
加固前cpu占用与加固后平均值波动范围约为0.1%,最大值波动范围为1.6%
加固前与加固后内存占用平均值波动范围为1%,最大值波动范围为0.2%
6 客户案例
- 某大型棋牌游戏平台:覆盖Android、iOS、Harmony、Windows平台
- 某MOBA手游