java - 动态添加原生钩子(Hook)

标签 java java-native-interface

是否有某种方法可以使用 JNI 动态添加 native Hook ?我的意思是,我想重写类(或新类)中的一些方法,以便重写调用我的 native 代码,而无需为此编写任何 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]));

将被分配到类(class)

public class Main {

  public static native int addOne(int a);

  ...
  ...

}

完整示例:https://github.com/mkowsiak/jnicookbook/tree/master/recipes/recipeNo052

关于java - 动态添加原生钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57590496/

相关文章:

java - 将 JNI dll 嵌入到 java 中

java - 我如何从一个文件中的类调用以使用着色器显示在另一个包含 gl 代码的文件中(这两个文件都在 jni 文件夹中)?

Java 反射 : How to get methods with no parameters only

java - android studio/intellij中自定义 "Group by methods defining type"的定义

java - Project Euler 5. 如何将元素添加到 ArrayList 中的其他 ArrayList 中素数出现次数最多的 ArrayList

Java swing改变JPanel图像

java - 有什么方法可以测试两个 jobject 是否来自同一个类(class)?

java - 如何让我的 Netty 客户端检测我的 Netty 服务器是否监听端口(可用)?

c++ - JNI : How to convert a group of data from c++ to Java

android - 找不到 JNI 方法