資源簡介
RefInvoke.java文件 詳見 Android中的Apk的加固(加殼)原理解析和實現(xiàn)文章
代碼片段和文件信息
package?com.liujian.myencryptapp;
import?java.lang.reflect.InvocationTargetException;
import?java.lang.reflect.Method;
import?java.lang.reflect.Field;
public?class?RefInvoke?{
????public?static?Method?findMethodExact(String?className?ClassLoader?classLoader?String?methodName?Class>...?parameterTypes)?{
????????try?{
????????????Class?clazz?=?classLoader.loadClass(className);
????????????Method?method?=?clazz.getDeclaredMethod(methodName?parameterTypes);
????????????method.setAccessible(true);
????????????return?method;
????????}?catch?(NoSuchMethodException?e)?{
????????????e.printStackTrace();
????????}?catch?(ClassNotFoundException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}
????????return?null;
????}
????public?static?object?invokeStaticMethod(String?class_name?String?method_name?Class[]?pareTyple?object[]?pareVaules)?{
????????try?{
????????????Class?obj_class?=?Class.forName(class_name);
????????????Method?method?=?obj_class.getDeclaredMethod(method_name?pareTyple);
????????????method.setAccessible(true);
????????????return?method.invoke(null?pareVaules);
????????}?catch?(SecurityException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(IllegalArgumentException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(IllegalAccessException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(NoSuchMethodException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(InvocationTargetException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(ClassNotFoundException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}
????????return?null;
????}
????public?static?object?invokeMethod(String?class_name?String?method_name?object?obj?Class[]?pareTyple?object[]?pareVaules)?{
????????try?{
????????????Class?obj_class?=?Class.forName(class_name);
????????????Method?method?=?obj_class.getDeclaredMethod(method_name?pareTyple);
????????????method.setAccessible(true);
????????????return?method.invoke(obj?pareVaules);
????????}?catch?(SecurityException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(IllegalArgumentException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(IllegalAccessException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(NoSuchMethodException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(InvocationTargetException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
評論
共有 條評論