前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >APK多渠道加固打包笔记之360加固宝

APK多渠道加固打包笔记之360加固宝

作者头像
小柔
发布2022-10-09 11:04:34
1.4K0
发布2022-10-09 11:04:34
举报
文章被收录于专栏:小柔博客园小柔博客园

theme: channing-cyan

知识储备

首先需要知道V1,V2,V3签名的区别,可以参考之前的文章:AndroidV1,V2,V3签名原理详解

前言:一般开发者会指定使用自己创建的证书,如果没有指定,则会默认使用系统的证书,该默认的证书存储在C:\Users\admin.android\debug.keystore,不同的电脑可能安装不同路径。一个签名证书文件中,是包含一对公私钥,用私钥对apk进行签名,在安装到android手机时,系统会使用证书中对应签名私钥的公钥来验证,查看apk是否被更改过,如果没有则可以安装在手机上。任何的app store都不允许使用默认的debug.keystore打包的apk发布上去,因为debug.keystore的密码是默认的,不安全。 一,没有签名的APK无法安装 Android的APK要进行签名才能够安装到手机上,这是因为在安装的时候系统会进行检测,平时我们直接点AS里面那个绿色的运行按钮也能够直接安装到手机上,这是因为其实它也进行了签名,只不过AS自动帮我们做了这个操作有个默认的签名

大致流程

  • 找到assembleRelease生成的app-release.apk
  • 在assembleRelease后面新建Task处理apk包
  • 对这个apk进行加固
  • 对这个apk进行多渠道打包
  • 对多渠道的apk重新签名 360加固宝 命令行 登录 -jar jiagu.jar –login <username><password>

导入签名

java -jar jiagu.jar -importsign <keystore_path> <keystore_password> <alias>

导入渠道列表文件 java -jar jiagu.jar -importmulpkg <mulpkg_path>

加固 多渠道打包

java -jar jiagu.jar -jiagu <inputAPKpath> <outputpath> -autosign -automulpkg

找到assembleRelease生成的app-release.apk
代码语言:javascript
复制
findReleaseApkPath = { ->
    def appBuildOutPut = new File("${rootProject.rootDir}/app/build/outputs/apk/release")
    def apkFile = null
    appBuildOutPut.eachFile {
        if (it.name.endsWith(".apk") &amp;&amp; it.name.contains("release")) {
            println(it)
            apkFile = it
        }
    } 
    return apkFile
}
处理apk包
代码语言:javascript
复制
/**
* 通过调用360的命令行加固并且多渠道打包
* 参数: 
* apk -> 原有release包的文件
* outputPath -> 多渠道打包后文件输出路径
*/
reinForceApk = { File apk, File outPutPath ->
    println(outPutPath)
    if (apk == null || !apk.exists()) {
        println("没有找到apk文件")
        throw new FileNotFoundException("没有找到APK文件")
    }
    if (!outPutPath.exists()) {
        outPutPath.mkdirs()
      } 
      //360加固和多渠道打包命令行
java -jar ${rein360ForceJarPath} -login ${account360}
${psw360}".execute().waitForProcessOutput(System.out, System.err)
"java -jar ${rein360ForceJarPath} -importmulpkg
${mulpkgPath}".execute().waitForProcessOutput(System.out, System.err)
"java -jar ${rein360ForceJarPath} –importsign ${keyStorePath} ${KEYSTORE_PASSWORD}
${KEY_ALIAS} ${KEY_PASSWORD}".execute().waitForProcessOutput(System.out, System.err)
"java -jar ${rein360ForceJarPath} -config -
analyse".execute().waitForProcessOutput(System.out, System.err)
"java -jar ${rein360ForceJarPath} -jiagu ${apk.path} ${outPutPath.path} -autosign -
automulpkg".execute().waitForProcessOutput(System.out, System.err)
}
将处理apk的task写到输出release包后的task上
代码语言:javascript
复制
task assembleReinForceRelease() {
    group 'multipleChannels'
    dependsOn('assembleRelease')
    doLast {
        def apk = findReleaseApkPath()
        def outputFile = new File(reinForcedOutPutPath)
        reinForceApk(apk, outputFile)
    }
}

之后使用gradle命令运行assembleReinForceRelease这个task即可,这个task依赖于assembleRelease任务,所以打release的task会先执行,执行完后获取apk的地址然后调用360的加固和多渠道打包命令行将处理后的apk输出到一个文件中,之后交由测试即可。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • theme: channing-cyan
    • 知识储备
      • 大致流程
      相关产品与服务
      移动应用安全
      移动应用安全(Mobile Application Security,MS)针对移动应用普遍存在的破解、篡改、重打包等各类安全风险,提供Android应用加固、iOS源码混淆、SDK加固等多种加固技术,拥有丰富的行业经验,已服务于金融、互联网、车联网、物联网,运营商等多个行业。稳定、简单、有效,让移动安全建设不再是一种负担。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档