如何检查包中是否存在类?

Jon*_*ona 29 java security android

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

我的目标是以某种方式检查这个特定的补丁.如果我发现它,我知道我的应用程序已被入侵.

有关如何知道包装上已修改某些内容的任何提示? 在我的案例中,对应用程序执行哈希不是一个真正的选项.

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

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

Liv*_*Liv 54

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

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


Jar*_*ows 16

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

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

实施示例:

if (isClass("android.app.ActionBar")) {
    Toast.makeText(getApplicationContext(), "YES", Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)


Ale*_*dam 6

您可以使用

public static Class<?> forName (String className)
Run Code Online (Sandbox Code Playgroud)

并检查 ClassNotFoundException

http://developer.android.com/reference/java/lang/Class.html#forName%28java.lang.String%29