一、问题描述
安卓应用分发过程中,安全软件报毒是常见难题。报毒主要源于:
-
静态特征匹配(包名、证书指纹、代码段哈希)
-
行为模式检测(敏感权限调用)
-
黑名单关联(同一证书下多个应用被标记)
传统手动处理方法(改包名、重签名、换图标)耗时长且易被再次标记。本文介绍一套后台自动化处理系统,可有效降低报毒率。
二、系统架构
系统由以下模块组成:
-
APK解析引擎:解包、读取资源、修改AndroidManifest
-
随机化生成器:生成唯一包名、自签名证书、新图标资源
-
360加固API客户端:调用360加固工具对DEX加密
-
任务调度器:支持定时打包、批量处理
三、核心实现
3.1 动态包名生成
使用Java代码随机生成符合规范的包名(例如com.rand${uuid}.app),并同步修改:
-
AndroidManifest.xml中的package属性 -
所有java文件中的R类引用路径
-
多渠道配置中的包名占位符
3.2 证书随机生成
通过keytool命令动态创建新签名证书:
keytool -genkey -v -keystore random.keystore -alias random -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown"
签名时使用该随机证书,确保每次生成的APK指纹唯一。
3.3 360加固集成
调用360加固命令行工具(Java -jar 360.jar)进行加固:
java -jar jiagu.jar -login <account> <password>
java -jar jiagu.jar -importcert <keystore> <alias> <pwd>
java -jar jiagu.jar -config -optimize -crashlog -x86
java -jar jiagu.jar -jiagu input.apk output.apk -autosign
3.4 iOS免签封装扩展
本系统同时支持iOS H5免签封装:
-
将网页URL打包为IPA,不显示顶部网址栏
-
支持在线配置(APP内动态切换链接)
-
使用开发者企业证书签名,解决掉签问题
四、实测效果
-
单次处理时间:约5秒(不含360加固上传下载)
-
报毒率改善:同一原始APK经处理后,在VirusTotal上检测的报毒引擎数量从15+降至3-5个
-
存活周期:平均14天以上,远超手动修改的3-5天
五、部署要求
-
服务器:Linux(CentOS 7+),4核8G以上
-
环境:Java 8、Python 3、Android SDK Build-tools
-
360加固账号(免费注册)
六、完整源码获取
后台管理系统源码、加固脚本、前端界面及部署视频教程:
ch-h.cn/1867.html