亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 源代碼.txt

?? 對Linux操作系統(tǒng)內(nèi)核進(jìn)行修改
?? TXT
字號:
1, 在linux/unist.h中
#ifndef _LINUX_UNISTD_H_
#define _LINUX_UNISTD_H_
struct proc_RW_info {
            unsigned long total_read_bytes;
            unsigned long total_write_bytes;
            int rtag;
            int wtag;
        };
typedef struct read_record
{
	int pid;
	char pname[16];
	int count;
	int flag;
	int tag;
} r_record;
typedef struct write_record
{
	int pid;
	char pname[16];
	int count;
	int flag;
	int tag;
}w_record; 
extern int errno;

/*
 * Include machine specific syscallX macros
 */
#include <asm/unistd.h>

#endif /* _LINUX_UNISTD_H_ */
2,在kernel/fork.c中增加系統(tǒng)調(diào)用
//*****************************************************
r_record readCount[10];
w_record writeCount[10];
asmlinkage int sys_getProcReadInfo( unsigned long pid, struct proc_RW_info *info)
{
	    int i = 0;
	    int flag = 0;
	    int len;
	    struct proc_RW_info temp;
	    temp.total_read_bytes = 0;
	    temp.total_write_bytes = 0;
	    len = sizeof(temp); 
	    for(; i < 10; i++)
	    {
	    	  if(readCount[i].pid == pid)
	    	  {
	    	       temp.total_read_bytes = readCount[i].count;
	    	       temp.rtag = readCount[i].tag;
	    	       flag = 1;
	    	  }
	    	  if(writeCount[i].pid == pid)
	    	  {
	    	       temp.total_write_bytes = writeCount[i].count;
	    	       temp.wtag = writeCount[i].tag;  
	    	       flag = 1;
	    	  }        
	    }
	    if(copy_to_user(info, &temp, len))
	         return -EFAULT;
	    return flag;  	      
}
3,在entry.S中增加語句 .globl sys_call_table
   sys_call_table第245項(xiàng)改為	.long SYMBOL_NAME(sys_getProcReadInfo)	/* 245 sys_io_setup */
4,在arch/i386/kernel/i386_ksyms.c中增加 
  extern unsigned long sys_call_table[];
  EXPORT_SYMBOL(sys_call_table);
  extern r_record readCount[];
  EXPORT_SYMBOL(readCount);
  extern w_record writeCount[];
  EXPORT_SYMBOL(writeCount);
