使用预构建的.so库打开串口

问题描述 投票:0回答:1

我在 StackOverflow 上搜索并发现了几个相关问题,但没有一个能回答我的直接问题。

我想通过 Android 应用程序在特定 Android 设备上打开串口。

该设备包含一个原始的 apk,具有一些串口功能。

我对 apk 进行了逆向工程,在设备上的 system/lib64 文件夹中找到了正确的 .so 文件,这样我就知道旧应用程序如何使用这个项目。

我所知道的:

  • 串口使用Uart进行通信
  • .so 文件在另一个应用程序中使用,因此它具有正确的功能。
  • 逆向工程让我看到了基本功能和函数使用的名称。
  • 设备运行Android 10
  • 它运行arm64-v8a处理器
  • 旧的.so库被添加到文件夹jniLibs中,找到并加载。

我没有在库的 jni 设置中使用的原始 .c 文件和 .h 文件。

我没有串行设备或原始设备的任何文档,因为制造商没有提供此文档,因此构建新的本机库可能很困难。

逆向工程的 liboldnativelibrary.so 文件方法是这样的:(我自己从 gidhra 放入的对象)

jobject Java_com_the_old_serialportApp_SerialPort_open
                  (JNIEnv *penv,undefined8 param_2,jstring inputString,speed_t baudRate,
                  uint hiddenParam)

我已经写了这段代码

package com.myself.serialporttesting

    companion object {
        init {
            try {
                Log.i("Library", "Loading library")
                System.loadLibrary("oldnativelibrary")
                Log.i("Library", "Library loaded successfully")
            } catch (e: UnsatisfiedLinkError) {
                Log.i("Library", "Library not loaded")
            }
        }

        private external fun open(
            fileName: String,
            baudRate: Int,
            hiddenValue:  Int
        ): FileDescriptor
}

我收到错误消息: 未找到 java.io.FileDescriptor com.hfad.serialporttesting.SerialPort$Companion.open(java.lang.String, int, int)

的实现

我认为这是一个命名问题,因为我的包被称为其他名称。这是真的吗?是否可以解决这个问题?

java android kotlin reverse-engineering
1个回答
0
投票

如果其他人遇到这个问题,请回答我自己:

这是一个命名问题。如果将函数加载到名为

的包中
package com.the.old.serialportapp
class SerialPort {
     
companion object {
    init {
        try {
            Log.i("Library", "Loading library")
            System.loadLibrary("oldnativelibrary")
            Log.i("Library", "Library loaded successfully")
        } catch (e: UnsatisfiedLinkError) {
            Log.i("Library", "Library not loaded")
        }
    }

    private external fun open(
        fileName: String,
        baudRate: Int,
        hiddenValue:  Int
    ): FileDescriptor
}

然后您应该能够访问该方法。

© www.soinside.com 2019 - 2024. All rights reserved.