首页
社区
课程
招聘
未解决 [求助][Centos6][内核编程] Centos6 中 vmalloc_node_range方法并没有导出 如何获取函数地址?
发表于: 2020-10-7 18:10 1569

未解决 [求助][Centos6][内核编程] Centos6 中 vmalloc_node_range方法并没有导出 如何获取函数地址?

2020-10-7 18:10
1569

我想在Centos6 中获取 vmalloc_node_range 的函数地址,可是kallsyms_lookup_name没有导出,通过kprobe获取到kallsyms_lookup_name的地址再调用kallsyms_lookup_name获取其他函数的地址,然而我发现虽然大部分函数地址可以这样获取,但是vmalloc_node_range没法获取,只有vmalloc_node能获取到。
请问各位大佬如何在Centos 6 中不通过修改内核获取 vmalloc_node_range 的函数地址呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
static struct kprobe kp={
    .symbol_name = "kallsyms_lookup_name",
};
 
int get_kallsyms_lookup_name(void)
{
    int ret = register_kprobe(&kp);
    if(ret < 0){
            printk("[err] %s. register_kprobe failed, ret:%d\n", __FUNCTION__, ret);
            return ret;
    }
    printk("[info] %s. kprobe at addr:%p, ret:%d\n", __FUNCTION__, kp.addr, ret);
    orig_kallsyms_lookup_name = (kallsyms_lookup_name_t)(void*)kp.addr;
    unregister_kprobe(&kp);
    return ret;
}
 
static int __init init(void)
{
    if(get_kallsyms_lookup_name() < 0){
        printk("[err] %s failed!\n", __FUNCTION__);
        return -1
    }
    ___vmalloc_node_range = (void *)orig_kallsyms_lookup_name("__vmalloc_node");
    if(!___vmalloc_node_range)
        printk("失败");
    return -1;
}

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 9
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
求大佬 回复一下
2020-10-7 22:41
0
游客
登录 | 注册 方可回帖
返回
//