APKTool-进行apk的反编译与回编译

912 阅读2分钟

一、介绍

最近对逆向感兴趣,也一直在学习逆向相关的知识,刚好看到下面这篇文章,刚好学习学习APKTool,对于APKTool的介绍和一些知识看下面的文章就够了,这里我只是展示下我的实际操作。

Android 逆向入门保姆级教程 - 掘金 (juejin.cn)

二、操作

2.1 创建签名

密码我这里填的都是123456

Snipaste_2023-08-16_23-37-04.png

2.2 新建Project

新建Project,并用上面的签名打个release包,并安装到手机上,release包我这里是ApkToolTest.apk

Screenshot_20230816_230006.png

2.3 反编译apk

将ApkToolTest.apk放到与apktool_2.8.1.jar同目录下

Snipaste_2023-08-16_22-56-43.png

执行反编译命令,前提是已经配置好了Java环境

#xxx为路径,由于我是当前目录打开的命令窗口,所以这里是 .\
java -jar xxx/apktool-2.8.1.jar d xxx/ApkToolTest.apk -o xxx/test

Snipaste_2023-08-16_22-58-47.png

完成后可以看到生成有test目录,里面就有我们所反编译的内容

image.png

2.4 回编译apk

在test\res\layout目录下找到activity_main.xml文件

Snipaste_2023-08-16_22-59-52.png

用记事本打开,将其中的 Hello World!修改为 APK_Tool,然后保存并退出

Snipaste_2023-08-16_23-01-47.png

Snipaste_2023-08-16_23-02-47.png

接着我们输入回编译的命令

java -jar xxx/apktool-2.8.1.jar b xxx/test -o xxx/ApkToolTest2.apk

Snipaste_2023-08-16_23-06-22.png 接着我们还要给这个回编译生成的apk打上签名才能让手机安装

将ApkToolTest2.apk移动至Android的SDK\build-tools目录下(找到自己安装的Android SDK目录)

选择 apksigner 来签名,签名命令如下:

java -jar sdk/build-tools/30.0.3/lib/apksigner.jar sign --ks "密钥库文件路径" --ks-pass pass:"密钥库密码" --ks-key-alias "密钥别名" --key-pass pass:"密钥别名密码" --out 签名后输出的文件.apk 需要被签名的文件.apk

执行后可以看到生成了release.apk,这个就是我们打上签名的ApkToolTest2.apk

Snipaste_2023-08-16_23-22-00.png

这时候,我们需要将原来的apk给卸载掉,安装这个回编译的包(release.apk),安装后可以看到Hello World!变成了APK_Tool,至此大功告成!!!

Screenshot_20230816_232312.png