c - 我怎么能拦截Linux系统调用?

c - 我怎么能拦截Linux系统调用?

除了LD_PRELOAD技巧和Linux内核模块,用你提供的系统调用代替某个系统调用,有没有可能拦截一个系统调用(例如打开),以便在它到达实际打开之前首先通过你的函数?…


是否可以在Linux x86 GAS程序集中创建没有系统调用的线程?

在学习“汇编语言”(在使用GNU作为汇编程序的x86架构上的linux中)时,其中一个时刻就是使用系统调用的可能性。 这些系统调用非常方便,有时甚至是必需的,因为您的程序在用户空间中运行 。 但是,系统调用在性能方面相当昂贵,因为它们需要中断(当然还有系统调用),这意味着必须从用户空间中的当前活动程序到内核空间中运行的系统进行上下文切换。 我想说的是:我目前正在实现一个编译器(用于大学项目)…


linux kernel - Linux内核2.6.18中的sys_call_table

我想通过设置sys的退出调用变量 extern void*sys_call_table[]; real_sys_exit=sys_call_table[__NR_exit] 但是,当我尝试制作,控制台给我的错误 error: ‘__NR_exit’ undeclared(first use in this function) 任何提示将不胜感激:)谢谢…


c - Linux Kernel:系统调用挂钩示例

我正在尝试编写一些简单的测试代码作为挂钩系统调用表的演示。 “sys_call_table”不再导出2.6,所以我只是从System.map文件中获取地址,我可以看到它是正确的(通过我找到的地址查看内存,我可以看到指向系统调用)。 但是,当我尝试修改此表时,内核给出“Oops”,“无法在虚拟地址c061e4f4处理内核分页请求”并且机器重新启动。 这是运行2.6.18-164.10.1.e…


Linux reboot()系统调用的幻数

Linux编程接口在第3章中有一个练习,如下所示: 当使用特定于Linux的reboot()系统调用来重新引导系统时,必须将第二个参数magic2指定为一组幻数(例如,LINUX_REBOOT_MAGIC2)之一。 这些数字有什么意义?(将它们转换为十六进制提供了线索。) 手册页告诉我们magic2可以是LINUX_REBOOT_MAGIC2(672274793),LINUX_REBOOT…


在Linux中,在进入sys调用时,%eax中的值是多少?(不是orig_eax)

当一个系统调用返回时,我得到%eax中的系统调用返回值,但是在入口处我得到-38,这是十六进制的0xFFFFFFDA。 这是为了写/读。 这个数字是多少? 它可以用来安全区分出入口吗?…


c - 系统调用的历史是否已添加到Linux?

有什么地方我可以获得每个系统调用所需的Linux最低版本的完整列表吗? 我正在寻找表格问题的一般答案“如果我使用系统调用X,那么我的代码可以运行的Linux的最低版本是什么?”…



从汇编中调用ac函数需要“asmlinkage”吗?

我正在写一个C函数,将从汇编代码中调用。(具体来说,我想在linux内核的系统调用路径中做一些检查工作,所以在entry_32.S中调用系统调用之前我会调用c函数) 定义我的c函数时,我对“asmlinkage”修饰符感到困惑。 我知道asmlinkage是告诉编译器参数将通过堆栈传递。#define asmlinkage CPP_ASMLINKAGE__attribute__((…


linux kernel - Linux系统调用

我能够获得系统调用的执行,并在Kernel中处理。 但是很少有事情我不清楚。 进入swi例程后,内核将用户模式寄存器保存在堆栈中。 问题是- 谁的筹码是?(由于swi处理和相应的系统调用例程需要栈帧工作) 如果是内核自己的堆栈,从哪里得到堆栈分配..? 它会开始使用当前的堆栈吗? 如果是,那么当前可以是在内核中可能正在执行的任何进程。 这不是耗尽电流的堆栈吗? 如果它在swi处理程序中…


Linux系统调用流程序列

我有一个关于Linux的深入工作的问题。 比方说一个多线程进程正在CPU中执行。 在这种情况下,我们将有一个在CPU上执行的线程。 在更宽的画面中,我们将把属于进程的相应页面加载到RAM中执行。 比方说,线程进行系统调用。 在这之后我有点不清楚。 中断将产生一个呼叫。 我的问题之一是谁会回答这个问题? 假设系统有m:n用户级线程到内核级线程映射,我假设相应的内核级线程将回答这个调用。 所…




syscall system android linux系统调用列表 linux call 系统调用过程 linux系统api call过程 系统调用跟我学