动态添加本机钩子



有没有办法使用 JNI 动态添加本机钩子?我的意思是,我想覆盖类(或新类(中的某些方法,以便覆盖调用我的本机代码,而无需为此编写任何 Java 代码。

如果您指的是native方法,也许注册可能是您的答案。

例如,在这里,我正在注册本机方法

JNIEXPORT jint JNICALL addOne(JNIEnv *env, jclass obj, jint a) {
return a + 1;
}
...
...
static JNINativeMethod methods[] = {
{"addOne",    "(I)I", (void *)&addOne}
};
...
...
(*env)->RegisterNatives(env, cls_Main,
methods, sizeof(methods)/sizeof(methods[0]));

将被分配到班级

public class Main {
public static native int addOne(int a);
...
...
}

完整样本:https://github.com/mkowsiak/jnicookbook/tree/master/recipes/recipeNo052

最新更新