修改apk文件重新打包

2025-04-01

0. 写在前面

做android逆向的时候遇到了一个麻烦的题目,如果能够修改so文件的话就可以快速解决,奈何修改so后不知道如何重新打包android应用,现在来找补一下

1. 环境准备

1.1 java

我个人是在java8和java17之间纠结过一阵子的,直到了解到sprint-boot选用Java17作为它的主流支持版本,说明java8要被渐渐淘汰了,因此安装版本选用java17
进入oracle官网下载java17版本即可。
下载版本后直接运行完毕。
注意,java17安装完毕后,记得修改环境变量,msi安装会默认帮你在系统变量上添加一个路径,但是我们不要用它,将其修改成你实际的java安装路径,比如说我的安装路径是C:\Program Files\Java\jdk-17\bin
修改后如下图所示:
这么做的原因是保持默认无法使用java17中自带的某些签名工具,比如keytool

1.2 apktool

安卓逆向的实用工具,解包、重打包的利器,进入https://github.com/iBotPeaches/Apktool下载最新版本即可

1.3 android build-tools

这个看绝大多数的blog,都是从https://www.androiddevtools.cn/中下载的,不知道为什么,我无法访问这个网址,从https://github.com/inferjay/AndroidDevTools中尝试下载工具的百度网盘链接都过期了,有点难绷
退而求其次,去android studio官网里下载。https://developer.android.com/studio?hl=zh-cn
我们不需要安装android studio,只需要它的命令行工具就行了因此:
但是下载完后并不等于结束,将下载的压缩包解压后,进入bin目录,执行如下命令:

.\sdkmanager.bat --sdk_root=./ --install "build-tools;34.0.0"
# 执行sdkmanager命令,安装目录在当前目录下,安装build-tools,至于后面的34.0.0怎么来的
# 请看链接https://developer.android.com/tools/releases/build-tools?hl=zh-cn

下载完成后记得将其添加到环境变量中

2. 实操环节

2.1 apk解包

java -jar .\apktool_2.11.1.jar d .\app1.apk -o app1

该命令能够将app1.apk解包并把内容写到app1目录当中。

2.2 修改解包目录中的内容

这一部分模拟修改apk文件的操作,我添加了一个1.txt文件

2.3 重打包

java -jar .\apktool_2.11.1.jar b .\app1\ -o app1_new.apk

该命令能够把app1目录重新打包成apk,命名为app1_new.apk

2.4 zipalign 4字节对齐

这个是在android studio官网里看到的内容https://developer.android.com/tools/zipalign?hl=zh-cn

zipalign.exe -f 4 .\app1_new.apk app1_new_zipaling.apk

2.5 apk签名

2.5.1 keytool 生成证书文件

keytool -genkeypair -keyalg RSA -keysize 2048 -validity 10000 -keystore mykeystore.jks
# keytool是java自带的密钥和证书管理工具
# -genkeypair生成密钥对,即公钥和私钥 
# -keyalg RSA 使用RSA生成密钥 
# -keysize 2048 密钥长度2048
# -validity 10000 有效期10000天
# -keystore mykeystore.jks 私钥和公钥存放在mykeystore.jks文件中

里面的内容随便填填就好了。密钥库口令你要记得

2.5.2 apksign生成签名后的apk文件

apksigner sign -ks .\mykeystore.jks -out app1_signed.apk .\app1_new_zipaling.apk

输入你的passwd即可完成生成

2.6 验证

将app1_signed.apk拖入模拟器当中,可以正常运行:

references

Android11.0 生成系统签名.jks文件并对Apk进行签名
Android之通过 apksigner 对 apk 进行 手动签名
apksigner生成签名
zipalign安卓优化工具安装
https://developer.android.com/tools/apksigner?hl=zh-cn
https://developer.android.com/tools/releases/build-tools?hl=zh-cn
https://github.com/iBotPeaches/Apktool
【Android 逆向】修改 Android 的 apk 安装包内的文件并重新打包 ( apktool_2.6.0.jar 下载和使用 | zipalign 文件对齐 | apksigner 签名 )
Android APK重打包