如何更改android so文件的导出函数名(ELF格式)

逆向工程 安卓 小精灵
2021-07-02 09:06:34

这是我的.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_JNIJlcInitmyInitFunc
  • Java_com_jlc_BubbleChat_libJlcVideoEncoder_JNIJlcVideoEncodermyEncoderFunc

所以,我打开了任何 so 文件并在winhex. 但它不起作用。

并且,没有其他文件导入此 so 文件。问题是修改了函数名后,loadlibrary成功了,但是找不到导出函数的地址。

编辑导出函数名称不起作用。你知道原因吗?

或者,当 android 加载 so 文件时,某处有校验和检查?

我不想反编译或修改。我的最终目标是用不同的名称调用原始函数。

0个回答
没有发现任何回复~