Android 反编译apk,然后修改内容后二次签名打包

news/2024/7/5 7:53:00

一. 反编译apk,二次签名.

1. 下载apktool.jar ,下载地址: iBotPeaches / Apktool / Downloads — Bitbucket

2. mac电脑使用 apksigner 方式签名, 需要配置环境.

     2.1 命令行输入: open .bash_profile, 在打开的环境配置文件中添加,根据自己SDK目录配置        

export APK_SIGNER_HOME=/opt/android-sdk/build-tools/28.0.3
export PATH=$PATH:$APK_SIGNER_HOME

        2.2 添加上述环境后关闭文件即可, 然后执行刷新命令: source .bash_profile

3. 把要反编译的apk, apktools.jar和签名文件放到同一文件夹下.

下面开始反编译和二次签名操作:

命令行 cd 到test目录下:

1.反编译 test.apk 包, 成功后会生成一个 反编译后的test文件.

java -jar apktool.jar d test.apk

 

2. test文件夹就是apk内容, 进行你要修改的操作 

3. 把test文件夹下的 META-INF 文件删除.

4. 执行打包命令,执行完之后会生成一个未签名的 ccc.apk 包:

apktool b test -o ccc.apk

test是反编译test.apk后生成的文件夹. 
ccc.apk 是你打包的新apk.

 5.  对上面生成的test.apk进行签名:

//签名,只有V1签名
jarsigner -verbose -keystore 签名文件 ccc.apk 签名文件的别名

//签名,V1,保留未签名的旧apk
jarsigner -verbose -keystore 签名文件 -signedjar newccc.apk ccc.apk 签名文件的别名

//V1和V2签名
apksigner sign --ks 签名文件 --ks-key-alias 签名文件的别名 ccc.apk

 6. 附属命令

//查看签名信息
keytool -printcert -jarfile ccc.apk

//检查 Apk 是否已签名,两个命令都可以
apksigner verify -verbose -print-certs ccc.apk
apksigner verify -v --print-certs ccc.apk

二. 不修改class.dex和so等文件,直接替换assets等文件

assets文件下的资源是未编译过的,可以直接替换.

如果是替换 AndroidManifest.xml 文件必须是在源文件或把apk反编译之后的文件进行修改,然后再打成apk包,签名之后. 再从这个签名后的apk中解压拿到AndroidManifest.xml, 这才是被编译过的文件. 如果使用AndroidManifest.xml 源文件替换会签名失败.

 替换apk包的文件,先删除,再添加. 

1. 把要替换的文件,apk和签名文件放到一个目录中.

 若要修改assets目录下的文件,这需要把修改的文件放到assets文件夹下,路径需和apk中一致.

 有些编译过的文件必须使用打包签名后获取到的,源文件不行.如: AndroidManifest.xml

 2. 使用下面的命令替换文件. 

//替换assets目录下文件
aapt r test.apk assets/xxx.json
aapt a test.apk assets/xxx.json

//替换AndroidManifest.xml文件
aapt r test.apk AndroidManifest.xml
aapt a test.apk AndroidManifest.xml

3. 使用签名命令

apksigner sign --ks 签名文件 --ks-key-alias 签名文件的别名 test.apk


http://lihuaxi.xjx100.cn/news/1251675.html

相关文章

H5动画新利器:Svga和Lottie带你开启互动时代

需求需要在h5页面中做复杂动效,调研了几种常用的方案,跟UI一起尝试。 调研 占用内存对比: 从大到小: 视频>序列帧>GIF>APNG/WEBP>LOTTIE/SVGA 质量稳定对比: 从差到…

阿里云国际站:阿里云服务器安全性如何?有哪些安全措施和防护机制?

阿里云国际站:阿里云服务器安全性如何?有哪些安全措施和防护机制?   阿里云服务器安全性简介   作为全球领先的云计算服务提供商,阿里云始终注重保障用户数据安全。在面对各种网络攻击和安全威胁时,阿里云积极构建…

I2C中的时钟同步与仲裁

时钟同步和仲裁 在单主设备中,不需要时钟同步和仲裁。而在多设备时,多个主设备可以同时在空闲的总线上开始发送数据,这时就需要仲裁决定哪一个来控制总线并完成它的数据传输,有时候也需要时钟同步来协同设备间的工作。而这正是通过…

Web网页制作期末复习(1)——HTML5介绍、HTML5的DOCTYPE声明、HTML基本骨架、标题标签、段落 换行、水平线图片图片路径、超链接

目录 HTML5介绍 HTML5的DOCTYPE声明 HTML基本骨架 标题标签 段落、换行、水平线 图片 图片路径* 超链接 HTML5介绍 HTML5是用来描述网页的一种语言,被称为超文本标记语言。用HTML5编写的文件,后缀以.html结尾 HTML是一种标记语言,标…

Appium 并发多进程基于 Pytest框架详解

目录 前言: 改造思路: 实现: 最后: 总结: 前言: 之前通过重写unittest的初始化方法加入设备参数进行并发,实现了基于unittest的appium多设备并发,但是考虑到unittest的框架实在…

全链路压测演进之迭代式压测

目录 1.背景原因 2.压测流程改进分析 3.迭代式压测流程 4.全流程压测模式演进 5.压测模式对比 6.迭代式压测反馈效果 7.总结 1.背景原因 !! 做系统服务压测都是比较耗时耗人力的,特别是在生产环境上做压测,压测的时间都是在晚上23点后&#xff0c…

cf1678 B 思维

题意:https://www.luogu.com.cn/problem/CF1678B2 思路:对于这种每段都是偶数的题来说,我们直接划分成最小的偶数段也就是2个一段,然后出现不一样我们就需要操作一次,对于最小段数来说我们直接看有多少已经确定的段数…

华为OD机试真题B卷 JavaScript 实现【乱序整数序列两数之和绝对值最小】,附详细解题思路

一、题目描述 给定一个随机的整数(可能存在正整数和负整数)数组 nums,请你在该数组中找出两个数,其和的绝对值(|nums[x]nums[y]|)为最小值,并返回这个两个数(按从小到大返回)以及绝对值。 每种…