apk提取

使用场景

已安装应用,但是原有的apk已删除或无法找到,这时可以通过apk提取工具在已安装应用的手机上提取出原有的apk文件。

推荐应用

图标 App 名称 App 提供功能路径 特色功能
apk提取_1.3.png
apk 提取(免费)
点击需要提取的 app,在弹出的页面中选择【提取 apk】或【发送 apk】 【发送 apk】功能可以把【提取】和【发送】2个步骤结合,直接一步到位
实用工具箱_2.9.png
实用工具箱(免费)
设备工具 - 应用管理 - 点击需要提取的应用 - 选择【提取安装包】 除了提取 apk,还集成了许多其他功能,是功能强大的综合应用。
开发助手_5.7.1-cs.png 开发助手(收费) 应用相关-Apk提取 可以直接在手机反编译,但是该功能目前比较鸡肋,反编译的无法回编译,属于半成品

apk反编译、回编译与签名

主要参考文献1,工具也是由文献1提供。该工具可以通过csdn下载,不过需要下载积分,已经下载一份并备份至百度云

以下内容在文献1中都有,这里主要是做一些简化。以修改其中某个按钮的链接为例(将链接改为本地的网址链接,方便调试),不涉及功能实现或大的修改。

apk反编译

解压工具后,有3个文件夹,将待反编译的apk放在Apktool文件夹中。
image.png
点击cmd.bat,在打开的cmd窗口中输入 apktool -f [待反编译的 apk] -o [反编译之后存放文件夹]

  1. apktool.bat d -f test.apk -o test

生成的文件夹就是反编译后的文件夹,如这里就是test文件夹
image.png

apk回编译

使用vscode打开test,全局搜索到需要替换的链接,全部改掉以后开始回编译。
再次打开上面的cmd.bat文件,输入 apktool.bat b [反编译之后存放的文件夹]

  1. apktool.bat b test

在反编译之后存放的文件夹中,如test文件夹,可以看到生成了dist文件夹,dist中就是编译后的apk文件,但是这里面的apk还不能直接安装。
image.png

签名

将上面dist中生成的待签名的apk放到这个文件夹下,在该目录下运行cmd,输入 java -jar signapk.jar testkey.x509.pem testkey.pk8 [待签名的apk] [签名的apk文件名]

  1. java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test_signed.apk

image.png
最后拿到生成的签名后的apk,即可在android上安装。

参考

  1. Android 反编译 apk,并修改代码后重新签名打包_Abner_Crazy 的博客 - CSDN 博客