gpt4 book ai didi

android - 如何在自定义数据目录上执行 APK?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:39:58 25 4
gpt4 key购买 nike

我想知道如何Parallel Space应用可以复制和执行其他应用,而无需复制其 APK 或像 Play 商店中的其他应用那样以修改后的包名称运行它们(例如:“com.whatever.name-of-duplicated-app”)。

在调查了他们的 AndroidManifest.xml、在 /data/data/ 上创建的文件夹以及设备上的日志之后,我能得到的唯一结论是不知何故Parallel Space 能够执行来自其他 APK 的代码,但它将那些应用程序的数据目录映射到自己的数据目录中。

证据:

  1. 目录是这样创建的:/data/data/com.lbe.parallel.intl/parallel_intl/0/whatever-package-name-you-cloned
  2. 每个重复的应用程序执行都以其Proxy Activity 之一的新任务开始,然后重复的应用程序以某种方式取代新创建的进程。

最初,我以为是 DexClassLoader 的问题/PathClassLoader API,但我无法进一步研究该调查。我也看到了一些这样的问题one , 但似乎并非如此。

最佳答案

我正在分析小米 Redmi Note 3,它允许 whatsapp 的多实例应用程序。它的作用非常简单,它从框架内创建另一个用户配置文件以区分两者。

u0_a171   1832  631   1094576 91608 SyS_epoll_ 0000000000 S com.whatsapp
u999_a171 8571 631 1037396 65024 SyS_epoll_ 0000000000 S com.whatsapp

平行空间正在做一些更有趣的事情。在进入细节之前,让我们分析一下 ps

的输出
u0_a45    2915  249   1120668 61264 SyS_epoll_ b6ca7010 S com.lbe.parallel.intl
u0_a45 6876 249 1081464 40588 SyS_epoll_ b6ca7010 S com.google.android.gms.persistent
u0_a45 6945 249 995016 19828 SyS_epoll_ b6ca7010 S com.google.process.gapps
u0_a45 11296 1 1220488 22760 futex_wait b6c7a8b0 S com.google.android.gms
u0_a45 12303 249 1064788 59680 SyS_epoll_ b6ca7010 S com.freecharge.android
u0_a100 12786 249 699476 45096 jbd2_log_w b6ca6fe8 D com.freecharge.android

在这里,我使用 Parallel Space 为 FreeCharge 创建了另一个帐户。所以基本上,如果我们观察最后两个进程,其中一个托管在并行空间进程 ID 中,而另一个应用程序托管在其自己的进程 ID 中。

使用 apktooldex2jar 对并行空间进行逆向工程,结果如下。

Parallel Space 声明了 100 个代理 Activity 、100 个代理服务和 100 个代理提供商。这些用于托管要克隆的应用程序。因此,克隆的应用程序将位于与并行空间相同的进程空间内。它还具有来自 ActivityManager、ServiceManager、AccountManager、LocationManager 等的 Android 框架 stub 。基本上,当应用程序被编译时,它会创建这些类,这些类与 Android 设备附带的 framework.jar 中的类相同。使用此代理 stub Java 反射,它在自己的进程空间中创建和托管应用程序。为此,它只是拦截 Activity Manager 调用并编码新信息,然后将这些信息转发给框架。

它还创建了一个新的目录结构,用于在其/data/data/文件夹中存储应用程序信息,以托管克隆的应用程序数据。

细节非常丰富,Parallel Space 开发人员利用 AOSP 源代码中的广泛知识来利用行为,还利用反射和代理来利用 Java 类的使用方式。

更新:

刚刚在 GitHub 上找到了 Parallel space 的开源版本。这完全按照相同的原则工作。链接如下。

https://github.com/asLody/VirtualApp

关于android - 如何在自定义数据目录上执行 APK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41570178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com