总有朋友问如何隐藏Linux进程。我说你要隐藏到什么程度,是隐藏在内核里还是隐藏在用户里。网上的讨论无非就是hookoffprocfs或者类似的用户态解决方案,难免啰嗦。我说这些场景太大太复杂了。对于想马上看到效果的人来说,看到这么一堆复杂的东西很可能会望而却步。本文介绍一种非常规的对用户隐藏Linux进程的方法,只需一行代码:修改进程的pid。注意是小音,不值得反驳,调侃高级会议工程师,恶作剧就行了。目标->pid=0x7fffffff;完整的脚本如下:#!/usr/bin/stap-g#hide.stpglobalpid;functionhide(who:long)%{structtask_struct*target;target=pid_task(find_vpid(STAP_ARG_who),PIDTYPE_PID);target->pid=0x7fffffff;%}探测开始{pid=$1hide(pid);退出();}ff;快来试试:[root@localhostsystem]#./tohide&[1]403[root@localhostsystem]#./hide.stp[root@localhostsystem]#使用以下命令检测所有可以显示的二进制文件进程:forpidin$(ls/proc|awk'/^[0-9]+/{print$1}');做ls-l/proc/$pid/exe;doneprocfs没了,当然ps就检测不到了。如果你觉得guru模式下的stap很奇怪,那你可以自己写一个独立的linux内核模块,修改后使用返回的方法:target->pid=xxxx;返回-1;是不是比各种hook方法简单太多了,正所谓搬数据不搬代码!是不是比各种hook方法简单多了,所谓搬数据不搬代码!简单说一下原理:在创建task的时候,根据它的pid注册procfs目录结构。在显示procfs目录结构时,遍历task列表,以其pid为key查找procfs目录结构。0x7fffffff(或任何其他合理值)根本没有注册,当然无法显示。以上就是良虚教程网为各位小伙伴分享的一行代码如何隐藏linux进程。以上就是良序教程网为各位小伙伴们分享的Linux相关知识。
