顶象Android应用加固保护是一套纵深防御体系,分别从代码安全、资源文件安全、数据安全和运行时环境安全维度提供安全保护,同时针对每个维度又进行了不同层次的划分,加固策略可依据实际场景进行定制化调配,安全和性能达到完美平衡。
目前Android加固主要包含dex文件整体保护、java代码虚拟化保护、so文件保护、html/js保护、游戏相关脚本保护、本地数据保护、运行时保护这几大类功能。
通过将原dex文件加密隐藏,并使用防JAVA代码反编译、JAVA字符常量加密等技术对DEX文件进行全面性保护。
使用dex文件整体保护后,原dex文件代码被隐藏,使用逆向工具打开也无法找到原dex内容:
防java反编译,可以使反编译工具无法直接把代码反编译为java,提高逆向分析难度,包括但不限于(JEB、jd-gui、jadx):
JAVA常量字符串加密,会隐藏代码中明文的常量字符串,增加逆向难度:
通过将原java代码指令转换为DX-VM虚拟机指令,运行在DX虚拟机之上,无法被反编译回可读的源代码,任何工具均无法直接反编译虚拟机指令。
采用java代码虚拟化保护后,对源码反编译将无法看到任何与原代码相似的内容,函数体中只有对虚拟机子系统的调用:
通过对SO文件进行反编译、防篡改、防盗用、虚机保护、代码压缩等技术对SO文件进行全面性保护。
采用so文件保护后,主流反编译器都无法对被保护过的so进行正常分析:
通过对html/js文件进行防篡改,加密等技术对html/js进行全面保护。
采用html/js保护后,无法直接获得明文的html/js文件:
通过对主流游戏引擎所用到的脚本/dll文件进行防篡改,加密等技术,进行全面保护。
采用游戏相关保护后,无法直接获得明文脚本或明文的dll文件:
通过对对本地数据文件进行防篡改,加密等技术进行全面保护。
采用本地数据保护后,无法直接明文查看db文件或sp文件:
通过运行时保护,可以有效防止被调试,内存dump,代码注入等行为。
.apk
格式,支持.aab
格式.aar
格式和.jar
格式2048M
以内准备好已经进行签名的待加固apk文件。
准备好与待加固apk文件相同的签名key文件。
登录顶象控制台,并进入Android加固保护页面
选择基础加固版本,并点击立即使用,弹出创建任务窗口,并上传待加固的apk
登录顶象控制台,并进入Android加固保护页面
选择标准加固版本,并点击立即使用,弹出创建任务窗口,并上传待加固的apk
标准:对常见的android应用进行保护,功能包括,dex文件加密隐藏,dexvmp,反篡改,反调试,防内存dump,防注入,app包签名校验。
html/js:对html,js等文件进行加密,另外功能还包括反篡改,反调试,app包签名校验,防内存dump,防注入。
等保:对等保类需求进行定制,以满足通过等保需求。
游戏:对u3d,cocos2dx等游戏引擎脚本文件进行加密,另外还包括反篡改,反调试,防内存dump,防注入,app包签名校验。
登录顶象控制台,并进入Android加固保护页面
联系客服人员,说明旗舰版的具体需求,并等待客服人员配置策略完成
选择旗舰加固版本,并点击立即使用,弹出创建任务窗口,并上传待加固的apk
下载后得到未签名的加固包,格式与源包格式一致,为.apk。
对加固的apk进行重签名即可安装使用,需要保证与加固前的签名一致。
若加固失败,可点击任务列表右侧"查看失败原因",查看具体原因。
本工具用于对android加固后的apk进行重新签名。
版本 | 文件 | 备注 |
---|---|---|
Windows版 | 顶象apk签名工具压缩包.exe | 该版本包含Java运行环境,您不需要额外安装。 |
通用版 | dx-signer-v1.11r.jar | 该版本需要Java 8+的运行环境,请依照您的操作系统进行安装:Adoptium。 |
本工具依照Apache 2.0
协议开源,您可以在这里查看源码https://github.com/dingxiangtech/dx-signer。
ps:如果有alias(证书别名)密钥的或者有多个证书的,请在高级tab中选择alias并输入alias密码
顶象多渠道工具兼容友盟和美团walle风格的多渠道包,方便客户把APP发布到不同的应用平台,进行渠道统计。
顶象多渠道工具兼容友盟和美团walle风格的多渠道包,下面是两种不同风格的渠道信息读取方法。选其中之一即可
输出的Apk中将会包含UMENG_CHANNEL
的mata-data
<application ... >
<meta-data
android:name="UMENG_CHANNEL"
android:value="XXX" />
</application>
您可以读取这个字段。
public static String getChannel(Context ctx) {
String channel = "";
try {
ApplicationInfo appInfo = ctx.getPackageManager().getApplicationInfo(ctx.getPackageName(),
PackageManager.GET_META_DATA);
channel = appInfo.metaData.getString("UMENG_CHANNEL");
} catch (PackageManager.NameNotFoundException ignore) {
}
return channel;
}
输出的Apk也包含Walle风格的渠道信息
您可以在使用Walle的方式进行读取。
implementation 'com.meituan.android.walle:library:1.1.7'
String channel = WalleChannelReader.getChannel(this.getApplicationContext());
请准备渠道清单文件channel.txt
, 格式为每一行一个渠道, 例如:
0001_my
0003_baidu
0004_huawei
0005_oppo
0006_vivo
Q: app签名是什么?
A: 签名就是用于识别app开发者,并保证apk完整性的一个机制,谷歌要求每一个app都需要有签名。
Q: 为什么上传的app需要有签名?
A: 加固有防二次打包的功能,需要提前apk原本的签名,供加固后验证签名正确性用。
Q: 在 androidstudio 中打出的debug版本包,可以加固吗?
A: 不建议用debug版本包加固,因为debug版本的包使用的是androidstudio的debug签名,可能导致加固后无法重签名,或者签错名的情况。导致无法正常运行。
Q: 上传之前apk已经签过名了,为什么加固后又要重新签一次?
A: 加固之后会破坏apk原有的签名,所以需要重新签名,否则无法安装。
Q: 为什么重签名需要和加固前保持一致?
A: 如果不保持一致,则会触发加固的防二次打包功能,无法正常运行。
Q: 该如何重新签名?
A: 请参考5.1节下载并使用顶象签名工具重签加固后的apk/aab文件。
Q: 加固目前支持哪些热更框架?
A: 目前加固支持阿里 sophix
,腾讯 tinker
两大主流热更框架。
Q: 使用热更框架的app,加固时需要什么特别操作吗?
A:
加固前
的APK制作热更包。Q: 加固支持 Kotlin 语言吗?
A: 支持
Q: 关于基础版功能?
A: 基础版包含最低程度的app保护,具体可以登陆后,参考此链接,可免费试用三次,不支持人工售后解决问题。
Q: 标准版有什么通用功能?
A: 标准版包含dex整体保护
、java代码虚拟化
、反dump
、反调试
、反重打包
、代码防篡改
,参考此链接,不支持试用,支持人工售后解决问题。
Q: 有什么特殊需求标准版可以满足?
A: 以下情况可以使用标准版解决:
Q: 等保测评如何操作? A: 用户选择等级保护->等保加固,直接上传app加固后,拿到等保平台测试,如果不过再联系售后。
Q: 旗舰版可以满足什么需求?
A: 以下情况可以使用旗舰版:
Q: 如何给出旗舰版的java代码虚拟化保护范围?
A: 把需要特殊保护的重要类以列表形式列出完整类名,例如:(com.android.app.Activity)。
Q: 如何给出旗舰版资源加密保护范围?
A: 把需要保护的资源文件在apk中的路径以列表形式给出,例如:(assets/abc.png)。
Q: 如何给出旗舰版so保护范围?
A: 按照以下规则给出保护列表:
assets/so/x86/libabcdef.so
,assets/so/armeabi-v7a/libabcdef.so
如下表,通过对标准版不同大小的apk做加固前后包体大小分析,发现加固体积增量几乎可以忽略不计。由于加固会有清除日志,压缩包体等操作,最后加固后包体反而会变小。
增量(%)/体积(M) | <50m | (50, 100m] | (100, 300m] |
---|---|---|---|
最小 | -1% | 0.6% | -4.5% |
最大 | 63% | 16% | 10.8% |
平均 | 19% | 2.1% | -1.5% |
Q: 加固支持 敏感数据防爬虫
,签名算法升级
,秘钥升级
,敏感数据加密保护
需求吗?
A: 不支持
Q: 加固能支持so vmp保护吗?
A: 不支持
Q: 加固如何防止抓包?
A: 加固不支持防抓包
Q: 游戏进行加固,可以防第三方外挂吗?
A: 加固不支持防外挂
Q: Android加固有aab保护方案么?
A: 有
Q: 线上saas是否有sdk加固?
A: 没有
Q: android加固是否提供纯so保护功能?
A: 如果有apk的话,旗舰版可以提供次功能,把需要保护的so范围给出即可,如果没有apk则不支持。同样也不支持linux的so保护。
Q: 问加固能否设置在一定时间后自动crash
A: 不能
Q: 破解别人的/xposed插件能否正常加固
A: 破解别人的so不推荐加固,有可能会引起不知名问题。xposed插件不能被加固。
Q: android加固是否支持java代码.class文件?
A: 不支持
Q: android加固否支持.a加固
A: 不支持
Q: 加固dex039是否支持?
A: 我们最新版本的加固系统已经支持dex039。 目前dex039仅支持android9.0以后的机器,建议您在AndroidManifest.xml
中将minsdk
调整为23(android 6.0)
Q: 我的app加固后被杀毒软件报毒,该如何处理?
A: 请先确认未加固的app是否也会被报毒,如果不会,则反馈售后让技术人员处理。
Q: 我的app加固后运行会崩溃,如何处理?
A: 请先确保app未加固前所有功能均正常,如果崩溃现象仅在加固后出现,则反馈售后让技术人员处理。
Q: 我如何验证我的app被加固,并且功能正常?
A: 加固报告中,包含所有开启的保护功能描述,和检测方法。可以按照报告指示的步骤来操作验证功能是否生效。
Q: 加固后是否会影响我的app接受或发送广播?
A: 加固前后app所有功能不受影响,使用方式也不会改变。
Q: 加固后调用栈是否发生变化,定位是否方便?
A: 加固不会改变app调用栈。
Q: 加固后上传的到自己开发的市场,显示解析错误,该如何处理?
A: 加固后的app,只要重新签名成功,上传市面上任何一个应用市场都不会出错的,所以这种情况应该查看下自己开发的市场或者工具是否有bug。
Q: 我们的apk在模拟器中运行,被另一个apk记录下了所有操作,该如何处理?
A: 这种情况一般是被代码注入了,可以使用旗舰版,开启反注入功能和反模拟器功能。
Q: 加固后安装不上去,报Failure [INSTALL_FAILED_INVALID_APK: Failed to extract native libraries, res=-2]
A:AndroidManifest.xml的Application中删除extractNativeLibs="false"或加上android:extractNativeLibs="true"
Q: 加固支持aab格式么?支持GOOGLE PLAY市场上架么?
A:支持的
文档版本: 3e5bf23e