首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在arm64 linux内核中使用ftrace来挂钩内核函数?

如何在arm64 linux内核中使用ftrace来挂钩内核函数?
EN

Stack Overflow用户
提问于 2022-08-09 08:16:33
回答 1查看 116关注 0票数 0

我试图使用ftrace在arm64内核中挂钩内核函数,但失败了。我的代码的一些重要部分如下:

代码语言:javascript
复制
static void notrace ftrace_hook_handler(size_t ip, size_t parent_ip, struct ftrace_ops *ops, struct ftrace_regs *fregs)
{
    pr_info("ftrace hooking");

    return;
}

int my_ftrace_hook {
    struct ftrace_ops fops;
    fops.func = ftrace_hook_handler;
    fops.flags = FTRACE_OPS_FL_SAVE_REGS_IF_SUPPORTED;

    pr_info("symbol: %s, addr: %px\n", "security_path_unlink", addr_security_path_unlink);

    err = ftrace_set_filter_ip(&fops, addr_security_path_unlink, 0, 0);

    if (err)
    {
        pr_err("ftrace_set_filter_ip() failed: %d\n", err);
        return err;
    }
}

但有个错误:

代码语言:javascript
复制
# dmesg
[  945.791221] ftrace_module: loading out-of-tree module taints kernel.
[  945.791464] ftrace_module: module verification failed: signature and/or required key missing - tainting kernel
[  945.820649] [ftrace_module] symbol: security_path_unlink, addr: ffffa13fc4fafd10
[  945.820663] [my_ftrace_hook] ftrace_set_filter_ip() failed: -22

系统信息是:

代码语言:javascript
复制
# uname -a
Linux ubuntu2204 5.15.0-43-generic #46-Ubuntu SMP Wed Jul 13 06:42:04 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux

# cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04 (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

我怎么才能解决这个问题?是否有可参考的开源项目?任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-24 07:43:30

在调用函数:ftrace_set_filter_ip之前,在arm64中使用ftrace

下面是示例代码:

代码语言:javascript
复制
faddr = ftrace_location_range(hookaddr, hookaddr + AARCH64_INSN_SIZE);
ret = ftrace_set_filter_ip(hook->fops, faddr, 1, 0);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73288573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档