有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java限制C++代码访问JNI中的某些类

我在Java程序中有两个类。A类和B类。 B类包含一个将执行C++代码的本地函数。p>

据我所知,C++代码将在与java代码相同的进程中运行。

<>我的问题是,我如何限制C++代码访问java内存和读取类的参数?

I want to protect Class A's Parameters from the C++ code


共 (1) 个答案

  1. # 1 楼答案

    恐怕你运气不好。与反射不同,JNI是完全不可修复的:CallVoidMethod()或GetIntField()可以访问所有内容

    在某种程度上,混淆可以有所帮助。如果类A被混淆,那么它所有字段和方法的人类可读名称都将消失。通常,混淆器会生成稳定、可预测的名称,但通过简单的trick,它们可以随机化。Proguard还可以“优化”你的类,内联一些方法。不再存在的方法不能通过JNI调用

    但是,字段仍然存在,从“外部”调用的方法仍然存在,甚至可能保留它们的名称。因此,最好不要将您无法信任的JNI库加载到流程中。这对任何DLL都是正确的