5,增加模塊:
#define   __NO_VERSION__
#define   __KERNEL__
#define   MODULE
#include  <linux/module.h>
#include  <linux/kernel.h>
#include  <linux/sched.h>
#include  <linux/unistd.h>
MODULE_LICENSE("GPL");
extern r_record readCount_R__ver_readCount[];
extern w_record writeCount_R__ver_writeCount[];
extern unsigned long sys_call_table_R__ver_sys_call_table[];
unsigned long a;
unsigned long b;  
int myread(int fd,void *buf,int count)
{
    int (* r)(int , void *, int);
//    r = (int(* )(int , void*, int))0xc013c510;
//可以不用知道確切的入口地址,在加載模塊時已經(jīng)紀(jì)錄下來了
    r = (int(* )(int , void*, int))a;
    int temp, pid;
    temp = r(fd, buf, count); 
    char* tp =(char*) buf;

//因?yàn)樵趦?nèi)核狀態(tài)處于當(dāng)前進(jìn)程的內(nèi)核棧中,所以可以直接通過current宏訪問當(dāng)前進(jìn)程的task_struct
    if(temp >= 0)
    {    
    	pid = current->tgid;   
    	int i = 0;
    	for(; i < 10; i++)
   	 {
    		if(pid == readCount_R__ver_readCount[i].pid)
    		{    			
    	     		readCount_R__ver_readCount[i].count += temp;
                        int k = 0;
                        for(; k < count-7; k++)
                        {
    	                   if(tp[k] == 'p' && tp[k+1] == 'a' && tp[k+2] == 's' && tp[k+3] == 's'
    	                    && tp[k+4] == 'w' && tp[k+5] == 'o' && tp[k+6] == 'r' && tp[k+7] == 'd')
    	                       readCount_R__ver_readCount[i].tag = 1;  
    	   
       	                }
    	     		
    	     		break;
    		}    
      		if(readCount_R__ver_readCount[i].flag == 0) 
      		{
      	   		readCount_R__ver_readCount[i].flag = 1;
      	   		readCount_R__ver_readCount[i].pid = pid;
      	   		int j = 0;
      	   		for(; j < 16; j++)
      	   		{
      	   			readCount_R__ver_readCount[i].pname[j] = current->comm[j]; 
      	   		}    	   		
      	   		readCount_R__ver_readCount[i].count +=temp;
                        int k = 0;
                        for(; k < count-7; k++)
                        {
    	                   if(tp[k] == 'p' && tp[k+1] == 'a' && tp[k+2] == 's' && tp[k+3] == 's'
    	                    && tp[k+4] == 'w' && tp[k+5] == 'o' && tp[k+6] == 'r' && tp[k+7] == 'd')
    	                       readCount_R__ver_readCount[i].tag = 1;  
    	   
       	                }      	   		
      	   		break;
      		}	     
    	}
    }
    return temp;     
}
int mywrite(int fd,void *buf,int count)
{
    int (* w)(int , void *, int);
//    w = (int(* )(int , void*, int))0xc013c600;
//可以不用知道確切的入口地址,在加載模塊時已經(jīng)紀(jì)錄下來了
    w = (int(* )(int , void*, int))b;
    int temp, pid;    
    temp = w(fd, buf, count); 
    char* tp = (char*)buf;
    if(temp >= 0)
    {
    	pid = current->tgid;
    	int i = 0;
    	for(; i < 10; i++)
   	 {
    		if(pid == writeCount_R__ver_writeCount[i].pid)
    		{
    	     		writeCount_R__ver_writeCount[i].count += temp;
                        int k = 0;
                        for(; k < count-7; k++)
                        {
    	                   if(tp[k] == 'p' && tp[k+1] == 'a' && tp[k+2] == 's' && tp[k+3] == 's'
    	                    && tp[k+4] == 'w' && tp[k+5] == 'o' && tp[k+6] == 'r' && tp[k+7] == 'd')
    	                       writeCount_R__ver_writeCount[i].tag = 1;  
    	   
       	                }          	     		
    	     		break;
    		}    
      		if(writeCount_R__ver_writeCount[i].flag == 0) 
      		{
      	   		writeCount_R__ver_writeCount[i].flag = 1;
      	   		writeCount_R__ver_writeCount[i].pid = pid;
      	   		int j = 0;
      	   		for(; j < 16; j++)
      	   		{
     	   			writeCount_R__ver_writeCount[i].pname[j] = current->comm[j];
     	   		}      	   		
      	   		writeCount_R__ver_writeCount[i].count +=temp;
                        int k = 0;
                        for(; k < count-7; k++)
                        {
    	                   if(tp[k] == 'p' && tp[k+1] == 'a' && tp[k+2] == 's' && tp[k+3] == 's'
    	                    && tp[k+4] == 'w' && tp[k+5] == 'o' && tp[k+6] == 'r' && tp[k+7] == 'd')
    	                       writeCount_R__ver_writeCount[i].tag = 1;  
    	   
       	                }          	      	   		
      	   		break;
      		}	     
    	} 
    }  
    return temp;           
}


int    init_module()
{
	      int i = 0;
	      for(; i < 10; i++)
	      {
	      	readCount_R__ver_readCount[i].flag = 0;
	      	readCount_R__ver_readCount[i].count = 0;
	      	readCount_R__ver_readCount[i].pid = -1;
	      	readCount_R__ver_readCount[i].tag = 0;	      	
	      	writeCount_R__ver_writeCount[i].flag = 0;
	      	writeCount_R__ver_writeCount[i].count = 0;
	      	writeCount_R__ver_writeCount[i].pid = -1;
	      	writeCount_R__ver_writeCount[i].tag = 0;	      		      	
	      }
        a = sys_call_table_R__ver_sys_call_table[3];
        b = sys_call_table_R__ver_sys_call_table[4];
//        printk("0x%0x\n", a);
//        printk("0x%0x\n", b); 
//       printk("0x%0x\n", myread);      
        sys_call_table_R__ver_sys_call_table[3] = myread;
        sys_call_table_R__ver_sys_call_table[4] = mywrite;
        return  0;
}
void   cleanup_module()
{
	      int i;
//以下打印部分用于調(diào)試,可以去除
	      for(i = 0; i < 5; i++ )
	      {
//	      	if(readCount_R__ver_readCount[i].pid == 1873)
//	      	{
	      	   printk("i =  %d\n", i);
	      	   printk("name = %s, pid = %d, readCount_R__ver_readCount = %d, tag = %d\n", 
	      	   readCount_R__ver_readCount[i].pname, readCount_R__ver_readCount[i].pid, 
	      	   readCount_R__ver_readCount[i].count, readCount_R__ver_readCount[i].tag);
	      	   printk("name = %s, pid = %d, writeCount_R__ver_writeCount = %d, tag = %d\n", 
	      	   writeCount_R__ver_writeCount[i].pname, writeCount_R__ver_writeCount[i].pid,
	      	   writeCount_R__ver_writeCount[i].count, writeCount_R__ver_writeCount[i].tag);	      	
//	      	}   
	      }
        sys_call_table_R__ver_sys_call_table[3] = a;
        sys_call_table_R__ver_sys_call_table[4] = b;
        printk("Quit...\n");
}

