如何在Parallel Space中停止我的应用程序?

时间:2017-03-26 04:55:33

标签: android security

我创建了一个应用。我只想通过手机购买一个应用程序,但我可以使用并行空间 - 多帐户创建我的应用程序的克隆。所以我的问题是如何停止克隆我的应用程序。 Android有任何唯一标识符,即使用户重置手机也无法改变吗?

2 个答案:

答案 0 :(得分:1)

我认为没有办法阻止"平行空间"克隆你的应用程序,这是与android系统相关的东西。

我使用的一个简单的解决方法是检查是否安装了Parallel Space应用程序(ps包名:com.lbe.parallel.intl)。

public boolean isAppInstalled(String packageName) {
    try {
        getPackageManager().getApplicationInfo(packageName, 0);
        return true;
    }
    catch (PackageManager.NameNotFoundException e) {
        return false;
    }
}

您可以猜测它不可靠,因为许多不同的应用程序可用于此目的。我没有为我的案子做进一步,但有一件事在我脑海中浮现;如果您具有文件写入权限,则可以创建一个全局文件,并在打开应用程序时将其放在那里进行检查。

知道这些应用程序如何工作的人可以提供更好的答案。如果他们在复制时更改了apk中的某些内容,那么您可以检查apk的这些更改或哈希码,但似乎它们在虚拟操作系统中运行您的应用程序,因此这可能无法找到解决方案。

不幸的是,在Android上没有成功的唯一ID。这是我讨厌android的东西。我检查不同的标识符,如deviceid,imei,mac address等。但并行空间为所有标识符创建新值。

答案 1 :(得分:0)

在我搜索了很多停止应用克隆的解决方案后,我想到了这个想法,那就是检查应用数据在手机上的安装路径。
下面的代码进一步解释了这个想法:

    int APP_PACKAGE_COUNT = 2; //----> my app package name is com.test.app the number is count of dots in package name

private void checkClonner() {
    String path = this.getFilesDir().getAbsolutePath();
    int count = getDotCount(path);
    if (count > APP_PACKAGE_COUNT) {
        throw new RuntimeException("This app does not work in a cloning environment");
    }
}

private int getDotCount(String path) {

    int count = 0;
    for (int i = 0; i < path.length(); i++) {
        if (count > APP_PACKAGE_COUNT) {
            break;
        }
        if (path.charAt(i) == '.') {
            count++;
        }
    }
    return count;
}