广告
返回顶部
首页 > 资讯 > 操作系统 >Linux操作系统下隐藏文件的方法
  • 230
分享到

Linux操作系统下隐藏文件的方法

2023-06-17 01:06:47 230人浏览 薄情痞子
摘要

这篇文章主要讲解了“linux操作系统下隐藏文件的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux操作系统下隐藏文件的方法”吧!一. 概述 目前通用的隐藏文件方法还是hooksy

这篇文章主要讲解了“linux操作系统下隐藏文件的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux操作系统下隐藏文件的方法”吧!

一. 概述

目前通用的隐藏文件方法还是hooksys_getdents64系统调用, 大致流程就是先调用原始的sys_getdents64系统调用,然后在在buf中做过滤。修改sys_call_table是比较原始的rk技术了,碰到好点的管理员, 基本上gdb一下vmlinux就能检测出来。 如何想做到更加隐蔽的话,就要寻找新的技术。 inline hook也是目前比较流行的做法,不容易检测。本文通过讲解一种利用inline hook内核中某函数, 来达到隐藏文件的方法。

二. 剖析sys_getdnts64系统调用

想隐藏文件, 还是要从sys_dents64系统调用下手。 去看下它在内核中是如何实现的。

代码在linux-2.6.26/fs/readdir.c中:

asmlinkage long sys_getdents64(unsigned int fd, struct linux_dirent64 __user * dirent, unsigned int count)    {    struct file * file;    struct linux_dirent64 __user * lastdirent;    struct getdents_callback64 buf;    int error;    error = -EFAULT;    if (!access_ok(VERIFY_WRITE, dirent, count))    Goto out;    error = -EBADF;    file = fget(fd);    if (!file)    goto out;    buf.current_dir = dirent;    buf.previous = NULL;    buf.count = count;    buf.error = 0;    error = vfs_readdir(file, filldir64, &buf);    if (error < 0)    goto out_putf;    error = buf.error;    lastdirent = buf.previous;    if (lastdirent) {    typeof(lastdirent->d_off) d_off = file->f_pos;    error = -EFAULT;    if (__put_user(d_off, &lastdirent->d_off))    goto out_putf;    error = count - buf.count;    }    out_putf:    fput(file);    out:    return error;    }

首先调用access_ok来验证是下用户空间的dirent地址是否越界,是否可写。 接着根据fd,利用fget找到对应的file结构。 接着出现了一个填充buf数据结构的操作,先不管它是干什么的,接着往下看。

vfs_readdir(file, filldir64, &buf);

函数最终还是调用vfs层的vfs_readdir来获取文件列表的。 到这,我们可以是否通过hookvfs_readdir来达到隐藏文件的效果呢。 继续跟踪vfs_readdir看看这个想法是否可行。

源代码在同一文件中:

int vfs_readdir(struct file *file, filldir_t filler, void *buf)    {    struct inode *inode = file->f_path.dentry->d_inode;    int res = -ENOTDIR;    if (!file->f_op || !file->f_op->readdir)    goto out;    res = security_file_permission(file, MAY_READ);    if (res)    goto out;    res = mutex_lock_killable(&inode->i_mutex);    if (res)    goto out;    res = -ENOENT;    if (!IS_DEADDIR(inode)) {    res = file->f_op->readdir(file, buf, filler);    file_accessed(file);    }    mutex_unlock(&inode->i_mutex);    out:    return res;    }EXPORT_SYMBOL(vfs_readdir);

它有3个参数,***个是通过fget得到的file结构指针, 第2个通过结合上下文可得知,这是一个回调函数用来填充第3个参数开始的用户空间的指针。 接着看看它具体是怎么实现的。

通过security_file_permission()验证后, 在用mutex_lock_killable()对inode结构加了。然后调用ile->f_op->readdir(file, buf, filler);通过进一步的底层函数来对buf进行填充。这个buf就是用户空间strcut dirent64结构的开始地址。

所以到这里我们可以断定通过hook vfs_readdir函数对buf做过滤还是可以完成隐藏文件的功能。而且vfs_readdir的地址是导出的, 这样就不用复杂的方法找它的地址了。

但是还有没有更进一步的方法呢? 前面不是提到过有个filldir64函数吗, 它用来填充buf结构的。也许通过hook它来做更隐蔽的隐藏文件方法。 继续跟踪filldir64,看看它是怎么实现的。

