java - 查看jar包源码 - 查看jar包结构




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

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

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

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

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

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


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

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

如果它是随机包中的随机类,它是如何加载的?

话虽如此,请参阅http://download.oracle.com/javase/6/docs/api/java/lang/System.html#getProperties%28%29和java.class.path。 对于普通的Java应用程序,您必须遍历类路径,然后搜索条目(对于jar)或目录(对于.class文件)。 但是在容器类加载器环境中,这将无法工作(我不确定这如何适用于android环境)。


这是我在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();
}




security