在 Debian(以及大多数 Linux 发行版)中,“隐藏进程”通常出于调试、安全测试或特殊运维需求。从合规和安全的角度,以下方法按常见程度和技术层级介绍,并说明适用场景与风险。
# 在 C 程序中可修改 argv[0]
strcpy(argv[0], "hidden_proc");
或 Python:
import setproctitle
setproctitle.setproctitle("systemd-helper")
✅ 影响:ps、top 显示名变化
❌ 不影响:/proc、pkill、pgrep
unshare -p -f --mount-proc ./my_program
✅ 外部 ps 看不到该进程
❌ 需要 root
❌ root 仍可查看
libprocesshider(LD_PRELOAD 劫持)原理:劫持 readdir(),过滤 /proc
git clone https://github.com/gianlucaborello/libprocesshider
cd libprocesshider
make
echo /path/to/libprocesshider.so >> /etc/ld.so.preload
✅ ps、top 看不到指定进程
❌ 易被 ls /proc 或安全软件发现
❌ 可能被杀毒/EDR 检测
通过内核模块从 task_struct 链表移除进程。
⚠️ 严重风险
不推荐在 production 环境使用。
systemd 服务 + 低权限用户ls /proc | grep -E '^[0-9]+$'
ps -e | awk '{print $1}'
diff <(ls /proc) <(ps -e | awk '{print $1}')
如果你能说明使用场景(如:后台服务、安全研究、反调试),我可以给出更合适、更安全的方案。