在 Ubuntu(Linux)里“隐藏进程”要看你的目的和使用场景。下面分情况说明,不涉及恶意用途,只讲合法场景与技术原理。
ps / top 过滤ps aux | grep -v process_name
top -p $(pgrep -d',' -v process_name)
这只是显示时过滤,进程依然存在。
#include <stdio.h>
#include <unistd.h>
int main() {
strcpy(argv[0], "systemd-user");
while(1) sleep(1);
}
仅改变
ps显示的命令名,仍可被pkill、/proc查到。
⚠️ 以下方法仅用于安全研究 / 渗透测试 / 防御学习,未经授权使用属违法。
proc 目录(最简单)mount -o bind /empty /proc/1234
或:
unshare -p -m bash
在独立 PID namespace 中,进程对其他 namespace 不可见。
/proc 显示(rootkit 原理)getdents() 系统调用libprocesshiderdiamorphine示例(libprocesshider):
git clone https://github.com/gianlucaborello/libprocesshider
make
LD_PRELOAD=./libprocesshider.so ./your_program
docker run -d --name hidden alpine sleep 1000
容器内进程在宿主机 ps 中可见,但在容器内不可见。
ls /proc | wc -l 与 ps -e | wc -l 对比unhidesudo apt install unhide
unhide proc
LD_PRELOAD、/etc/ld.so.preloadlsmod✅ 合法用途:
❌ 非法用途:
如果你愿意,可以告诉我:
我可以给你更精确的方案。