【发布时间】:2017-08-01 10:26:42
【问题描述】:
我正在使用 System.loadLibrary("xyz") 加载 JNI 库,它工作正常。但问题是,当使用java.lang.System.load() 加载库时,如果动态库的完整路径指定在全球可读的位置,攻击者可以用恶意文件替换或修改原始文件 (例如 SDCard)。这可能会导致将不受信任的内容加载到 Dalvik VM 中。
因此,可以使用目标库的完全限定路径来解决此问题。由于某种原因,我无法成功提供完全合格的路径。
以下是我尝试过但没有运气的事情。
System.load ("xyz")
System.load ("/src/main/jni/lib/xyz")
System.load ("/system/lib/xyz")
有人可以建议我哪里出错了。
【问题讨论】:
-
确保提供库的全名。我猜你的 xyz 实际上是 libxyz.so
-
@mko 是的。它有.so。
-
这一行应该可以解决问题:System.load ("/some_loction/lib/libxyz.so") 假设您有访问权限。
-
'不走运'不是问题描述。您需要提供准确的错误消息和堆栈跟踪。但是
src目录在运行时不会存在,并且运行时部署目录不会与您在开发系统中的项目位置相同。
标签: java android java-native-interface loadlibrary