无法在 Android NDK 应用程序的 /proc/.../maps 中找到本机模块

unable to find native module in /proc/.../maps for Android NDK app

提问人:efel 提问时间:11/16/2023 更新时间:11/16/2023 访问量:22

问:

我通过 Android Studio 制作了一个示例 NDK hello world 应用程序(只需直接使用向导中的应用程序)。一切正常,我能够与本机模块(hello_ndk.so)进行通信。生成的代码如下:

package com.example.hello_ndk

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.TextView
import com.example.hello_ndk.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        // Example of a call to a native method
        binding.sampleText.text = stringFromJNI()
        Log.i("TEST", stringFromJNI());
    }

    /**
     * A native method that is implemented by the 'hello_ndk' native library,
     * which is packaged with this application.
     */
    external fun stringFromJNI(): String

    companion object {
        // Used to load the 'hello_ndk' library on application startup.
        init {
            System.loadLibrary("hello_ndk")
        }
    }
}

正如我所提到的,在调用JNI和返回等方面一切正常。我正在使用 SDK 31 并在 Android 12 模拟器上运行。我adb进入模拟器(以root身份)并尝试手动查找加载的模块,如下所示:

emulator64_x86_64:/ # cat /proc/13433/maps | grep hello_ndk.so
1|emulator64_x86_64:/ # cat /proc/13433/maps | grep native-lib.so
1|emulator64_x86_64:/ # ps -A | grep -i hello_ndk
u0_a108      13433   372 13728128 162904 do_epoll_wait      0 S com.example.hello_ndk

hello_ndk.so 模块不应该在进程的映射视图中看到吗,因为它已加载(因为我正在使用它)?为什么我的搜索结果没有产生结果(加载的 .so 文件)?

Android 移动 逆向工程

评论


答: 暂无答案