https://github.com/stdhu/kernel-inline-hook
该内核模块是一个支持不同架构的linux内核inline hook模块。 用于inline hook linux 内核函数。 该模块主要可用于在调用某个内核函数之前或之后插入自定义代码,实现类似函数监控的功能。
该模块目前支持的架构:
该模块目前支持hook的函数情况:
hook函数结构示例
回调函数示例
hook函数数组信息示例
/
/
普通函数
static struct p_hook_struct p_generic_permission_hook
=
{
.entry_fn
=
p_generic_permission_entry,
/
/
前回调函数地址
.ret_fn
=
p_generic_permission_ret,
/
/
后回调函数地址
.name
=
"generic_permission"
,
/
/
函数名称
};
/
/
系统调用表中的函数
static struct p_hook_struct p_generic_permission_hook
=
{
.entry_fn
=
p_generic_permission_entry,
.ret_fn
=
p_generic_permission_ret,
.name
=
"__x64_sys_read"
,
.sys_call_number
=
__NR_read
/
/
系统调用号
};
/
/
普通函数
static struct p_hook_struct p_generic_permission_hook
=
{
.entry_fn
=
p_generic_permission_entry,
/
/
前回调函数地址
.ret_fn
=
p_generic_permission_ret,
/
/
后回调函数地址
.name
=
"generic_permission"
,
/
/
函数名称
};
/
/
系统调用表中的函数
static struct p_hook_struct p_generic_permission_hook
=
{
.entry_fn
=
p_generic_permission_entry,
.ret_fn
=
p_generic_permission_ret,
.name
=
"__x64_sys_read"
,
.sys_call_number
=
__NR_read
/
/
系统调用号
};
/
/
parameter1: 调用原函数后的返回地址
/
/
parameter2: 调用原函数时寄存器的情况
int
p_generic_permission_ret(unsigned
long
ret_addr,hk_regs
*
regs);
/
/
parameter1: 调用原函数后的返回地址
/
/
parameter2: 调用原函数时寄存器的情况
int
p_generic_permission_ret(unsigned
long
ret_addr,hk_regs
*
regs);
static const struct p_functions_hooks{
const char
*
name;
int
(
*
install)(
int
p_isra);
void (
*
uninstall)(void);
int
is_sys;
}p_functions_hooks_array[]
=
{
{
"generic_permission"
,
p_install_generic_permission_hook,
p_uninstall_generic_permission_hook,
0
},
{NULL,NULL,NULL,
0
}
/
/
数组结尾
};
static const struct p_functions_hooks{
const char
*
name;
int
(
*
install)(
int
p_isra);
void (
*
uninstall)(void);
int
is_sys;
}p_functions_hooks_array[]
=
{
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2022-12-10 17:16
被榆一编辑
,原因: