Linux 内核对象文件(.ko)是否有结构?
Does Linux Kernel Object file(. ko) has structure?
我有一个linux内核模块,它有防篡改机制。
当 insmod 模块时,在其初始化函数中检查模块的完整性。
为了测试这个机制,我稍微改变了内核模块的二进制文件。
用于指定此作业。更改的内容是模块文件的某个偏移量的 2 个字节。 (00 02 -> 02 00 十六进制表示)
然后我 insmod 被篡改的模块,我收到 killed 消息并发生内核 oops。
dmesg 表示无法处理 ffffc900209aa7d1 的内核分页请求。
添加它的最后一个调用跟踪过程是 find_symbol_in_section+0x39/0xda.
我猜想模块的地址或与 insmod 进程相关的某些值已更改并导致内核 oops。
所以我认为让我了解有关内核对象文件结构的信息会很有帮助。
根据man page for init_module(2) Linux kernel modules use the ELF file format. You can use a utility like objdump(1) or readelf(1)从中获取读取信息。
我有一个linux内核模块,它有防篡改机制。
当 insmod 模块时,在其初始化函数中检查模块的完整性。
为了测试这个机制,我稍微改变了内核模块的二进制文件。
用于指定此作业。更改的内容是模块文件的某个偏移量的 2 个字节。 (00 02 -> 02 00 十六进制表示)
然后我 insmod 被篡改的模块,我收到 killed 消息并发生内核 oops。
dmesg 表示无法处理 ffffc900209aa7d1 的内核分页请求。 添加它的最后一个调用跟踪过程是 find_symbol_in_section+0x39/0xda.
我猜想模块的地址或与 insmod 进程相关的某些值已更改并导致内核 oops。
所以我认为让我了解有关内核对象文件结构的信息会很有帮助。
根据man page for init_module(2) Linux kernel modules use the ELF file format. You can use a utility like objdump(1) or readelf(1)从中获取读取信息。