这是我的.so
文件:
以下是.so
文件内的导出功能:
Java_com_jlc_BubbleChat_libJlcVideoEncoder_JNIJlcInit
Java_com_jlc_BubbleChat_libJlcVideoEncoder_JNIJlcVideoEncoder
在 中Java project
,我定义了这样的函数并调用(使用 JNI 调用):
package com.jlc.BubbleChat;
public class libJlcVideoEncoder
{
static {
System.loadLibrary("JlcVideoEncoder");
}
private native int JNIJlcInit();
private native int JNIJlcVideoEncoder(byte[] camdata,byte[] stream,int qp);
public int JlcInit() {
return JNIJlcInis();
}
public int JlcVideoEncoder(byte[] camdata,byte[] stream,int qp) {
return JNIJlcVideoEncoder(camdata, stream, qp);
}
}
但是,我想更改导出功能:
Java_com_jlc_BubbleChat_libJlcVideoEncoder_JNIJlcInit
到myInitFunc
。Java_com_jlc_BubbleChat_libJlcVideoEncoder_JNIJlcVideoEncoder
到myEncoderFunc
。
所以,我打开了任何 so 文件并在winhex
. 但它不起作用。
并且,没有其他文件导入此 so 文件。问题是修改了函数名后,loadlibrary
成功了,但是找不到导出函数的地址。
编辑导出函数名称不起作用。你知道原因吗?
或者,当 android 加载 so 文件时,某处有校验和检查?
我不想反编译或修改。我的最终目标是用不同的名称调用原始函数。