我正试图从二进制linux内核映像中提取字符串(这种特殊的现象发生在我尝试过的所有类型的映像中:bzImage, vmlinuz, vmlinux, ....而不是一个特定的)
简单地运行'strings '打印出许多带前缀字符的字符串,例如:4">Netlink:解析进程' %s'."属性后剩余%d字节
但是,查看内核源代码,当前字符串不应该包含"4"前缀。在使用一些十六进制编辑器打开文件时,我看到字符串实际上还包括:'x00x01',然后是'x34' ("4")我猜这是某种指向特殊部分的指针,或者类似的东西,因为许多其他字符串包含"3"和其他数字(甚至字符)。
如能提供有关此事的任何信息,我将不胜感激谢谢!OP看到的前缀是KERN_printk
格式说明符之前的特殊字符串字面值,使用C的相邻字符串字面值的连接。例如:
printk(KERN_ERR "Something has gone wrong!n");
从内核3.6版本开始,这些KERN_"