/apk-reverse

Android 反编译 工具(2020.03最新版本) 及 普通使用步骤

Primary LanguageShell

Android APK 反编译

步骤 and 工具

last update time 20210728

反编译,利用apktool反编译apk得到可以修改smali源码

  • apktool d target.apk -o target

    • 若遇到DexBackedDexFile$NotADexFile错误,使用apktool d --only-main-classe target.apk -o target,正常则跳过

    • aapt 是资源编译和打包工具,apktool 2.0+ 二进制文件中内嵌aapt工具

查看源码

dex2jar将apk转换成jar
  • d2j-dex2jar -f target.apk
jd-gui或者用Android Studio阅读源码,跟反编译出来的smali对比

修改反编译出来的smali代码

  • 若对smali语法不熟悉,可以自己找资料学习一下。这里推荐一些个人认为比较好的文章

  • IDEA系的一个可将java/kotlin编译成smali的插件 java2smali, 目前只能手动安装,具体安装方法网上一大堆

apktool回编译

  • apktool b target -o target_new.apk

清除apk原签名,并用 jdkjarsigner重新签名

  • 清除签名

    • 删除apk包里面的META-INF文件夹里除MANIFEST.MF所有内容,此文件夹包含原签名信息。
  • 重新签名

    • jarsigner -verbose -keystore %KEYSTORE% -signedjar %OUTPUT% %INPUT% %ALIAS%
  • 网上教程的signapk.jar 是Android源码包中的一个签名工具,以及testkey.pk8testkey.x509.pem也是源码提供的签名文件。我们使用自己的签名文件签名就可以了

  • 安装不同签名的apk需要卸载重装