以编程方式克隆 android 应用程序

Clone an android application programmatically

有一些 Android 应用程序允许用户克隆 phone 上的现有应用程序。 例如:http://fixoptimize.com/app-cloner 你能解释一下这些克隆器是如何工作的吗? 谢谢。

  1. 更改 AndroidManifest.xml 中的包名称并重新签署应用程序。请注意 xml 是二进制文件而不是 apk 包中的文本。 Android 识别具有包名称的不同应用程序,更改包名称的应用程序将被视为 "new one"。
  2. 虽然简单的方法可能有效也可能无效(例如,应用假定其包名称不变,或检查其签名)在许多情况下应应用各种其他更改,包括更改 java包名,禁用签名检查,更改字符串文字,这些字符串文字是包含包名的假定路径名。所有这些都(可能)需要反编译和反汇编 dex 甚至 native 代码,这不仅困难而且非法。
  3. 现代方式:对应用进行沙箱化。将创建一个沙箱环​​境,其中 "cloned" 的应用程序实际上并未被克隆并保持不变。沙箱会拦截克隆应用程序与系统、用户和其他应用程序之间的所有通信,因此它 transparent 并且稳定。应用程序和用户都不会注意到应用程序被沙盒化了。除非仿真器也被取缔,否则这很可能会避免法律问题。 github 上有开源沙盒应用程序,您可以检查并复制它们。
  1. 并行 space 应用程序在其自己的应用程序中创建一个沙箱来托管克隆的应用程序。
  2. 例如,Parallel Space 应用程序“双应用程序”将为我们的 CloneAppChecker 应用程序创建沙箱 /data/user/0/com.dual.space.parallel.app.clone.multiple/virtual/data/user/0/com.example.cloneappchecker/files
  3. 我们需要检查应用程序中的沙箱,以验证应用程序是否有自己的沙箱(/data/user/0/com.example.cloneappchecker/files)或由并行 Space 应用程序创建。
  4. 因此我们可以限制并行应用程序,而原始应用程序将按原样运行。 5.I 已经检查了将近 15 到 16 个并行 space 应用程序,所有应用程序的行为都是相同的。