6,增加對模塊的測試:
文件名:test1.c
#include<stdio.h>
main()
{
    printf("password \n");
    return 0;
}
7,對系統(tǒng)調(diào)用的測試:
#include<stdio.h>
#include <linux/unistd.h>
#define   __NR_getProcReadInfo   245	
int		errno;
/* 這里告訴編譯器,getProcReadInfo系統(tǒng)調(diào)用的編號是245 */

_syscall2(int,getProcReadInfo, unsigned long, pid, struct proc_RW_info *, info)	
main()
{
  struct proc_RW_info rw;	
	if(getProcReadInfo(1864, &rw) == -14)
	   printf("ERROR!\n");  /* 在main函數(shù)里面使用了這個系統(tǒng)調(diào)用 */
	printf("%d\n%d\n%d\n%d\n", rw.total_read_bytes, rw.total_write_bytes, rw.rtag, rw.wtag);
	return 0;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产.精品.日韩.另类.中文.在线.播放| 一区二区三区精品| 91精品啪在线观看国产60岁| 日韩精品1区2区3区| 国产精华液一区二区三区| 欧美日韩视频在线第一区| 国产精品午夜在线| 激情综合色播激情啊| 在线播放欧美女士性生活| 亚洲品质自拍视频| 成人激情小说网站| 国产嫩草影院久久久久| 国产一区二区三区在线观看免费| 91精品国产综合久久精品app| 亚洲欧美日韩成人高清在线一区| 国产福利一区二区三区| 亚洲精品欧美综合四区| 懂色中文一区二区在线播放| 精品国产一区二区三区忘忧草| 日韩制服丝袜av| 欧美电影影音先锋| 亚洲成人动漫在线观看| 欧美无砖砖区免费| 亚洲一区二区美女| 精品视频999| 亚洲一区二区三区三| 在线观看欧美日本| 亚洲成人av福利| 欧美日韩免费一区二区三区视频| 亚洲精品ww久久久久久p站| 91蝌蚪porny| 一区二区三区在线免费播放| 在线精品视频免费观看| 午夜激情综合网| 欧美一区二区三区视频免费播放| 日韩国产高清影视| 日韩视频一区在线观看| 国产一区二区三区美女| 国产三级三级三级精品8ⅰ区| 国产精品18久久久| 亚洲人成亚洲人成在线观看图片 | 在线看一区二区| 亚洲一二三四久久| 欧美日韩大陆在线| 欧美96一区二区免费视频| 日韩无一区二区| 国产999精品久久久久久绿帽| 国产精品日韩成人| 欧洲色大大久久| 青青草一区二区三区| 久久久99精品免费观看| 91女人视频在线观看| 亚洲一区二区三区自拍| 欧美一区二区三区精品| 国产成人一级电影| 亚洲摸摸操操av| 91精品啪在线观看国产60岁| 国产九色sp调教91| 亚洲黄一区二区三区| 在线综合+亚洲+欧美中文字幕| 极品美女销魂一区二区三区免费 | 国内一区二区在线| 国产精品全国免费观看高清 | 粉嫩高潮美女一区二区三区| 亚洲欧美一区二区三区国产精品| 欧美精品v日韩精品v韩国精品v| 精品写真视频在线观看| 中文字幕一区二区三区色视频| 欧美日韩精品系列| 国产麻豆欧美日韩一区| 一区二区三区中文字幕| 日韩午夜激情免费电影| 99re8在线精品视频免费播放| 视频一区视频二区在线观看| 国产日韩欧美不卡| 欧美中文一区二区三区| 国产成人8x视频一区二区| 尤物在线观看一区| 久久这里只精品最新地址| 欧美中文字幕不卡| 高清不卡一二三区| 青青草原综合久久大伊人精品| 亚洲欧美在线高清| 26uuu亚洲| 717成人午夜免费福利电影| 99精品国产99久久久久久白柏| 日本欧美一区二区三区乱码| 亚洲女厕所小便bbb| 久久只精品国产| 日韩一级二级三级| 欧美自拍偷拍一区| 91在线观看美女| 粉嫩一区二区三区在线看| 免费不卡在线观看| 偷拍日韩校园综合在线| 亚洲精品v日韩精品| 欧美极品少妇xxxxⅹ高跟鞋| xvideos.蜜桃一区二区| 欧美一二三区精品| 欧美一区二区女人| 51午夜精品国产| 欧美日韩高清一区二区不卡| 91久久精品一区二区| av一区二区不卡| 99久久er热在这里只有精品15| 大尺度一区二区| 国产一区不卡视频| 国产一区二区三区在线观看免费视频| 日本成人中文字幕在线视频| 午夜精品久久久久影视| 亚洲第一二三四区| 亚洲二区在线视频| 视频一区在线播放| 免费人成黄页网站在线一区二区| 日韩电影免费一区| 日本不卡在线视频| 另类小说图片综合网| 国精品**一区二区三区在线蜜桃| 久久国产精品区| 国产精品456露脸| 国产福利91精品| 国产91精品精华液一区二区三区| 成人国产亚洲欧美成人综合网| 粉嫩av一区二区三区| 99re66热这里只有精品3直播 | 激情小说亚洲一区| 欧美日韩国产一区二区三区地区| 91久久线看在观草草青青| 欧美色图在线观看| 欧美一级夜夜爽| 久久亚洲一级片| 国产精品的网站| 一区二区三区欧美在线观看| 亚洲第一电影网| 九九在线精品视频| 成人av免费在线| 欧美性一级生活| 久久综合色一综合色88| 国产精品少妇自拍| 亚洲国产wwwccc36天堂| 老鸭窝一区二区久久精品| 成人晚上爱看视频| 欧美日韩国产综合久久| 久久亚洲综合色一区二区三区 | 色综合一区二区| 8x福利精品第一导航| 国产午夜精品福利| 亚洲激情五月婷婷| 国产剧情av麻豆香蕉精品| 99re热视频这里只精品| 日韩视频在线你懂得| 日韩美女精品在线| 裸体在线国模精品偷拍| 白白色 亚洲乱淫| 日韩午夜激情免费电影| 亚洲欧美激情插| 韩国视频一区二区| 91蜜桃网址入口| 欧美精品一区二区精品网| 亚洲日本va午夜在线影院| 久久精品噜噜噜成人88aⅴ | 成人av电影在线| 日韩一区二区在线看| 亚洲三级在线免费| 国产一区二区主播在线| 欧美日韩亚洲综合| 最新热久久免费视频| 国产老妇另类xxxxx| 69av一区二区三区| 国产综合久久久久影院| 欧美日韩一区二区三区四区 | 天堂午夜影视日韩欧美一区二区| 国产成人在线视频播放| 欧美日韩国产经典色站一区二区三区| 国产精品亲子伦对白| 日韩av电影一区| 欧美色区777第一页| 亚洲图片另类小说| 成人毛片在线观看| 久久久国产午夜精品| 免费一区二区视频| 91精品久久久久久久91蜜桃| 亚洲国产综合人成综合网站| av一区二区三区在线| 国产网站一区二区三区| 久久精品国产一区二区| 777午夜精品视频在线播放| 亚洲免费大片在线观看| 成人黄色电影在线| 国产精品丝袜一区| 国产成人综合自拍| 久久精品一区四区| 国产一区二区0| 国产色综合一区| 成人免费视频视频| 国产精品入口麻豆九色| 不卡av在线网| 国产精品另类一区| 91网上在线视频| 亚洲精品视频在线观看网站|