如何检查类是否存在于包中的某个位置?

2022-09-01 04:53:00

我目前正在处理我的付费应用程序的特定问题。在内部,它包含许可检查。黑客通过修改应用程序apk / jar来修补该应用程序。他们正在添加一个新类,这有助于绕过许可检查。

我的目标是以某种方式检查这个特定的补丁。如果我找到它,我知道我的应用程序已被盗用。

关于如何知道软件包上的某些内容已被修改的任何提示?在我的情况下,对应用程序进行哈希并不是一个真正的选择。

我想也许检查这个类是否存在会有所帮助,但是如果他们更改类的名称呢?然后,另一个想法是以某种方式检查添加到类中的意外包含。

这些可能吗?任何建议都有助于:)


答案 1

不确定Android,但在标准JDK中,你会做这样的事情:

try {
 Class.forName( "your.fqdn.class.name" );
} catch( ClassNotFoundException e ) {
 //my class isn't there!
}

答案 2

以下是我在Android中使用的 - 标准Java:

public boolean isClass(String className) {
    try  {
        Class.forName(className);
        return true;
    }  catch (ClassNotFoundException e) {
        return false;
    }
}

实现示例:

if (isClass("android.app.ActionBar")) {
    Toast.makeText(getApplicationContext(), "YES", Toast.LENGTH_SHORT).show();
}