当前位置: 首页 > news >正文

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

知识储备

首先需要知道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自动帮我们做了这个操作有个默认的签名

企业微信截图_16546061905218.png

大致流程

  • 找到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
findReleaseApkPath = { ->def appBuildOutPut = new File("${rootProject.rootDir}/app/build/outputs/apk/release")def apkFile = nullappBuildOutPut.eachFile {if (it.name.endsWith(".apk") && it.name.contains("release")) {println(it)apkFile = it}} return apkFile
}
处理apk包
/**
* 通过调用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上
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输出到一个文件中,之后交由测试即可。

原文链接:APK多渠道加固打包笔记之360加固宝 - 掘金 (juejin.cn)

相关文章:

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

知识储备 首先需要知道V1,V2,V3签名的区别&#xff0c;可以参考之前的文章&#xff1a;AndroidV1,V2,V3签名原理详解 前言&#xff1a;一般开发者会指定使用自己创建的证书&#xff0c;如果没有指定&#xff0c;则会默认使用系统的证书&#xff0c;该默认的证书存储在C:\Users…...

编程天赋和努力哪个更重要?

编程天赋和努力在编程中都非常重要&#xff0c;但它们的侧重点不同。 编程天赋通常指的是与生俱来的、在逻辑思维、抽象思维、创造力等方面的能力&#xff0c;这些能力可以帮助程序员更快地理解问题、更高效地设计和实现解决方案。天赋的确可以帮助程序员更容易地入门和更快地掌…...

SpringCloud Alibaba之Nacos配置中心配置详解

目录 Nacos配置中心数据模型Nacos配置文件加载Nacos配置 Nacos配置中心数据模型 Nacos 数据模型 Key 由三元组唯一确定&#xff0c;三元组分别是Namespace、Group、DataId&#xff0c;Namespace默认是公共命名空间&#xff08;public&#xff09;&#xff0c;分组默认是 DEFAUL…...

个人实际开发心得感悟及学习方法

前言 我的学习路线应该和大多数人的学习路线差不多,快速的学习完html和css,很多东西都没有记住的情况下就进入了js的学习,js学的懵懵懂懂就进入了node.js的基础学习和webpack的了解式学习,然后就跨度到了vue和react框架的学习。 节奏很快,学习的基础也极其不扎实。正如同那句…...

光速爱购--靠谱的SpringBoot项目

简介 这是一个靠谱的SpringBoot项目实战&#xff0c;名字叫光速爱购。从零开发项目&#xff0c;视频加文档&#xff0c;十天就能学会开发JavaWeb项目。 教程路线是&#xff1a;搭建环境> 安装软件> 创建项目> 添加依赖和配置> 通过表生成代码> 编写Java代码&g…...

P1019 [NOIP2000 提高组] 单词接龙

网址如下&#xff1a;P1019 [NOIP2000 提高组] 单词接龙 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 很怪&#xff0c;不知道该说什么 我试了题目给的第一个测试点的输入&#xff0c;发现输出和测试点的一样&#xff0c;但是还是WA 不是很懂为什么 有没有大佬帮我看一下…...

图解设计模式-中介者模式(Mediator)

中介者模式 定义 使用一个中介者对象&#xff08;mediator&#xff09;集中封装多个具有依赖/关联关系的对象&#xff08;colleague&#xff0c;同事对象&#xff09;之间的交互&#xff0c;使各对象之间不再互相引用&#xff0c;降低对象之间的强耦合程度&#xff0c;对象之…...

小程序面试问答(解决方案)

目录 问&#xff1a;uni-app 组件库的解决方案&#xff1f;&#xff08;xx 分钟&#xff09; 必答​ 加分​ 深入​ 再深入​ 参考链接​ 问&#xff1a;在 uni-app 中&#xff0c;如何进行全局状态管理&#xff1f;请介绍一下你对 Vuex 和 Pinia 的了解。​ 必答​ 加…...

qt第三天快速回顾

控件 listWidget 两种添加方式 1QListWidgetItem 2QStringList(链式编程) TreeWidget 核心代码 1设置头的标签 2.Item创建 添加顶层级别的Item 3.创建子Item 挂载到顶层的Item上 QLabelWidget 表格 增加了一个删除和添加 1.设…...

Android 编译过程介绍,Android.mk 和 Android.bp 分析, 在源码中编译 AndroidStudio 构建的 App

Android 编译过程介绍&#xff0c;Android.mk 和 Android.bp 分析&#xff0c; 在源码中编译 AndroidStudio 构建的 App_.mk编译目录所有.bp-CSDN博客...

【C++】几种常用的类型转换

类型转换 c语言中的类型转换C的类型转换static_castreinterpret_castconst_castdynamic_cast c语言中的类型转换 在C语言中我们经常会遇到类型转化的问题&#xff0c;主要分为两种&#xff1a;显式类型转换和隐式类型转换。 显式类型转换&#xff1a;就是程序员使用强制类型转…...

CCNP课程实验-07-OSPF-Trouble-Shooting

目录 实验条件网络拓朴 环境配置开始排错错点1&#xff1a;R1-R2之间认证不匹配错误2&#xff1a;hello包的时间配置不匹配错误3&#xff1a;R2的e0/1接口区域配置不正确错误4&#xff1a;R4的e0/1接口没有配置进OSPF错误5&#xff1a;R2的区域1没有配置成特殊区域错误6&#x…...

75.乐理基础-打拍子-八三、八六拍的三角形打法

内容来源于&#xff1a;三分钟音乐社 上一个内容&#xff1a;八几拍的V字打法-CSDN博客 在八几拍中几乎只会遇到八三和八六拍&#xff0c;它的V字打法&#xff0c;每个一拍都是一个V字&#xff0c;但是它还有某种程度上更方便的方式去打&#xff0c;按图1 八六拍的三角形&…...

STLink下不了程序的解决办法

目录 1.检查物理接线是否正确 2.检查工程中用的引脚与这两个引脚是否有冲突 3.其次查看HAL_MspInit函数中是否使能SWJ 1.检查物理接线是否正确 2.检查工程中用的引脚与这两个引脚是否有冲突 stm32 swdio和swdclk引脚分别与stm32的PA13&#xff0c;PA14引脚相连 3.其次查看HA…...

操作系统---期末应用综合题

目录 操作系统---期末应用综合题 操作系统---期末应用综合题 1&#xff0e; 若在一分页存储管理系统中&#xff0c;某作业的页表如表1所示。已知页面大小为1024字节&#xff0c;试将逻辑地址1011&#xff0c;5012&#xff08;十进制数&#xff09;转化为相应的物理地址。 表1…...

56K star!一键拥有跨平台 ChatGPT 应用:ChatGPT-Next-Web

前言 现在围绕 openai 的客户端层出不穷&#xff0c;各路开发大神可以说是各出绝招&#xff0c;我也试用过几个国内外的不同客户端。 今天我们推荐的开源项目是目前我用过最好的ChatGPT应用&#xff0c;在GitHub超过56K Star的开源项目&#xff1a;ChatGPT-Next-Web。 ChatGP…...

springMvc向request作用域存储数据的4种方式

文章目录 目录1、springmvc使用ServletAPI向request作用域共享数据&#xff08;原生态&#xff09;2、springmvc使用ModelAndView向request作用域共享数据3、springmvc使用Model向request作用域共享数据4、springmvc使用map向request作用域共享数据5、springmvc使用ModelMap向r…...

SolidUI Gitee GVP

感谢Gitee&#xff0c;我是一个典型“吃软不吃硬”的人。奖励可以促使我进步&#xff0c;而批评往往不会得到我的重视。 我对开源有自己独特的视角&#xff0c;我只参与那些在我看来高于自身认知水平的项目。 这么多年来&#xff0c;我就像走台阶一样&#xff0c;一步一步参与…...

uthash -- basic

1. 了解什么是 hash 参考链接 2. 开源 uthash 如何使用 uthash源码链接 uthash使用参考链接 2. 开源 uthash 的实现详解 源码参考链接 源码注释版参考链接...

利用MATLAB绘制折线图

介绍 Matlab画图线型、符号及颜色汇总&#xff1a; https://blog.csdn.net/qq_40969467/article/details/90758281 实例&#xff1a; x20:20:140;%x轴上的数据&#xff0c;第一个值代表数据开始&#xff0c;第二个值代表间隔&#xff0c;第三个值代表终止a[0.85, 2.2, 3.45,…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说&#xff0c;在叠衣服的过程中&#xff0c;我会带着团队对比各种模型、方法、策略&#xff0c;毕竟针对各个场景始终寻找更优的解决方案&#xff0c;是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...

DAY 26 函数专题1

函数定义与参数知识点回顾&#xff1a;1. 函数的定义2. 变量作用域&#xff1a;局部变量和全局变量3. 函数的参数类型&#xff1a;位置参数、默认参数、不定参数4. 传递参数的手段&#xff1a;关键词参数5 题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一…...

HTTPS证书一年多少钱?

HTTPS证书作为保障网站数据传输安全的重要工具&#xff0c;成为众多网站运营者的必备选择。然而&#xff0c;面对市场上种类繁多的HTTPS证书&#xff0c;其一年费用究竟是多少&#xff0c;又受哪些因素影响呢&#xff1f; 首先&#xff0c;HTTPS证书通常在PinTrust这样的专业平…...