开发者社区> 问答> 正文

Linux 64位系统 动态添加系统调用,3.13内核,添加无效的问题 - linux报错

Linux 64位系统 动态添加系统调用,3.13内核,我想通过修改内核内存实现。

实现思路

第一步先修改 nr_syscall_max 

第二步修改 sys_call_table 

但在第一步的时候,我通过浏览entry_64.o文件发现 cmp $nr_syscall_max %eax,已经满足我需要的条件,我要添加的系统调用号是500 而 系统自定义的nr_syscall_max为544 ,cmp $nr_syscall_max %eax 是应该可以通过的。但是 我添加过系统调用后,通过汇编程序调用新的系统调用 返回值还是-38.一般返回-38 基本上就是 cmp $nr_syscall_max %eax 没有通过 直接调用badsys 函数!

不知道 有哪位大神在64位Linux 系统上实现过动态添加系统调用,还望赐教

以上实现方式 在2.6.32 内核的32位系统上已经实现!思路应该都是一样的

展开
收起
montos 2020-05-31 15:24:12 544 0
1 条回答
写回答
取消 提交回答
  • 已经解决

    2020-05-31 15:24:19
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载