For analyzing and reversing android apps, where the target app is installed on an android phone, usually there is a base.apk
file on the device, and there are various ways to find this apk file on the device and adb pull
it off the device.
For example, on stackoverflow, the answer by yojimbo with 1500+ upvotes, gives the following 3 steps:
- Determine the package name of the app, e.g. "com.example.someapp". Using
adb shell pm list packages
. - Get the full path name of the APK file for the desired package. Using
adb shell pm path com.example.someapp
- Using the full path name from Step 2, pull the APK file from the Android device to the development box. Using
adb pull /data/app/com.example.someapp-2.apk path/to/desired/destination
Sounds simple enough, and it has been so far on many apps. Then, today, I came across an app where step 2 returned not 1 but 3 apk files:
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
where I have replaced the actual package name with the.app.package
. I'm guessing that there are parts of the code that are specific for arm64_v8a and/or xxxhdpi displays, and these are separated out into the split_config apk files? How would one begin in analyzing such apps where there's not just a base.apk but some of these additional apk files as well?