数智学习中心 计科随机库
学习专区 Linux专栏 博客圈 计科之路 登录
Android反编译修改apk并重新打包

Apktool 是反编译Apk的第三方工具,它可以反编译资源,并在修改之后重新生成Apk

注意:apktool 依赖 Java1.8。请使用 java -version 查看,是否为1.8或更高版本。

1. 使用apktool.jar反编译解包

将需要编译的apk和apktool.jar放到同一个文件夹下

在cmd终端,cd到此目录下,输入以下命令:

#

test.apk: 表示反编译的apk

out: 表示反编译后资源存放目录

#

java -jar apktool.jar d -f test.apk -o out

执行后当前目录下生成 out 文件夹存放反编译后的资源文件

2. 修改反编译apk信息

现在可以修改 out 里面的信息,修改应用版本号只需要修改apktool.yml即可,apktool.yml文件中找到versionCode和versionName,修改对应的值保存即可

修改应用名只需要修改res/values/strings.xml文件中app_name属性对应的值即可

修改应用图标只需要替换res/mipmap-xxx目录下对应的图标

修改包名需要修改多个地方,最难修改的部分就是对应java代码的smali文件夹,假设将com.demo.test修改成com.demo1.test1,需要修改以下内容:

AndroidManifest.xml 中所有com.demo.test替换成com.demo1.test1

smali/com/demo/test 目录重命名为 smali/com/demo1/test1

遍历 smali 目录下所有文件,将文件中所有com.demo.test替换成com.demo1.test1

遍历 smali 目录下所有文件,将文件中所有com/demo/test替换成com/demo1/test1

3:通过修改后的文件重新回编成apk文件

再使用下面命令将我们的out文件夹重新编译成apk文件,也就是命令中的modify.apk

#

modify.apk: 新生成的apk文件(未签名合对齐)

out: 表示将out文件夹编译成apk

#

java -jar apktool.jar b -o modify.apk out

4:对新的apk文件进行重签名以及内存对齐

将使用 jarsigner 工具进行签名,jarsigner是JDK提供的对jar包签名通用工具(位于jdk/bin/目录)

将签名用的签名文件 test.keystore 放入当前文件夹,使用下面命令对apk签名

#

test.keystore: 给apk签名用的签名文件

123456:签名文件的密码

modify_signed.apk: 签名后生成的apk文件

modify.apk: 指定需要签名的apk文件

testalias: 签名文件的别名

#

jarsigner -verbose -keystore test.keystore -storepass 123456 -signedjar modify_signed.apk modify.apk testalias

将使用 zipalign 工具进行内存对齐,zipalign是对zip包对齐的工具(位于AndroidSDK/build-tools/SDK版本/目录),使APK包内未压缩的数据有序排列对齐,减少APP运行时内存消耗

将 zipalign 拷贝放入当前文件夹,使用下面命令对 apk 进行内存对齐

#

对apk进行4字节对齐

#

modify_signed.apk: 需要内存对齐的apk文件

modify_signed_aligned.apk: 对齐后生成的apk文件

#

zipalign -v 4 modify_signed.apk modify_signed_aligned.apk

最终生成的modify_signed_aligned.apk就是我们最终要用的apk文件

————————————————

版权声明:本文为CSDN博主「晴天有时下雨️」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/jxfcwys/article/details/126933003

评论留言

一共0条留言