Java 限制C++;访问JNI中某些类的代码
我在Java程序中有两个类。A类和B类。 B类包含一个执行C++代码的本地函数。Java 限制C++;访问JNI中某些类的代码,java,java-native-interface,Java,Java Native Interface,我在Java程序中有两个类。A类和B类。 B类包含一个执行C++代码的本地函数。 据我所知,C++代码将运行在与java代码相同的进程中。 我的问题是,如何限制C++代码访问java内存和读取类的参数? 恐怕你运气不好。与反射不同,JNI是完全不可修复的:CallVoidMethod()或GetIntField()可以访问所有内容 在某种程度上,混淆可以有所帮助。如果类A被混淆,那么它的所有字段和方法的人类可读名称都将消失。通常混淆器会生成稳定的、可预测的名称,但通过简单的操作,它们可以随机化。
据我所知,C++代码将运行在与java代码相同的进程中。
<>我的问题是,如何限制C++代码访问java内存和读取类的参数?恐怕你运气不好。与反射不同,JNI是完全不可修复的:CallVoidMethod()或GetIntField()可以访问所有内容 在某种程度上,混淆可以有所帮助。如果类A被混淆,那么它的所有字段和方法的人类可读名称都将消失。通常混淆器会生成稳定的、可预测的名称,但通过简单的操作,它们可以随机化。Proguard还可以“优化”类,内联一些方法。不再存在的方法不能通过JNI调用 但是,字段仍然存在,从“外部”调用的方法仍然存在,甚至可能保留它们的名称。因此,最好不要将无法信任的JNI库加载到流程中。这对于任何DLL都是正确的