微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Linux中创build一个系统调用

我们今天刚刚为我的“操作系统”课程获得了一个中期项目,我们被要求实现一个系统调用(我猜我认为我们必须编写一段代码调用它)。

我知道我需要更新系统调用表(不记得名称,但没有biggie),以及创build一个表将指向的内核模块,但这是否意味着我将不得不重新编译整个内核,所以内核知道我的模块?

我已经看到可以劫持一个当前的系统调用,但是我怀疑如果我这样做,我不会得到我的任务的功劳。

只是想了解我将要做的努力的大小。

如何强制使用int $ 0x80而不是sysenter进行系统调用检测

readlink systemcall做什么?

为什么execve系统调用不带任何argv参数运行“/ bin / sh”,而不是“/ bin / ls”?

如何确定保存在堆栈中的值?

如何捕获读写系统调用

更新:它有点麻烦了,他们改变了一些东西,我相信2.6.32向前,所以当我回到以前的网上教程特定的内核版本,我发现,这是很容易遵循。 如果有人在网上发现了这个问题,并且正在学习一个教程,那么最初我会build议最初在教程中下载相同的内核,一旦你理解了你正在做的事情,就从这里向前走。 如果你真的很熟悉编译内核等等,你可能没有问题,但是这是我第一次编译内核,所以编译2个小时然后发现一些不起作用是一件痛苦的事情,必须重新做一遍,特别是当我不确定我是什么/没有做错的时候。

在Ubuntu 16.04上没有“renameat2”系统调用function

2个或更多分叉系统调用如何工作?

sys_readlink失败EFAULT – 替代

如何在linux内核中实现clone(2)系统调用的另一个变种?

在Linux中并发系统调用

但这是否意味着我将不得不重新编译整个内核,所以内核知道我的模块?

是的,您将需要重新编译内核。

实施Linux系统调用

你想读:

Linux coreel Programming,第三版 (平装本)作者Michael Beck(作者),Harald Bohme(作者),Mirko Dziadzka(作者),Ulrich Kunitz(作者),Robert Magnus(作者),Dirk Verworner(作者),Claus Schroter ),由Addison-Wesley(Pearson Education)出版, ISBN-10:0201719754ISBN-13:978-0201719758

也可能有更多的细节:

了解Linux内核,第三版 Daniel P. Bovet,marco Cesati,O'Reilly出版, ISBN 10:0-596-00565-2ISBN 13:9780596005658

Linux设备驱动程序,第三版作者:Jonathan Corbet,Alessandro Rubyi,Greg Kroah-Hartman,O'Reilly出版, ISBN 10:0-596-00590-3ISBN 13:9780596005900

我知道我需要更新系统调用

它是/usr/src/linux/arch/i386/kernel/syscall_table.S

这是否意味着我将不得不重新编译整个内核,所以内核知道我的模块?

确实是的。

Just wanted to get a feel for the size of the effort I'll be making.

如果你知道你要写什么代码作为系统调用的一部分,那么你已经完成了。 您只需等待内核重新编译时间。 以下是一组说明:

在Linux中实现系统调用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