kernel: Introducing Tracepoint Hook Type Support
Tracepoint is a predefined hook point in the kernel, compared to Kprobe, it is more stable and has lower performance overhead, although compatibility is relatively poor, it is still worth trying By the way, we have also included the config definitions related to hook types in Kconfig, to enhance cleanliness Improve and merge types that do not require hooks Introducing the hook type prctl These patches is based on backslashxx/KernelSU#5 Co-authored-by: Cloud_Yun <1770669041@qq.com> Co-authored-by: Prslc <prslc113@gmail.com> Co-authored-by: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com> Signed-off-by: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com>
This commit is contained in:
@@ -494,6 +494,34 @@ int ksu_handle_prctl(int option, unsigned long arg2, unsigned long arg3,
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Checking hook usage
|
||||
if (arg2 == CMD_HOOK_TYPE) {
|
||||
const char *hook_type;
|
||||
|
||||
#if defined(CONFIG_KSU_KPROBES_HOOK)
|
||||
|
||||
|
||||
hook_type = "Kprobes";
|
||||
#elif defined(CONFIG_KSU_TRACEPOINT_HOOK)
|
||||
hook_type = "Tracepoint";
|
||||
#elif defined(CONFIG_KSU_MANUAL_HOOK)
|
||||
hook_type = "Manual";
|
||||
#else
|
||||
hook_type = "Unknown";
|
||||
#endif
|
||||
|
||||
size_t len = strlen(hook_type) + 1;
|
||||
if (copy_to_user((void __user *)arg3, hook_type, len)) {
|
||||
pr_err("hook_type: copy_to_user failed\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (copy_to_user(result, &reply_ok, sizeof(reply_ok))) {
|
||||
pr_err("hook_type: prctl reply error\n");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_KPM
|
||||
// ADD: 添加KPM模块控制
|
||||
if(sukisu_is_kpm_control_code(arg2)) {
|
||||
|
||||
Reference in New Issue
Block a user