gpt4 book ai didi

c - 如何通过 hook sys_exit_group 和 sys_kill 使进程无法退出

转载 作者:太空宇宙 更新时间:2023-11-04 03:09:53 25 4
gpt4 key购买 nike

我正在使用 Android 8.1 Pixel2 XL 手机。我 Hook 了 sys_call_table 并使用内核模块用我自己的函数替换了系统调用。我想让一个应用程序无法退出。我试图使应用程序的 sys_exit_group 和 sys_kill 无效。我自己的职能应该做什么。

我想调试一个应用程序,但它打开了反调试。所以我想hook系统调用

我试过直接返回,但没用。系统将再次调用 sys_kill。但这一次,我无法从其 pid 获取应用程序的 uid。

asmlinkage long my_sys_kill(pid_t pid, int sig)
{
char buff[MAX_PATH] = {0};
kuid_t uid = current->cred->uid;
int target_uid = get_uid_from_pid(pid);
if (target_uid == targetuid)
{
printk(KERN_DEBUG "@Tsingxing: kill hooked uid is %d pid is %d, tragetuid is %d, packagename: %s\n",uid.val,pid, target_uid, buff);
return 0;
}
printk(KERN_DEBUG "@Tsingxing:kill called uid is %d,pid is %d, traget_uid is %d\n",uid.val,pid,target_uid);
return origin_sys_kill(pid, sig);
}

asmlinkage long my_sys_exit_group(int error_code)
{
char buff[MAX_PATH] = {0};
kuid_t uid = current->cred->uid;
long tgid = current -> tgid;
long pid = current->pid;
int target_uid = get_uid_from_pid(pid);
if (uid.val == targetuid || target_uid == targetuid)
{
printk(KERN_DEBUG "@Tsingxing:exit group hooked, pid is %ld\n",pid);
return 0;
}
return origin_sys_exit_group(error_code);
}

最佳答案

我已经解决了这个问题。我混合了 sys_call_table 和 compat_sys_call_table。 Target 应用程序使用的是 compat_sys_call_table,但我使用的是 __NR_xxx。我使用 __NR_compat_xxx 方法解决了这个问题。只需在 compat_sys_call_exit_group 中直接返回即可。

关于c - 如何通过 hook sys_exit_group 和 sys_kill 使进程无法退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57461446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com