从设备获取 android 应用程序进行倒车 - 如果有多个 apk 怎么办?

逆向工程 二元分析 安卓
2021-06-12 02:22:46

为了分析和逆向安卓应用,目标应用安装在安卓手机上,通常base.apk设备上有一个文件,有多种方法可以在设备上找到这个apk文件,从设备上找到adb pull它。

例如,在stackoverflow 上,yojimbo 的回答有 1500 多个赞成票,给出了以下 3 个步骤:

  1. 确定应用程序的包名称,例如“com.example.someapp”。使用adb shell pm list packages.
  2. 获取所需包的 APK 文件的完整路径名。使用adb shell pm path com.example.someapp
  3. 使用第 2 步中的完整路径名,将 APK 文件从 Android 设备拉到开发盒中。使用adb pull /data/app/com.example.someapp-2.apk path/to/desired/destination

听起来很简单,到目前为止,它已经在许多应用程序中出现。然后,今天,我遇到了一个应用程序,其中第 2 步返回的不是 1 个而是 3 个 apk 文件:

adb shell pm path the.app.package
package:/data/app/the.app.package-che0LFSLF9su1gFiz9cVbw==/base.apk
package:/data/app/the.app.package-che0LFSLF9su1gFiz9cVbw==/split_config.arm64_v8a.apk
package:/data/app/the.app.package-che0LFSLF9su1gFiz9cVbw==/split_config.xxxhdpi.apk

我用the.app.package. 我猜有部分代码是特定于 arm64_v8a 和/或 xxxhdpi 显示器的,它们被分离到 split_config apk 文件中?如何开始分析这样的应用程序,其中不仅有 base.apk 文件,还有一些额外的 apk 文件?

1个回答

你问你应该如何开始;第一步可能是确定每个 APK 中的内容以及它是否与您的目标相关。只需将它们全部提取出来并四处看看。

正如 Robert 的评论所说,Android App Bundles是一种通用格式,通过仅提供特定设备所需的组件来实现应用程序的模块化。因此,在这种情况下,这 3 个 APK 似乎包含基本应用程序、ARMv8 的本机库以及 HDPI 设备的相应资产/资源。

我认为,如果您查看每个 APK,您可能很快就会意识到哪些部分与您相关或不相关,具体取决于您对什么特别感兴趣。