static int filldir64(void * __buf, const char * name, int namlen, loff_t offset,    u64 ino, unsigned int d_type)    {    struct linux_dirent64 __user *dirent;    struct getdents_callback64 * buf = (struct getdents_callback64 *) __buf;    int reclen = ALIGN(NAME_OFFSET(dirent) + namlen + 1, sizeof(u64));    buf->error = -EINVAL;    if (reclen > buf->count)    return -EINVAL;    dirent = buf->previous;    if (dirent) {    if (__put_user(offset, &dirent->d_off))    goto efault;    }    dirent = buf->current_dir;    if (__put_user(ino, &dirent->d_ino))    goto efault;    if (__put_user(0, &dirent->d_off))    goto efault;    if (__put_user(reclen, &dirent->d_reclen))    goto efault;    if (__put_user(d_type, &dirent->d_type))    goto efault;    if (copy_to_user(dirent->d_name, name, namlen))    goto efault;    if (__put_user(0, dirent->d_name + namlen))    goto efault;    buf->previous = dirent;    dirent = (void __user *)dirent + reclen;    buf->current_dir = dirent;    buf->count -= reclen;    return 0;    efault:    buf->error = -EFAULT;    return -EFAULT;    }

先把参数buf转换成struct getdents_callback64的结构指针。

struct getdents_callback64 {    struct linux_dirent64 __user * current_dir;    struct linux_dirent64 __user * previous;    int count;    int error;    };

current_dir始终指向当前的struct dirent64结构,filldir64每次只填充一个dirent64结构。

它是被file->f_op->readdir循环调用的。 通过代码可以看出是把dirent64结构的相关项拷贝到用户空间的dirent64结构中, 然后更新相应的指针。

所以通过分析filldir64代码, 可以判定通过判断参数name,看它是否是我们想隐藏的文件,是的话,return 0就好了。

三. 扩展

通过分析sys_getdents64代码的实现,我们可以了解到通过hook内核函数的方法,来完成rootkit的功能是很简单和方便的。 关键你能了解它的实现逻辑。 对linux平台来说,阅读内核源代码是开发rootkit的根本。 如何hook? 最简单的就是修改函数的前几个字节,jmp到我们的新函数中去, 在新函数完成类似函数的功能。 根本不必在跳回原函数了, 有了内核源代码在手,原函数怎么实现,我们就怎么copy过去给它在实现一次。 所在linux实现rk也有很方便的一点,就是它的内核源代码是公开的, 好好阅读源代码吧, 你会有更多的收获。

感谢各位的阅读,以上就是“Linux操作系统下隐藏文件的方法”的内容了,经过本文的学习后,相信大家对Linux操作系统下隐藏文件的方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Linux操作系统下隐藏文件的方法

