当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在自定义数据目录上执行APK?》经验,为你挑选了1个好方法。

我想知道Parallel Space应用程序如何复制和执行其他应用程序而无需复制其APK或在Playstore上的其他应用程序下运行它们(例如:"com.whatever.name-of-duplicated-app").

在研究了他们的AndroidManifest.xml,在/ data/data /上创建的文件夹以及设备上的日志之后,我得到的唯一结论是,Parallel Space能够以某种方式执行来自其他APK的代码,但它会映射数据目录这些应用程序进入自己的数据目录.

证据:

    目录创建如下:/data/data/com.lbe.parallel.intl/parallel_intl/0/whatever-package-name-you-cloned

    每个重复的应用程序执行都以其一个代理活动的新任务开始,然后以某种方式重复的应用程序取代新创建的进程.

最初,我认为它与DexClassLoader/PathClassLoader API有关,但我无法继续进行调查.我也看到了一些这样的问题,一个,但它似乎并不如此.



1> Royston Pint..:

我正在分析小米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个代理活动,100个代理服务和100个代理提供程序.这些用于托管要克隆的应用程序.因此,克隆的应用程序将与Parallel Space位于同一个进程空间中.它还有来自ActivityManager,ServiceManager,AccountManager,LocationManager等的Android框架存根.基本上,当编译应用程序时,它会创建这些类,这些类与随Android设备附带的framework.jar中的类相同.使用此代理存根Java反射,它可以在自己的进程空间中创建和托管应用程序.为此,它只是拦截活动管理器调用并编组新信息,然后将其转发到框架.

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

细节是巨大的,Parallel Space开发人员使用来自AOSP源代码的广泛知识来利用行为,并利用反射和代理来利用Java类的使用方式.

更新:

刚刚在GitHub上找到了Parallel space的开源版本.这完全符合相同的原则.下方链接.

https://github.com/asLody/VirtualApp

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有