首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >linux内核2.6.18中的sys_call_table

linux内核2.6.18中的sys_call_table
EN

Stack Overflow用户
提问于 2009-10-18 16:41:44
回答 2查看 10.2K关注 0票数 0

我正在尝试通过以下方式将sys exit调用设置为变量

代码语言:javascript
运行
AI代码解释
复制
extern void *sys_call_table[];
real_sys_exit = sys_call_table[__NR_exit]

但是,当我尝试执行此操作时,控制台显示以下错误

代码语言:javascript
运行
AI代码解释
复制
error: ‘__NR_exit’ undeclared (first use in this function) 

如有任何建议,我将不胜感激:)谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-09 00:29:44

由于您使用的是内核2.6.x,因此不再导出sys_call_table。如果想要避免编译错误,可以尝试使用下面的代码

代码语言:javascript
运行
AI代码解释
复制
#include<linux/unistd.h>

然而,它不会起作用。因此,使用sys_call_table的变通方法是使用以下命令在SystemXXXX.map (位于/boot)中找到sys_call_table的地址:

代码语言:javascript
运行
AI代码解释
复制
grep sys_call System.map-2.6.X -i

这将提供地址,然后此代码应允许您修改该表:

代码语言:javascript
运行
AI代码解释
复制
unsigned long *sys_call_table; 
sys_call_table = (unsigned long *) simple_strtoul("0xc0318500",NULL,16); 


original_mkdir = sys_call_table[__NR_mkdir];
sys_call_table[__NR_mkdir] = mkdir_modificado;

希望它能为你工作,我刚刚在2.6.24内核下测试过它,所以应该能在2.6.18下工作

也可以在这里查看,这是一个非常好的http://commons.oreilly.com/wiki/index.php/Network_Security_Tools/Modifying_and_Hacking_Security_Tools/Fun_with_Linux_Kernel_Modules

票数 5
EN

Stack Overflow用户

发布于 2009-10-18 16:53:08

如果没有包含syscall.h文件,则应该在引用__NR_exit之前包含该文件。例如,

代码语言:javascript
运行
AI代码解释
复制
#include <syscall.h>
#include <stdio.h>

int main()
{
    printf("%d\n", __NR_exit);
    return 0;
}

它返回:

代码语言:javascript
运行
AI代码解释
复制
$ cc t.c
$ ./a.out 
60

