How to check if class exists somewhere in package?

后端 未结 4 702
南笙
南笙 2020-11-29 08:49

I\'m currently dealing with a particular issue with my paid application. Internally it contains a licensing check. The app is patched by hackers by modifying the app apk/j

相关标签:
4条回答
  • 2020-11-29 09:37

    How does it get loaded if it's a random class in a random package?

    That being said, see http://download.oracle.com/javase/6/docs/api/java/lang/System.html#getProperties%28%29 and java.class.path. For normal java apps, you have to walk the classpath and then search the entries (for jars) or directories (for .class files). But in a container-class-loader environment, this will fail to work (and I'm not sure how that applies to an android environment).

    0 讨论(0)
  • 2020-11-29 09:40

    Not sure about android but in standard JDK you would do something like this:

    try {
     Class.forName( "your.fqdn.class.name" );
    } catch( ClassNotFoundException e ) {
     //my class isn't there!
    }
    
    0 讨论(0)
  • 2020-11-29 09:43

    You can use

    public static Class<?> forName (String className)
    

    and check the ClassNotFoundException

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

    0 讨论(0)
  • 2020-11-29 09:47

    Here is what I used in Android - standard Java:

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

    Implementation example:

    if (isClass("android.app.ActionBar")) {
        Toast.makeText(getApplicationContext(), "YES", Toast.LENGTH_SHORT).show();
    }
    
    0 讨论(0)
提交回复
热议问题