1. 程式人生 > 實用技巧 >一行程式碼如何隱藏 Linux 程序?

一行程式碼如何隱藏 Linux 程序?

本文介紹一種將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