pixel修改服务器,Pixel修改kernel内核调试

+#include "../base/base.h"

#define CREATE_TRACE_POINTS

#include diff --git a/fs/open.c b/fs/open.c

index d7e0e1b..000b15c 100644

--- a/fs/open.c

+++ b/fs/open.c

@@ -1007,6 +1007,14 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)

if (IS_ERR(tmp))

return PTR_ERR(tmp);

+ if (tmp != NULL && tmp->name != NULL && !strcmp(tmp->name, "/data/data/com.chinatelecom.bestpayclient/.cache/classes.dve")) {

+ int uid = from_kuid_munged(current_user_ns(), current_uid());

+ if (uid % 2 == 1) {

+ char* file = "/data/data/com.excelliance.demo/gameplugins/com.chinatelecom.bestpayclient/.cache/classes.dve";

+ tmp->name = file;

+ }

+ }

+

fd = get_unused_fd_flags(flags);

if (fd >= 0) {

struct file *f = do_filp_open(dfd, tmp, &op);

diff --git a/kernel/signal.c b/kernel/signal.c

index 453c522..c22b643 100644

--- a/kernel/signal.c

+++ b/kernel/signal.c

@@ -2966,6 +2966,11 @@ SYSCALL_DEFINE2(kill, pid_t, pid, int, sig)

info.si_code = SI_USER;

info.si_pid = task_tgid_vnr(current);

info.si_uid = from_kuid_munged(current_user_ns(), current_uid());

+printk(KERN_INFO "kill pid %d with sig %d: current pid %d, name %s, uid %d ", pid, sig, info.si_pid, current->comm, info.si_uid);

+ if (info.si_uid % 2 == 1) {

+ dump_stack();

+ return 0;

+ }

return kill_something_info(sig, &info, pid);

}

+#include "../base/base.h" #define CREATE_TRACE_POINTS #include diff --git a/fs/open.c b/fs/open.c index d7e0e1b..000b15c 100644 --- a/fs/open.c +++ b/fs/open.c @@ -1007,6 +1007,14 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode) if (IS_ERR(tmp)) return PTR_ERR(tmp); + if (tmp != NULL && tmp->name != NULL && !strcmp(tmp->name, "/data/data/com.chinatelecom.bestpayclient/.cache/classes.dve")) { + int uid = from_kuid_munged(current_user_ns(), current_uid()); + if (uid % 2 == 1) { + char* file = "/data/data/com.excelliance.demo/gameplugins/com.chinatelecom.bestpayclient/.cache/classes.dve"; + tmp->name = file; + } + } + fd = get_unused_fd_flags(flags); if (fd >= 0) { struct file *f = do_filp_open(dfd, tmp, &op); diff --git a/kernel/signal.c b/kernel/signal.c index 453c522..c22b643 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -2966,6 +2966,11 @@ SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) info.si_code = SI_USER; info.si_pid = task_tgid_vnr(current); info.si_uid = from_kuid_munged(current_user_ns(), current_uid()); +printk(KERN_INFO "kill pid %d with sig %d: current pid %d, name %s, uid %d ", pid, sig, info.si_pid, current->comm, info.si_uid); + if (info.si_uid % 2 == 1) { + dump_stack(); + return 0; + } return kill_something_info(sig, &info, pid); }
经验分享 程序员 微信小程序 职场和发展