【问题标题】:Can we modify the int 0x80 routine?我们可以修改 int 0x80 例程吗?
【发布时间】:2010-10-10 03:27:21
【问题描述】:
  1. linux 2.6 与 2.4 有何不同?
  2. 我们可以修改源内核吗?
  3. 我们可以修改 int 0x80 服务例程吗?

【问题讨论】:

  • 你为什么不告诉你你想做什么,然后我们会弄清楚入侵系统是否是正确的做法?
  • 这似乎真的是多个不同的问题...分解它可能会得到更好的结果。

标签: linux assembly routines


【解决方案1】:

更新:
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.


i386 的系统调用表条目位于:
arch/i386/kernel/syscall_table.S

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

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

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

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

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

如果您以任何方式更改当前系统调用表而不是扩展它,您将破坏所有依赖的库和代码,包括 libc、init 等。

这是当前的 Linux 系统调用表:http://asm.sourceforge.net/syscall.html

【讨论】:

    【解决方案2】:
    1. 这是一次架构大修。一切都在内部发生了变化。 SMP 支持已完成,进程调度程序得到了极大改进,内存管理得到了大修,还有许多其他事情。
    2. 是的。它是开源软件。如果您没有源的副本,您可以从您的供应商或kernel.org 处获取。
    3. 是的,但不建议这样做,因为它破坏 libc,它破坏您的基本布局,并且它破坏您的工具链,如果您更改现有系统调用的顺序,几乎所有您可能认为自己想做的事情都应该尽可能在用户空间中完成。

    【讨论】:

      猜你喜欢
      • 2016-11-15
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 2020-01-02
      • 2018-09-01
      相关资源
      最近更新 更多