本文链接: https://www.lsjlt.com/news/286722.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux操作系统下隐藏文件的方法
    这篇文章主要讲解了“Linux操作系统下隐藏文件的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux操作系统下隐藏文件的方法”吧!一. 概述 目前通用的隐藏文件方法还是hooksy...
    99+
    2023-06-17
  • Vista操作系统隐藏文件清理方法
    Vista系统中多余的字体、多余的备份文件等的删除方法大家早已知晓,因此本文只为大家介绍一些比较“隐蔽”的删除方法。注意:在进行以下操作前,应先备份Windows注册表,以便执行了错误操作后能及时...
    99+
    2023-05-26
    方法 文件 清理 Vista
  • Vista操作系统清理隐藏文件的方法
    这篇文章主要讲解了“Vista操作系统清理隐藏文件的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vista操作系统清理隐藏文件的方法”吧!  删除多余的虚拟光驱图标  当我们在系统中安...
    99+
    2023-06-14
  • win7系统显示隐藏文件的方法
    本篇内容主要讲解“win7系统显示隐藏文件的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“win7系统显示隐藏文件的方法”吧!具体操作:打开“计算机”,点击“工具”。在工具的下拉菜单中选择“...
    99+
    2023-06-27
  • WinXP、Win7系统显示隐藏文件和系统隐藏文件的设置方法(图文教程)
    在Windows系统中很多时候我们看到的明明只有几个文件,在这些文件右键属性时看到的空间数和磁盘右键属性所看到的占用磁盘空间大小完全不同,就如系统C盘一样,看起来只有这些文件,实际却差很多,当然这是因为系统一些保护功能,...
    99+
    2023-06-07
    WinXP显示隐藏文件 Win7显示隐藏文件 显示系统隐藏文件 文件 系统 隐藏 方法 设置
  • Linux系统怎么隐藏文件夹和文件
    这篇文章主要介绍“Linux系统怎么隐藏文件夹和文件”,在日常操作中,相信很多人在Linux系统怎么隐藏文件夹和文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux系统怎么隐藏文件夹和文件”的疑惑有所...
    99+
    2023-06-13
  • Linux系统怎么删除隐藏文件
    小编今天带大家了解Linux系统怎么删除隐藏文件,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“Linux系统怎么删除隐藏文件”的知识...
    99+
    2023-06-28
  • win7怎么隐藏文件夹 Win7系统下隐藏文件夹实例教程
      本文将教你Windows 7下,如何隐藏文件夹。   第一步,找一个不容易引起注意的文件夹,所以不要选什么游戏电影之类的文件夹,并且这个文件夹不会被轻易删除,但不要使用系统分区目录,因为在Windows 7会因为权限...
    99+
    2023-06-03
    win7 Win7系统 隐藏文件夹 系统 文件夹 Win7 实例教程
  • Linux系统怎么隐藏文件或者文件夹
    这篇文章的内容主要围绕Linux系统怎么隐藏文件或者文件夹进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!1、首先展示如何隐藏文件夹。(文件和文件夹的...
    99+
    2023-06-28
  • deepin20隐藏文件怎么取消隐藏?deepin显示隐藏文件的方法
    deepin20怎么显示隐藏文件?deepin20系统中有很多重要的文件被隐藏了,想要修改,需要显示出来,,该怎么显示呢?下面我们就来看看详细的教程。 点任务栏上的【文件管理器】。 在【文件管理器】中点右上角的下拉菜单按钮...
    99+
    2022-06-01
    deepin 隐藏文件 deepin20
  • XP系统下怎么把文件完全隐藏
    本篇内容主要讲解“XP系统下怎么把文件完全隐藏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“XP系统下怎么把文件完全隐藏”吧!如图,我们将一个文件夹先隐藏,我们右击选属性。在弹出的对话框中勾选隐...
    99+
    2023-06-14
  • win7查看隐藏的文件怎么操作win7查看隐藏的文件方式介绍
    win7查看隐藏的文件怎么操作呢,用户们使用win7的时候用户实际上是有些文件看不见的,这些文件一般是被隐藏亮点,因此如果想要见到隐藏的文件夹,用户必须根据开启显示隐藏文件才能够看获得,下面便是实际的win7查看隐藏的文件方式介绍,这样就可...
    99+
    2023-07-10
  • win8系统显示和隐藏文件后缀名的方法
      win8系统显示文件后缀名的方法: 1、打开“这台电脑”;    2、点击查看;   3、打钩“文件扩展名”;   4、返回桌面...
    99+
    2022-06-04
    后缀名 隐藏文件 方法
  • Win10系统隐藏文件后缀名的方法是什么
    小编今天带大家了解Win10系统隐藏文件后缀名的方法是什么,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“Win10系统隐藏文件后缀名...
    99+
    2023-06-28
  • Win8系统删除隐藏的MSOCache文件夹的方法介绍
    MSOCache文件夹是用户在电脑上安装office所产生的,该文件夹所占内存比较大,且是支持删除的,想知道如何将该文件夹删除的朋友 Win8系统删除隐藏的MSOCache文件夹的方法介绍 1、首先需要下载一个注册表工具...
    99+
    2023-05-19
    MSOCache Win8
  • Win7系统如何显示隐藏文件的具体操作步骤
    win7现在用的人越来越多,但win7界面和xp有很大不同,如果使用XP的方法,让win7显示隐藏文件夹不容易操作,下面我就给大家介绍下让win7显示隐藏文件夹的方法:      ...
    99+
    2023-05-26
    Win7 步骤 文件 系统
  • 如何在Linux系统中轻松隐藏文件夹
    今天就跟大家聊聊有关如何在Linux系统中轻松隐藏文件夹,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。然后,选择您希望隐藏的存档文件,通过单击“位置”并浏览正确的目录来保存。在此之后...
    99+
    2023-06-07
  • Linux系统查看隐藏文件命令有哪些
    本文将为大家详细介绍“Linux系统查看隐藏文件命令有哪些”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“Linux系统查看隐藏文件命令有哪些”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下...
    99+
    2023-06-28
  • 如何隐藏文件夹 教你最简单的隐藏文件夹方法
    想要隐藏文件夹的时候怎么办呢,有时候就想有点自己的秘密文件,但又怕让别人觉察到,小编就有这样的经历,就算用自己的电脑,想弄些东西,但难免也会有朋友要借来玩,这个时候就很怕朋友看到,那就囧了,以下小编总结了下方法,有很简单...
    99+
    2023-05-19
    隐藏文件夹
  • 怎么隐藏文件夹的方法
    这篇文章主要讲解了“怎么隐藏文件夹的方法 ”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么隐藏文件夹的方法 ”吧!最简单的隐藏文件夹方法:第一步:在运行中输入cmd,回车,打开命令行窗口第...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作