proc檔案系統下檔案隱藏

2021-05-23 20:47:52 字數 2094 閱讀 6925

0.

初讀vfs,大體思路都有了,仔細分析了proc中,寫個檔案隱藏深入了解proc目錄項的新增與建立。

1.yy原先的隱藏方法

原先的方法是考慮sys_getdents64這個系統呼叫,有變更內部執行流,也有hook filldir64

這個函式的。

我想寫個通用的方法,就是切斷要隱藏的檔案與整個kernel的關係,說白了就是把檔案相關結構

脫離kernel聯絡(比如一些檔案相關鍊錶等),具體實行起來把inode/dentry/file等等結構都

考慮到,未免太繁瑣了。況且這裡只是實現欺騙ls的小功能。

2.具體實現起來也要涉及sys_getdents64的流程(ls就用此函式)

----------

sys_getdents64 

==> vfs_readdir 

==> file->f_op->readdir(對於proc根目錄是proc_root_readdir/proc內部子目錄是proc_readdir)

==> proc_readdir:

...do while (de);

...----------

從**裡面可以看到,最後獲取的de(proc_dir_entry)通過filldir函式填充到dirent,最後拷貝dirent到使用者態給ls

這裡,只要將想要隱藏的檔案的proc_dir_entry從其父目錄項的子目錄項鍊表中摘除即可。                               

3.**實現

**只實現隱藏檔案/proc/bus,恢復隱藏和具體通用proc檔案隱藏就沒實現:b

---------------

/* kernel-2.6.34 */

#include

#include

#include

#include

#include

#include

#include

/* hide file: /proc/bus */

#define hidefile "bus"

#define hidefile_parent "/proc"

static int __init hide_init(void)

inode = filp->f_path.dentry->d_inode;

pe = pde(inode);

/* search hidefile proc_dir_entry */

for (old_se = null, se = pe->subdir; se; old_se = se, se = se->next)

if (se == null)

/* 'del' hidefile proc_dir_entry from list */

if (old_se)

else

filp_close(filp, null);

printk(kern_alert "hide init/n");

return 0;

}static void __exit hide_exit(void)

module_init(hide_init);

module_exit(hide_exit);

module_license("gpl");

-------------

4. 測試

#ls /proc | grep bus

bus#insmod hidefile.ko

hide init

#ls /proc | grep bus

#cat /proc/bus

cat: /proc/bus/: is a directory

#cd /proc/bus              

#//進入/proc/bus

經過我的測試,隱藏檔案和隱藏目錄還是有區別的,檔案可以隱藏後完全找不到,

但是目錄隱藏後仍然可以連線進入,只能騙騙ls

5.繼續vfs,看看最後能不能做個把檔案從核心關係集合中剝離的lkm :)

just for funnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn!

Proc檔案系統

include static struct proc dir entry proc null int read proc char page,char start,off t off,int count,int eof,void data len sprintf page len,debug mod...

proc檔案系統

linux 將一切事物都看成檔案,硬體裝置在檔案系統中也有相應的條目。我們使用底層系統呼叫這樣一種特殊方式通過 dev目錄中的檔案來訪問硬體。控制硬體的軟體驅動程式通常可以以某種特定方式配置,或者能夠報告相關資訊。用於與裝置驅動程式進行通訊的工具在過去就已經十分常見,近來年,傾向於提供更一致的方式來...

proc檔案系統

proc檔案系統是由核心實現的檔案系統。當使用者態訪問 proc下檔案時,實際上是呼叫核心中和該檔案對應的特定函式。一般用proc檔案來實現核心 驅動的呼叫。大部分proc檔案是唯讀的,用於獲取核心資訊 還有一些proc檔案是可寫的,當使用者態改變了proc檔案的內容時,會呼叫核心的函式,從而改變核...