我正在对 android 的移动应用程序进行逆向工程,我有一个问题如何在库 * .so 中找到本机方法的可执行代码。从代码的代码来看,void method(int i)调用了native方法。但它不在库中的导出函数列表中!
我做了一个测试项目。事实是,当我们在 Java 代码中声明本地方法时,我们是这样写的:
extern "C"
JNIEXPORT jstring
JNICALL
Java_com_test_MainActivity_stringFromJNI(
JNIEnv *env,
jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
在这种情况下,该方法将位于导出的库方法列表中。我不明白如何定义本机函数以使其在导出函数列表中不可见?以及如何查找此类函数的源代码?