跳到主要内容
方的代码随记
返回

apktool 反编译与重签名

更新于:

反编译 APK

# d: decode 反编译,-o: output 输出路径
# 两个路径分别是待反编译的 apk 路径和输出路径
apktool d /xxx/app-release.apk -o /xxx/decodeTest

# apk 内含加密 dex 时,添加 -only-main-classes 参数
apktool d path1 -o path2 -only-main-classes

回编译 Smali 生成未签名 APK

# b: build 编译,-o: output 输出路径
# 两个路径分别是 smali 文件路径和输出 apk 路径
apktool b /xxx/decodeTest -o /xxx/1.apk

jarsigner 对 APK 重签名

jarsigner -verbose -keystore /xxx/签名/xxx.keystore \
  -signedjar /xxx/signed.apk /xxx/unsigned.apk yourAlias

四个位置参数依次是:签名文件路径、签名后 APK 输出路径、未签名 APK 路径、签名文件别名。

zipalign 压缩对齐

zipalign -v -p 4 signed.apk zipalignsigned.apk

dex 转 jar

把 xxx.apk 改后缀为 .zip 并解压,得到 classes.dex,再用 dex-tools 转换:

sh /xxx/d2j-dex2jar.sh /xxx/classes.dex -o /xxx/decode.jar

参数依次为:d2j-dex2jar.sh 脚本路径、解压出的 dex 文件路径、-o 指定输出路径。

反编译产物中值得关注的几个位置

反编译后的目录里,下面几处是改包名、版本号、图标和显示名称的入口:

文件作用
AndroidManifest.xml含包名信息,修改包名改这里
apktool.yml含 versionCode、versionName 等
res/mipmap-hdpi 等同族目录各分辨率 icon(修改后文件名不能变)
res/values/strings应用显示名称

分享这篇文章:

上一篇
Google 重签名引起的 Facebook KeyHash 问题
下一篇
ADB 常用命令速查