亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 7357 | 回復(fù): 11
打印 上一主題 下一主題

請(qǐng)教文件系統(tǒng)過(guò)濾驅(qū)動(dòng)開(kāi)發(fā)的大體步驟 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2005-04-29 14:38 |只看該作者 |倒序?yàn)g覽
工作需要,開(kāi)發(fā)文件系統(tǒng)上層過(guò)濾,比如說(shuō)截獲對(duì)磁盤(pán)的寫(xiě)操作,先
加密再寫(xiě)到磁盤(pán),讀的時(shí)候要解密再傳給操作系統(tǒng).要實(shí)現(xiàn)這樣一來(lái)功能應(yīng)該怎么做.有沒(méi)有些參考資料推薦. windows下面介紹這東西挺多,反倒是linux下面的好像資料不多見(jiàn).希望不吝賜教.

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2005-04-29 21:32 |只看該作者

請(qǐng)教文件系統(tǒng)過(guò)濾驅(qū)動(dòng)開(kāi)發(fā)的大體步驟

[quote]原帖由 "viton_xuan" 發(fā)表:
工作需要,開(kāi)發(fā)文件系統(tǒng)上層過(guò)濾,比如說(shuō)截獲對(duì)磁盤(pán)的寫(xiě)操作,先
加密再寫(xiě)到磁盤(pán),讀的時(shí)候要解密再傳給操作系統(tǒng).要實(shí)現(xiàn)這樣一來(lái)功能應(yīng)該怎么做.有沒(méi)有些參考資料推薦. windows下面介紹這東西挺多,反倒是linux下面

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2005-04-29 23:22 |只看該作者

請(qǐng)教文件系統(tǒng)過(guò)濾驅(qū)動(dòng)開(kāi)發(fā)的大體步驟

若不想改,  就截獲 它的系統(tǒng)調(diào)用

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2005-04-30 09:43 |只看該作者

請(qǐng)教文件系統(tǒng)過(guò)濾驅(qū)動(dòng)開(kāi)發(fā)的大體步驟


如何截獲?
我只想到修改應(yīng)用層的動(dòng)態(tài)連接庫(kù)、系統(tǒng)調(diào)用和驅(qū)動(dòng)程序這三種方法,但這些都需要修改原來(lái)的東西。有沒(méi)有簡(jiǎn)單一些的,不用修改源碼的那種?

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2005-04-30 21:14 |只看該作者

請(qǐng)教文件系統(tǒng)過(guò)濾驅(qū)動(dòng)開(kāi)發(fā)的大體步驟

原帖由 "ltqin" 發(fā)表:

如何截獲?
我只想到修改應(yīng)用層的動(dòng)態(tài)連接庫(kù)、系統(tǒng)調(diào)用和驅(qū)動(dòng)程序這三種方法,但這些都需要修改原來(lái)的東西。有沒(méi)有簡(jiǎn)單一些的,不用修改源碼的那種?

你先寫(xiě)好自己的函數(shù), 然后找到(運(yùn)行時(shí)的) sys_call_table, 那里存放著系統(tǒng)調(diào)用的指針, 你修改指針, 指向你的函數(shù), 你的函數(shù)來(lái)調(diào)用原來(lái)的函數(shù)

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2005-05-01 13:36 |只看該作者

請(qǐng)教文件系統(tǒng)過(guò)濾驅(qū)動(dòng)開(kāi)發(fā)的大體步驟

聽(tīng)君一句話,勝讀10天書(shū)

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2005-05-05 00:59 |只看該作者

請(qǐng)教文件系統(tǒng)過(guò)濾驅(qū)動(dòng)開(kāi)發(fā)的大體步驟

意思大概明白,但是“找到(運(yùn)行時(shí)的) sys_call_table”如何實(shí)現(xiàn)
有沒(méi)有什么推薦資料

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2005-05-05 02:05 |只看該作者

請(qǐng)教文件系統(tǒng)過(guò)濾驅(qū)動(dòng)開(kāi)發(fā)的大體步驟

以前寫(xiě)的一個(gè)截獲系統(tǒng)調(diào)用的模塊,這個(gè)模塊有很好的移植性,適應(yīng)于2.4和2.6內(nèi)核。

#include <linux/kernel.h>;
#include <linux/module.h>;
#include <linux/init.h>;
#include <linux/sched.h>;
#include <asm/unistd.h>;

