如何使用Angr分析共享库中的JNI函数?

How to use Angr to analyze JNI functions in shared libraries?

我是二进制分析领域的新手。我想做的是使用 Angr 提供的 SimProcedures 来分析 JNI 本机接口函数(例如,RegisterNatives 或列出的其他函数 here)。共享库(*.so 文件)应该是 Android 应用程序的一部分。但是,我注意到这些 JNI 本机接口函数在共享库中没有显示为符号。所以我的问题是:

  1. 为什么这些JNI原生接口函数在共享库中没有相应的符号?是我做错了什么还是他们这样想的?
  2. Angr中,如果我没有遗漏任何东西,SimProcedures 只能绑定到符号。那么如果没有这样的符号,我应该怎么做才能让它起作用呢?

JVM 将各种函数公开为 table 函数指针。例如,参见 here

env->FindClass 的调用将在汇编中表示为(C 伪代码):

fp = env + 6 * sizeof(void *);
fp(env, ...)

也许你可以教我关于这个函数指针的愤怒事情table?