我们可以修改int 0x80例程吗? Linux2.6与2.4有何不同 我们可以修改源内核吗 我们可以修改int 0x80服务例程吗 这是一次建筑大修。一切都在内部发生了变化。SMP支持已经完成,进程调度器得到了极大的改进,内存管理得到了彻底的改进,还有很多其他的事情 对。它是开源软件。如果您没有源代码的副本,可以从您的供应商或其他供应商处获取 是的,但这是不可取的,因为它将破坏libc,它将破坏您的基本布局,如果您更改现有系统调用的顺序,它将破坏您的工具链,并且几乎所有您认为要做的事情都应该尽可能在用户空间中完成

我们可以修改int 0x80例程吗? Linux2.6与2.4有何不同 我们可以修改源内核吗 我们可以修改int 0x80服务例程吗 这是一次建筑大修。一切都在内部发生了变化。SMP支持已经完成,进程调度器得到了极大的改进,内存管理得到了彻底的改进,还有很多其他的事情 对。它是开源软件。如果您没有源代码的副本,可以从您的供应商或其他供应商处获取 是的,但这是不可取的,因为它将破坏libc,它将破坏您的基本布局,如果您更改现有系统调用的顺序,它将破坏您的工具链,并且几乎所有您认为要做的事情都应该尽可能在用户空间中完成,linux,assembly,routines,Linux,Assembly,Routines,更新: 1.0x80处理程序在2.4和2.6之间基本相同,尽管从处理程序调用的函数由2.6中x86-64的“syscall”指令处理程序调用。 2.0x80处理程序可以像内核的其余部分一样进行修改。 3.除非删除向后兼容性,否则修改它不会破坏任何内容。例如,如果你愿意,你可以添加自己的跟踪或后门。另一篇文章说,如果修改处理程序,将破坏libs和工具链,这是不正确的。如果您破坏了调度算法,或者错误地修改了调度表,那么您将破坏一切。 3a。正如我最初发布的,扩展0x80服务的最佳方法是扩展系统调用处

更新:
1.0x80处理程序在2.4和2.6之间基本相同,尽管从处理程序调用的函数由2.6中x86-64的“syscall”指令处理程序调用。 2.0x80处理程序可以像内核的其余部分一样进行修改。
3.除非删除向后兼容性,否则修改它不会破坏任何内容。例如,如果你愿意,你可以添加自己的跟踪或后门。另一篇文章说,如果修改处理程序,将破坏libs和工具链,这是不正确的。如果您破坏了调度算法,或者错误地修改了调度表,那么您将破坏一切。
3a。正如我最初发布的,扩展0x80服务的最佳方法是扩展系统调用处理程序。

正如内核源代码所说:
What: The kernel syscall interface Description: This interface matches much of the POSIX interface and is based on it and other Unix based interfaces. It will only be added to over time, and not have things removed from it.

    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.

i386的系统调用表条目位于:
arch/i386/kernel/syscall\u table.S


请注意,该表是一系列指针,因此如果您希望与内核维护程序保持一定程度的前向兼容性,则需要在放置指针之前填充该表。

系统调用向量号在
irq\u向量中定义
然后traps.c通过
set\u system\u gate
设置
system\u调用
函数的地址,该函数将条目放入中断描述符表中。
system\u调用
函数本身位于entry.S中,并从系统调用表调用请求的指针。
在阅读代码时可以看到一些内务管理细节,但是直接修改0x80中断处理程序是在
system\u call
函数的entry.S中完成的。以一种更合理的方式,您可以修改系统调用表,插入您自己的函数,而无需修改调度机制。

事实上,在阅读了2.6源代码之后,它直接指出INT0x80和x86-64系统调用使用相同的代码,到目前为止。因此,您可以对x86-32和x86-64进行可移植的更改。
结束更新

INT 0x80方法调用系统调用表处理程序。这将寄存器参数与调用表相匹配,根据EAX寄存器的内容调用内核函数。您可以轻松地扩展系统调用表以添加自定义内核API函数。

这甚至可以用于x86-64上的新系统调用代码,因为它也使用系统调用表。

如果以扩展当前系统调用表以外的任何方式更改当前系统调用表,则会中断所有依赖库和代码,包括libc、init等。


以下是当前的Linux系统调用表:

为什么不告诉我们您想要做什么,然后我们将确定入侵系统是否是正确的方法?这似乎真的是多个不同的问题……分解它可能会得到更好的结果。