一行程式碼如何隱藏 Linux 程序?
阿新 • • 發佈:2020-09-16
本文介紹一種將Linux程序小隱於使用者的非常規方法,僅僅一行程式碼:
修改掉程序的pid
即可。
注意是小隱,所以,不值得反制,逗一下高階會議工程師搞個惡作劇玩玩得了。
target->pid=0x7fffffff;
完整的指令碼如下:
#!/usr/bin/stap-g
#hide.stp
globalpid;
functionhide(who:long)
%{
structtask_struct*target;
target=pid_task(find_vpid(STAP_ARG_who),PIDTYPE_PID);
target->pid=0x7fffffff;
%}
probebegin
{
pid=$1
hide(pid);
exit();
}
ff;
來來來,試一下:
[root@localhostsystem]#./tohide&
[1]403
[root@localhostsystem]#./hide.stp
[root@localhostsystem]#
用下面的命令可以檢測所有可顯示程序的二進位制檔案:
forpidin$(ls/proc|awk'/^[0-9]+/{print$1}');do
ls-l/proc/$pid/exe;
done
procfs
裡沒了,ps
當然就檢測不到了。
如果你覺得guru
模式的stap
怪怪的,那麼你完全可以編寫自己獨立的Linux kernel module
,採用修改完即退的方法:
target->pid=xxxx;
return -1;
是不是比各種hook
法簡單多了,所謂的動資料而不要動程式碼!是不是比各種hook
法簡單多了,所謂的動資料而不要動程式碼!
簡單的說一下原理:
task被建立的時候,根據其pid
註冊procfs
目錄結構。
展示procfs
目錄結構的時候,遍歷task list
以其pid
作為key
來查詢procfs
目錄結構。
0x7fffffff
(或者任何其它合理的值)根本沒有註冊過,當然無法顯示。
有相同愛好的可以進來一起討論哦:企鵝群號:1046795523
學習視訊資料:http://www.makeru.com.cn/live/1392_1164.html?s=143793