- Edited
IcyScroll gravity-reprint @angela @[deleted] @Dumdum @de0u @doct0rX @docsbibs92 @Dobroslav @dockcom @GlytchMeister @gravity-reprint @Xtreix @matchboxbananasynergy @Michiel
Before I read them myself in detail I will copy and paste the app logs for you.
The app crashes when no permissions are given to it, and these are the logs before the crash:
type: crash
osVersion: google/cheetah/cheetah:14/AP2A.240905.003/2024090400:user/release-keys
package: com.amazon.mShop.android.shopping:1241279016
process: com.amazon.mShop.android.shopping
processUptime: 1128 + 255 ms
installer: com.apkmirror.helper.prod
java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.Enumeration.hasMoreElements()' on a null object reference
at java.util.Collections.list(Collections.java:5791)
at com.amazon.mShop.error.NetworkManager.getIPAddress(NetworkManager.java:136)
at com.amazon.mShop.error.NetworkManager.getCurrentNetwork(NetworkManager.java:69)
at com.amazon.mShop.error.DeviceInfoProvider.initializeNetwork(DeviceInfoProvider.java:117)
at com.amazon.mShop.error.DeviceInfoProvider.initialize(DeviceInfoProvider.java:56)
at com.amazon.mobile.error.log.EnvInfoProviderInitializer.initialize(EnvInfoProviderInitializer.java:75)
at com.amazon.mobile.error.log.EnvInfoProviderInitializer.initialize(EnvInfoProviderInitializer.java:95)
at com.amazon.mobile.error.log.AppErrorDescriptor.backfillEnvInfoFields(AppErrorDescriptor.java:240)
at com.amazon.mobile.error.log.AppErrorLogHandler.log(AppErrorLogHandler.java:117)
at com.amazon.mShop.web.MShopWebViewClient.showErrorPage(MShopWebViewClient.java:394)
at com.amazon.mShop.web.MShopWebViewClient.onReceivedError(MShopWebViewClient.java:638)
at com.amazon.mShop.web.MShopWebViewClient.onReceivedError(MShopWebViewClient.java:724)
at com.amazon.mShop.web.MShopWebViewClient.onReceivedError(MShopWebViewClient.java:696)
at WV.XB.e(chromium-TrichromeWebView6432.apk-stable-661312733:70)
at WV.Q5.handleMessage(chromium-TrichromeWebView6432.apk-stable-661312733:406)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loopOnce(Looper.java:232)
at android.os.Looper.loop(Looper.java:317)
at android.app.ActivityThread.main(ActivityThread.java:8623)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
at com.android.internal.os.ExecInit.main(ExecInit.java:50)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:369)
And the next are the logs after:
- Installing with no network permission.
- Disabling permission to Sensors (which are granted by default, at these point the logs are still pretty much empty)
- Enabling network permission, making it the only permission left.
- Opening the app. The app switches to my country specifics and language.
- Closing the app and disabling it.
- Copying the logs.
In the logs, you can see the first line I found where the real country is mentioned. I took my time to pseudonimyze all country code and country code specifics like language to Mexico (mx):
CountryDetector: Getting network based country iso: mx
Then there are several other lines setting up country and language on the app, you can find them my searching "mx" on the file.
Here are the full logs:
https://drive.proton.me/urls/DR50KXP204#zLD9WXupyhIx
I think android developers would be able to draw very deterministic details about this. Keep in mind it'd be ideal to have ways to block whatever attribute the app is drawing or to at least be able to mock it.