前言
现在写个APP不加固,太危险了,特别对于商业APP。反编译你的代码,窥探你的商业机密,更有甚者插入广告,修改你的代码 ,你辛辛苦苦写的APP,就成别人的了。各大应用市场也对应用安全越来越重视了,你想上应用市场(应用宝,360,等市场),已经不好上传了,需要上传应用软著,APP加固。APP加固无形中又加大了工作量,好在有大厂帮我们加固。
360加固保
360加固保是为移动应用安全提供专业保护的平台,盗版APP通常是将正版APP进行破解、篡改后重新打包生成的应用。如果手机APP能够具备防反编译、防反破解能力,就可以有效的防止APP被盗版。
360加固保专为开发者的应用提供免费安全加固服务,独创了多重防护方式,对应用程序深度加密处理;独有的程序文字信息加密功能,能有效防止应用被反编译和恶意篡改,保护应用不被二次打包,保护数据信息不会被黑客窃取。开发者无需任何开发成本,一键上传,即可在5分钟内完成应用加固,从而彻底防止应用在上线后被反编译、调试、破解、二次打包和内存截取等多种威胁。给予官方应用最强保护,从源头消灭恶意盗版应用,保护开发者收入。
360加固保在为APP提供加固服务的同时,还为开发者提供APP数据分析、崩溃日志分析、盗版监测和漏洞扫描等服务,全方位帮助开发者了解数据健康与运行状况。截止2015年第二季度,已使用360加固保的应用达30万,应用所覆盖的用户超过10亿,360加固保已经成为国内最大的移动应用保护平台。
Quick Start
为了方便大家的使用,360加固保提供了2种使用方式:
IDE操作
使用360加固保官网为我们提供的加固保软件,一看就会,傻瓜式操作。
使用命令行
命令行操作是比较隐藏的,360加固保官网也没有做作任何说明,推荐使用软件界面操作
下载 “360加固保”软件
解压
下载下来的“360加固保”软件是一个zip包,解压后的目录:
加固jar
提供加固功能的jar包
渠道模板
生成生各种渠道的apk模板文件
jar命令
JiaGu360
360提供的两种方式都不太适合自动化流程开发,IDE操作,需要人工来,命令行操作繁琐。JiaGu360 根据360加固命令实现app快捷加固的插件,解放双手,实现自动化流程。
Gradle插件使用方式
配置build.gradle
在位于项目的根目录 build.gradle
文件中添加 ApkSign插件的依赖, 如下:
buildscript {
dependencies {
classpath 'com.zf.plugins:JiaGu360:1.0.1'
}
}
并在当前App的 build.gradle
文件中apply这个插件
apply plugin: 'jiagu360'
配置插件(最简易配置)
jiaGu360Config {
//必填,360用户名
userName "XXXXXX"
//必填, 360密码
passWord "XXXXXX"
//必填,360加固jiagu.jar包位置
jiaGuJarPath new File("D:\\XXXXX\\360jiagubao_windows_64\\jiagu\\jiagu.jar").absolutePath
items {
debug {
//必填, 需要签名的APK 路径
inputApkFilePath file("build/outputs/apk/tap_unsign.apk").absolutePath
}
// ...... 可以添加更多选项
}
}
插件全部配置
jiaGu360Config {
//必填, 360用户名
userName "XXXXXX"
//必填, 360密码
passWord "XXXXXX"
//必填, 360加固jar包位置
jiaGuJarPath new File("D:\\XXXXX\\360jiagubao_windows_64\\jiagu\\jiagu.jar").absolutePath
//加固配置项服务是否都支持
isSupportAll false
//统一配置 优先低于自定义配置--------------------------start----------------------------------------------------------------------
//android 签名配置名称,默认android默认的'debug'签名配置,signingName="debug"
signingName 'debug'
//加固apk的输出目录
outputApkDirPath new File("D:\\XXXXX\\360jiagubao_windows_64\\jiagu\\XXXX").absolutePath
//加固完成后是否打开输出目录。默认false
openOutputDir false
// 加固配置项服务-------------------------------start-------------------------------------
// 可选增强服务--------------start----------------------
isSupportCrashLong false //【崩溃日志分析】
isSupportX86 false //【x86支持】
isSupportAnalyse false//【加固数据分析】
isNocert false//【跳过签名校验】
// 可选增强服务--------------end----------------------
//高级加固选项-------------start------------------
isSupportVmp false//【全VMP保护】
isSupportDataProtection false//【本地数据文件保护】
isSupportAssetsProtection false// 【资源文件保护】
isSupportFileCheck false//【文件完整性校验】
isSupportPtrace false//【Ptrace防注入】
isSupportSoProtection false//【SO文件保护】
isSupportDex2cProtection false//【dex2C保护】
isSupportStringObfusProtection false//【字符串加密】
isSupportDexShadowProtection false//【DexShadow】
isSupportSoPrivateProtection false//【SO防盗用】
//高级加固选项-------------end------------------
// 加固配置项服务--------------------------------end---------------------------------------------
//自动签名
autosign false
//自定义文件生成多渠道,可以根据前面下载的360加固软件里的 “多渠道模板.txt” 编写
mulpkgFilePath =new File("D:\\XXXXX\\360jiagubao_windows_64\\jiagu\\多渠道模板.txt")
//签名配置项
signingInfo {
storeFilePath "E:\\Document\\XXXXXX.jks"
storePassword "XXXXXX"
keyAlias "XXXXXX"
keyPassword "XXXXXX"
}
//统一配置 --------------------------end----------------------------------------------------------------------
items {
release {
//必填, 需要加固的APK 路径
inputApkFilePath file("build/outputs/apk/XXXX.apk").absolutePath
//自定义配置-----------------------------start-----------------------------------------------------------------------
//android 签名配置名称,默认android默认的'debug'签名配置,signingName="debug"
signingName 'debug'
//加固apk的输出目录
outputApkDirPath new File("D:\\XXXXX\\360jiagubao_windows_64\\jiagu\\XXXX").absolutePath
//加固完成后是否打开输出目录。默认false
openOutputDir false
// 加固配置项服务-------------------------------start-------------------------------------
// 可选增强服务--------------start----------------------
isSupportCrashLong false //【崩溃日志分析】
isSupportX86 false //【x86支持】
isSupportAnalyse false//【加固数据分析】
isNocert false//【跳过签名校验】
// 可选增强服务--------------end----------------------
//高级加固选项-------------start------------------
isSupportVmp false//【全VMP保护】
isSupportDataProtection false//【本地数据文件保护】
isSupportAssetsProtection false// 【资源文件保护】
isSupportFileCheck false//【文件完整性校验】
isSupportPtrace false//【Ptrace防注入】
isSupportSoProtection false//【SO文件保护】
isSupportDex2cProtection false//【dex2C保护】
isSupportStringObfusProtection false//【字符串加密】
isSupportDexShadowProtection false//【DexShadow】
isSupportSoPrivateProtection false//【SO防盗用】
//高级加固选项-------------end------------------
// 加固配置项服务--------------------------------end---------------------------------------------
//自动签名
autosign false
//自定义文件生成多渠道,可以根据前面下载的360加固软件里的 “多渠道模板.txt” 编写
mulpkgFilePath =new File("D:\\XXXXX\\360jiagubao_windows_64\\jiagu\\多渠道模板.txt")
//签名配置项
signingInfo {
storeFilePath "E:\\Document\\XXXXXX.jks"
storePassword "XXXXXX"
keyAlias "XXXXXX"
keyPassword "XXXXXX"
}
//自定义配置-----------------------------end-----------------------------------------------------------------------
}
debug {
//需要加固的APK 路径
inputApkFilePath file("build/outputs/apk/XXXX.apk").absolutePath
}
// ...... 可以添加更多选项
}
}
配置项具体解释:
-
当 “统一配置” ,“自定义配置” 设置的参数都存在时, 自定义配置 > 统一配置 , 这是总的原则
-
当
isSupportAll=true
时 ,统一配置里的可配置服务全部都支持 -
signingInfo
,signingName
都配置时,优化级为signingInfo
>signingName
;当两个配置项都不配置时,默认使用 android项目里的默认debug签名。 -
signingName='release'
签名信息配置的名称,
生成apk加固包:
./gradlew jiagu360${item配置名称(首页字母大小)}
如上面的配置,生成签名包需要执行如下命令:
./gradlew jiagu360Release
360加固升级命令:
./gradlew jiagu360Update