gpt4 book ai didi

android - 无法访问 sys_call_table

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:22 25 4
gpt4 key购买 nike

我通过查看 /proc/kallsyms 设法找到了 sys_call_table 的地址。我有以下代码:

void **sys_call_table;

#include <linux/kernel.h>
#include <asm/unistd.h>

void Java_com_example_testlib_LibLoader_test() {
sys_call_table = (void *) 0xc023cd28;
LOGD("backup original sys_open %p", sys_call_table[__NR_open]);
}

问题是代码导致致命信号异常 为什么要尝试获取sys_call_table 条目 sys_call_table[__NR_open]
我也尝试获取条目 0、1、2……。

最佳答案

好吧,答案就像 Crhis 所说的“您不能从用户模式程序修改内核!”

我将它编译为一个 LKM 并使用 insmod 命令加载它并且它工作了

PS:我还发现只有LKM模块可以读取/proc/kallsyms。由于 Android 4.1 中的内核补丁,用户空间程序不再这样做。 /proc/sys/kernel/kptr_restrict 的引入是为了避免泄漏内核地址。

现在为了让用户空间程序看到 kallsym 地址,我们可以将 kptr_restrict 设置为 0 或 1。

echo 1 > /proc/sys/kernel/kptr_restrict

信息可以在这里找到: https://blog.duosecurity.com/2012/07/exploit-mitigations-in-android-jelly-bean-4-1/

这里:http://insitusec.blogspot.sg/2013/01/kallsyms-on-android.html

关于android - 无法访问 sys_call_table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12245763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com