MODULE_LICENSE("GPL";

unsigned long *sys_call_table=NULL;
asmlinkage int (*orig_mkdir)(const char *,int);

struct _idt
{
  unsigned short offset_low,segment_sel;
  unsigned char reserved,flags;
  unsigned short offset_high;
};

unsigned long *getscTable(){
        unsigned char idtr[6],*shell,*sort;
        struct _idt *idt;
        unsigned long system_call,sct;
        unsigned short offset_low,offset_high;
        char *p;
        int i;                                                                                                                              
        /* get the interrupt descriptor table */
                                                                                                                              
        __asm__("sidt %0" : "=m" (idtr));
                                                                                                                              
        /* get the address of system_call */
        idt=(struct _idt*)(*(unsigned long*)&idtr[2]+8*0x80);
        offset_low = idt->;offset_low;
        offset_high = idt->;offset_high;
        system_call=(offset_high<<16)|offset_low;
                                                                                                                              
        shell=(char *)system_call;
        sort="\xff\x14\x85";
                                                                                                                              
        /* get the address of sys_call_table */
   
        for(i=0;i<(100-2);i++)
                if(shell==sort[0]&&shell[i+1]==sort[1]&&shell[i+2]==sort[2])
                        break;                                                                                                                             
        p=&shell;
        p+=3;
        sct=*(unsigned long*)p;
        
        return (unsigned long*)(sct);
}

asmlinkage int hacked_mkdir(const char * pathname, int mode){
        printk("ID %d called sys_mkdir !\n",current->;pid);
        return orig_mkdir(pathname,mode);
}

static int __init find_init(void){
        sys_call_table = getscTable();
        orig_mkdir=(int(*)(const char*,int))sys_call_table[__NR_mkdir];
        sys_call_table[__NR_mkdir]=(unsigned long)hacked_mkdir;
        return 0;
}

static void __exit find_cleanup(void){
        sys_call_table[__NR_mkdir]=(unsigned long)orig_mkdir;
}

module_init(find_init);
module_exit(find_cleanup);

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2005-05-05 06:46 |只看該作者

請(qǐng)教文件系統(tǒng)過(guò)濾驅(qū)動(dòng)開(kāi)發(fā)的大體步驟

如單單是截獲文件系統(tǒng)相關(guān)的系統(tǒng)調(diào)用,還有一個(gè)方法。這種方法與sys_call_table無(wú)關(guān),而是作用于vfs文件系統(tǒng)。

Adore-ng rootkit提供了一種方法:可以通過(guò)修改vfs的函數(shù)跳轉(zhuǎn)表來(lái)截獲系統(tǒng)調(diào)用。
下面是一個(gè)截獲readdir系統(tǒng)調(diào)用的模塊例子:

#include <linux/sched.h>;
#include <linux/module.h>;
#include <linux/kernel.h>;
#include <linux/init.h>;
#include <linux/fs.h>;
#include <linux/file.h>;

MODULE_LICENSE("GPL";

char *root_fs="/";

typedef int (*readdir_t)(struct file *,void *,filldir_t);
readdir_t orig_root_readdir=NULL;

int myreaddir(struct file *fp,void *buf,filldir_t filldir)
{
        int r;
        printk("<1>;You got me partner!\n";
        r=orig_root_readdir(fp,buf,filldir);
        return r;
}

int patch_vfs(const char *p,readdir_t *orig_readdir,readdir_t new_readdir)
{
        struct file *filep;
        filep=filp_open(p,O_RDONLY,0);
        if(IS_ERR(filep))
                return -1;
        if(orig_readdir)
                *orig_readdir=filep->;f_op->;readdir;

        filep->;f_op->;readdir=new_readdir;
        filp_close(filep,0);
        return 0;
}

int unpatch_vfs(const char *p,readdir_t orig_readdir)
{
        struct file *filep;
        filep=filp_open(p,O_RDONLY,0);
        if(IS_ERR(filep))
                return -1;
        filep->;f_op->;readdir=orig_readdir;
        filp_close(filep,0);
        return 0;
}

static int patch_init(void)
{
        patch_vfs(root_fs,&orig_root_readdir,myreaddir);         
        printk("<1>;VFS is patched!\n";
        return 0;
}
static void patch_cleanup(void)
{
        unpatch_vfs(root_fs,orig_root_readdir);
        printk("<1>;VFS is unpatched!\n";
}
module_init(patch_init);
module_exit(patch_cleanup);

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2005-05-05 13:46 |只看該作者

請(qǐng)教文件系統(tǒng)過(guò)濾驅(qū)動(dòng)開(kāi)發(fā)的大體步驟

原帖由 "richardhesidu" 發(fā)表:

shell=(char *)system_call;
       sort="\xff\x14\x85";
                                                                                                                              
       /* get the address of sys_call_table */
   
       for(i=0;i<(100-2);i++)
               if(shell==sort[0]&&shell[i+1]==sort[1]&&shell[i+2]==sort[2])
                       break;               

"\xff\x14\x85"是什么意思?為什么找到它就找到系統(tǒng)調(diào)用表的地址?
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP