note/android/HackAPK.md
2022-05-07 16:26:58 +08:00

2.8 KiB
Raw Blame History

tags

Android App 逆向

前置工具

流程概要

  1. 通过adb把目标apk导出到电脑
  2. 用Jadx反编译apk定位到要修改的位置
  3. 用ApkTool反编译apk找到并修改目标
  4. 修改并保存后用ApkTool构建新的apk
  5. 用ApkSigner对新的apk进行签名
  6. 卸载旧的APK安装新的

有用的链接

具体流程

导出目标App的Apk文件

  1. adb shell pm list package <Filter> 列出所有包
  2. adb shell pm path 包名 查看安装路径
  3. 根据输出路径,用 adb pull 拉到电脑上 示例:
> adb shell pm list package
package:com.andr...
...
package:com.DeviceTest
...
> adb shell pm path com.DeviceTest
package:/system/priv-app/DeviceTest/DeviceTest.apk
> adb pull /system/priv-app/DeviceTest/DeviceTest.apk D:\DeviceTest\

用 jadx-gui 反编译 apk

这个很简单安装好以后直接选择打开apk就可以看到反编译代码了。

可以选择导出项目,然后用自己喜欢的开发环境打开查看。

这一步的目的是查看apk代码定位要修改的位置因为接下来修改要用另一个方式进行。

用 apk tool 反编译 apk

  1. 根据安装教程安装apk tool
  2. 根据基础教程使用 其实非常简单,apktool d DeviceTest.apk 就可以反编译了,改完代码以后用 apktool b DeviceTest 就可以重新编译了,编译后的结果在该目录下 DeviceTest/dist/DeviceTest.apk

用VSCode打开反编译的文件夹可以选择装smali插件来提供语法提示,因为要修改的代码是smali语言的。

根据jadx-gui中定位文件和方法然后在smali中修改达到自己预期目的。这部分网上有一些博客就不具体描述了。

修改完成后,用参数b来构建apk即可。

用 uber-apk-signer 签名apk

apk tool 构建的apk是没有签名的无法直接安装因此需要使用签名工具对apk进行签名。 直接 java -jar uber-apk-signer.jar -a D:\DeviceTest\dist\DeviceTest.apk --allowResign --overwrite 签名

用 adb install 安装apk

  1. adb uninstall com.DeviceTest 卸载旧的APK
  2. adb install D:\DeviceTest\dist\DeviceTest.apk 安装新的APK 后续只需要加上-r参数覆盖就可以了,不用每次卸载。adb install -r D:...