目前上面的逻辑已经在内核源代码树的fs / binfmt_elf.c文件中的load_elf_binary函数中实现,但是我需要重新编译整个内核只需要250行代码更改,所以我正在寻找通过将其作为可加载内核模块(LKM)实现来即兴发挥此功能,以便每次加载ELF时它都会检查是否修改了ELF,如果是,那么它会从相应的部分中获取密钥.
编辑:总结一下,我正在寻找一个可加载的内核模块来读取ELF的各个部分并获取包含加密密钥和相关元数据的自定义部分的内容,并在cpu寄存器中设置这些值.
解决方法 是的,这是可能的,但绝对不容易.甚至还有一个受支持的内核工具“kprobes”允许您从指定位置插入对自己代码的调用(请参阅documentation / kprobes.txt).如果插入对您自己的代码的调用不足,我认为您需要使用与kprobe相同的机制:通过使用jmps覆盖指令或调用您自己的代码来修补所需的位置.我曾经在一家公司工作,该公司的安全产品通过运行时修补Windows内核来安装它的钩子.这几乎是一回事,但至少在windows上,当时必须支持有限数量的版本.
所以,这绝对是可能的,但我不想尝试.它会非常脆弱;你将实际上试图击中一个移动的目标.每个内核安全补丁或版本升级都可能会破坏您的代码.
总结以上是内存溢出为你收集整理的在linux内核中拦截ELF加载程序:通过可加载内核模块的fs / binfmt_elf.c文件全部内容,希望文章能够帮你解决在linux内核中拦截ELF加载程序:通过可加载内核模块的fs / binfmt_elf.c文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)