APK 加固功能介绍
功能概述
TapTap APK 加固通过文件加密等手段,为开发者提供 APK 安全防护,降低被破解的风险。
- 功能入口:开发者中心 — 选择游戏 — 游戏服务 — APK 加固
功能特点
功能名称 | 描述 |
---|---|
SO 加密保护 | 对 SO 文件进行代码、函数、导出表加密混淆,防止 HOOK 攻击,有效提高脱壳难度。 |
global-metadata 加密 | 针对 IL2CPP 游戏,对 global-metadata 实现加固,提高破解门槛。 |
AAB 加固 | Android App Bundle 加固方案支持。 |
加固方案自保护 | 对加固方案源码进行了混淆,极大的提高了外挂作者对加固方案的逆向分析门槛,进一步提高了游戏的破解难度。 |
使用规则
- 适用厂商:认证开发者。
- 每个游戏每个自然月可加固 5 次,加固前请确保 APK 可正常运行,以免浪费加固次数。
- 有多渠道需求的使用方,请先加固再进行二次打包。
- 加固文件大小不超过 2G。
- 加固不支持自动签名,加固后需要重新签名。
- 每次加固,最多加固 2 个文件。
- 推荐加固游戏逻辑相关文件,如 libil2cpp.so,libue4.so,不同版本 libmono*.so 等。
- 不推荐加固引擎、第三方库相关 如:libmain.so,libunity.so 等。
为应用签名
在 Android 应用发布前,通常需要经过一系列安全处理步骤,如代码混淆、加固、签名等。加固(壳保护)是为了防止 APK 被逆向工程或篡改,其通过对 APK 进行加密和修改来提升应用的安全性。然而,加固会影响 APK 文件的原始结构,尤其是对 classes.dex 或其他文件进行加密或修改,这会使原有的签名失效。因此,加固后的 APK 文件都必须重新签名。
使用 apksigner 进行 APK 重新签名
apksigner 是 Android SDK 提供的官方签名工具,它位于 build-tools 目录下,用于为 APK 文件签名。以下是完整的签名步骤:
1. 确保已安装 Android SDK
首先,确认 Android SDK 已经正确安装,并且环境变量 ANDROID_HOME
已配置。可以通过终端命令检查:
echo $ANDROID_HOME
如果没有输出,则需要手动设置环境变量。例如:
export ANDROID_HOME=/path/to/android-sdk
2. 进入 apksigner 目录
apksigner 位于 Android SDK 的 build-tools 目录中。进入对应版本的 build-tools 文件夹:
cd $ANDROID_HOME/build-tools/30.0.3
(根据实际安装的版本号调整路径)
3. 使用 apksigner 进行签名
在确保签名密钥文件存在的情况下,使用 apksigner 对加固后的 APK 进行签名。执行以下命令:
apksigner sign --ks my-release-key.keystore --ks-key-alias my-key-alias \
--ks-pass pass:my-password --key-pass pass:my-password \
--out my-signed.apk my-unsigned.apk
参数说明
- --ks:指定 .keystore 文件路径(也支持 .jks)。
- --ks-key-alias:密钥别名。
- --ks-pass:密钥库密码。
- --key-pass:密钥别名的密码(同样可用 pass: 或 env:)。
- --out:输出的已签名 APK 文件。
4. 验证签名是否成功
签名完成后,建议验证 APK 文件是否成功签名。可以使用以下命令:
apksigner verify --verbose --print-certs my-signed.apk
如果签名成功,命令行将输出类似如下信息:
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
Verified using v3 scheme (APK Signature Scheme v3): false
Verified using v4 scheme (APK Signature Scheme v4): false
- V1 签名 是否有效:Verified using v1 scheme: true
- V2 签名 是否有效:Verified using v2 scheme: true
- V3/V4 取决于是否使用了更高版本的签名方案
信息
- Android 6.0 及更早版本(API 23 及以下) 仅支持 V1 签名,如果 APK 仅使用 V2/V3,这些设备将无法安装该 APK。
- Android 7.0+(API 24 及以上) 推荐使用 V2 或更高的签名方案,以提高安全性和性能。
- Android 10+(API 29 及以上) 强烈建议使用 V2/V3,因为 V1 可能会被标记为不安全。
如果你的目标用户群包含 Android 6.0 及以下的老设备,建议 至少使用 V1 签名,或者 同时使用 V1+V2 签名 以兼容新旧设备。