其他一些观察结果:

  1. 如果你已经包含了这个文件,通常不会定义__NR_exit的原因是,由于条件编译(#ifdef#ifndef在工作中的某个地方),或者因为它被从其他地方通过#undef.
  2. If删除了,所以你有一组完全不同的头文件可供使用。LXR (http://lxr.linux.no/linux)可搜索、可浏览的内核源代码存档是一个有用的资源。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1586481

复制
相关文章
手把手教你|拦截系统调用
系统调用 是内核提供给应用程序使用的功能函数,由于应用程序一般运行在 用户态,处于用户态的进程有诸多限制(如不能进行 I/O 操作),所以有些功能必须由内核代劳完成。而内核就是通过向应用层提供 系统调用,来完成一些在用户态不能完成的工作。
用户7686797
2022/01/25
2.1K0
手把手教你|拦截系统调用
如何增强Linux内核中的访问控制安全 | 洞见
前段时间,我们的项目组在帮客户解决一些操作系统安全领域的问题,涉及到windows,Linux,macOS三大操作系统平台。无论什么操作系统,本质上都是一个软件,任何软件在一开始设计的时候,都不能百分之百的满足人们的需求,所以操作系统也是一样,为了尽可能的满足人们需求,不得不提供一些供人们定制操作系统的机制。当然除了官方提供的一些机制,也有一些黑魔法,这些黑魔法不被推荐使用,但是有时候面对具体的业务场景,可以作为一个参考的思路。
ThoughtWorks
2018/12/24
2.7K0
如何增强Linux内核中的访问控制安全 | 洞见
Linux系统调用原理
系统调用 跟用户自定义函数一样也是一个函数,不同的是 系统调用 运行在内核态,而用户自定义函数运行在用户态。由于某些指令(如设置时钟、关闭/打开中断和I/O操作等)只能运行在内核态,所以操作系统必须提供一种能够进入内核态的方式,系统调用 就是这样的一种机制。
用户7686797
2020/11/12
4.7K0
查看linux版本内核 Linux内核版本的变化[通俗易懂]
  2、minor:表示次版本号,新增功能时才发生变化;一般奇数表示测试版,偶数表示生产版。
全栈程序员站长
2022/09/25
24.9K0
查看linux版本内核 Linux内核版本的变化[通俗易懂]
【Linux 内核】Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )[通俗易懂]
参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的 Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ;
全栈程序员站长
2022/09/15
27.2K0
【Linux 内核】Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )
参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的 Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ;
韩曙亮
2023/03/30
24.8K0
【Linux 内核】Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )
Linux 内核0.11 系统调用详解(下)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014688145/article/details/50615579
用户1147447
2019/05/26
4K1
查看linux的内核版本_内核版本
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/19
11.9K0
linux内核编程_linux内核是什么
进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC)
全栈程序员站长
2022/11/08
21.8K0
查看linux内核版本的命令_Linux怎么查看内核
Linux version 2.6.32-431.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat4.4.7-4) (GCC) ) #1 SMP Fri Nov 22 03:15:09 UTC 2013
全栈程序员站长
2022/11/04
32.9K0
LINUX内核
6.音频:音频体系结构ALSA.支持USB音频和MIDI设备,并支持全双工重放功能。
心跳包
2020/08/28
16.1K0
【Linux 内核】编译 Linux 内核 ② ( 解压内核源码 | 查询当前 Linux 内核版本号 | 进入并查看 linux 内核源码目录 )
将 下载的 Linux 内核源码 linux-5.6.14.tar.gz 拷贝到 Ubuntu 虚拟机中 , 执行
韩曙亮
2023/03/30
89.9K0
【Linux 内核】编译 Linux 内核 ② ( 解压内核源码 | 查询当前 Linux 内核版本号 | 进入并查看 linux 内核源码目录 )
Linux 内核 vs Windows 内核
Windows 基本占领了电脑时代的市场,商业上取得了很大成功,但是它并不开源,所以要想接触源码得加入 Windows 的开发团队中。
程序员小猿
2021/03/07
18.5K0
Linux内核开发_1_编译LInux内核
System Type arm 占用配置,一般是厂家提供,与第7项代替了原有的Processor type and features
全栈程序员站长
2022/09/15
21.7K0
linux 切换内核版本,切换 Linux 内核版本[通俗易懂]
Linux 内核是开源类 Unix 系统宏内核。仅仅一个内核并不是一套完整的操作系统。有一套基于 Linux 内核的完整操作系统叫作 Linux 操作系统。Kernel 是 Linux 系统的核心,主要负责硬件的支持。
全栈程序员站长
2022/09/25
28.1K0
linux内核使用的编程语言_linux内核模块编程
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
4.1K0
Linux内核编程_linux内核开发工具
转载链接1:http://www.arrowapex.cn/archives/66.html
全栈程序员站长
2022/11/08
14.9K0
Linux内核21-Linux内核的中断处理过程
如前所述,我们知道异常的处理还是比较简单的,就是给相关的进程发送信号,而且不存在进程调度的问题,所以内核很快就处理完了异常。
Tupelo
2022/08/15
2.9K0
Linux内核21-Linux内核的中断处理过程
linux 查询内核版本_linux内核版本号的构成
 Linux内核版本命名在不同时期有着不同的规范,在涉及到Linux版本问题时经常容易混淆,主线版本/稳定版/长期支持版本经常搞不清楚,本文主要记录下内核版本命名的规则以及如何查看Linux系统版本信息。 Linux内核(Linux kernel)简介
全栈程序员站长
2022/09/25
14.5K0
linux 查询内核版本_linux内核版本号的构成
点击加载更多

相似问题

如何在Linux2.4内核中改变sys_call_table的大小?

14

在内核2.6+中访问sys_call_table

30

在Linux内核中重写sys_call_table的自定义文件打开函数的怪异行为

12

sys_call_table读取在4.8内核中是否受保护?

10

在现代内核上查找没有符号的sys_call_table地址

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