【发布时间】:2010-10-10 03:27:21
【问题描述】:
- linux 2.6 与 2.4 有何不同?
- 我们可以修改源内核吗?
- 我们可以修改 int 0x80 服务例程吗?
【问题讨论】:
-
你为什么不告诉你你想做什么,然后我们会弄清楚入侵系统是否是正确的做法?
-
这似乎真的是多个不同的问题...分解它可能会得到更好的结果。
【问题讨论】:
更新:
1. 0x80 处理程序在 2.4 和 2.6 之间基本相同,尽管从处理程序调用的函数是由 2.6 中 x86-64 的“syscall”指令处理程序调用的。
2. 可以像内核的其余部分一样修改 0x80 处理程序。
3. 你不会因为修改它而破坏任何东西,除非你删除向后兼容性。例如,如果您愿意,可以添加自己的跟踪或后门。另一篇文章说,如果您修改处理程序,您将破坏您的库和工具链是不正确的。如果你破坏了调度算法,或者错误地修改了调度表,那么你就会破坏事情。
3a。正如我最初发布的那样,扩展 0x80 服务的最佳方法是扩展系统调用处理程序。
正如内核源代码所说:
什么:内核系统调用接口
描述:
该接口与 POSIX 接口的大部分内容相匹配,并且基于
在它和其他基于 Unix 的接口上。它只会被添加到
随着时间的推移,并没有从它删除的东西。
Note that this interface is different for every architecture
that Linux supports. Please see the architecture-specific
documentation for details on the syscall numbers that are to be
mapped to each syscall.
arch/i386/kernel/syscall_table.Sirq_vectors.hset_system_gate 设置system_call 函数的地址,将条目放入中断描述符表中。 system_call 函数本身在 entry.S 中,并从系统调用表中调用请求的指针。
system_call 函数内的 entry.S 中完成的。以一种更理智的方式,您可以修改系统调用表,插入您自己的函数,而无需修改调度机制。【讨论】:
【讨论】: