linux内核hook技术之指令覆盖与注入

前言

    说到hook,传统意义上,大家都会觉得跟注入和劫持挂钩。在linux内核中,也可以通过指令覆盖和注入的方式进行hook,来完成自己的业务逻辑,实现自己的功能需求。

    一部分人喜欢称这种hook技术为inline hook。

如何hook

    具体hook细节在以下编写的驱动例子程序中给出了,例子中标注了详细的注释,大家可对照着代码查看。

    例子程序在centos 6系统上编译并测试通过了,如果换成其他系统,部分代码可能需要进行微调,想要尝试的朋友,自己写个简单的makefile文件编译即可。

    例子程序中以check_kill_permission内核函数为例进行了hook,装载时需要给驱动传递kallsyms_lookup_name函数地址作为参数。

    eg: insmod **.ko kallsyms_lookup_name=0x*******,具体地址0x*****可通过指令 cat /proc/kallsyms | grep kallsyms_lookup_name获取。

 

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/kallsyms.h>
#include <linux/types.h>
#include <linux/cpu.h>
#include <asm/siginfo.h>
#include <asm/insn.h>
#include <linux/stop_machine.h>

/*使用check_kill_permission函数来进行hook测试*/
#define HOOK0_SYS_OPEN_NAME  "check_kill_permission"

#define HOOK0_INSN_INIT_NAME 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值