小议文件保护和锁定技术

发送请求_内核层自己发送IRP请求操作文件全面总结 本文为看雪论精华文章看雪论坛作者ID:低调putchar 一、概述Windows操作系统中,文件系统过滤驱动的过滤设备绑定在文件系统(FSD)设备之上,监视和过滤我们的文件访问。当应用层发起文件操作调用时内核层都会转换为IRP发送到设备栈中位于栈顶的设备,然后通过IO栈单元(IO_STACK_LOCATION)保存一些参数把IRP请求继续向下层设备发送,最后至FSD,由FSD完成实际的文... 阅读详情

近1年来互连网上的木马越来越多,有的还删除不掉,要切换到dos才可行,如:CNNC,3721等,实现技术也五花八门,但就文件不可删除的实现技术可分三类:

  1 Attach file system; 这种技术和Filemon/sfilter查不多,就是挂一个filter驱动到fs上,其他函数都是passthru下去,只处理IRP_MJ_SET_INFORMATION,当发现有删除需保护文件的IRP,就 
Irp->IoStatus.Status = STATUS_SUCCESS;            
Irp->IoStatus.Information = 0;            
IoCompleteRequest(Irp, IO_NO_INCREMENT);
更本不让Fs去处理,从而达到文件不可删除的作用!

有什么方法可以删除呢?自己写个驱动自己填充irp包(见OSR文档Rolling Your Own),直接发送IRP到File System Device上去就ok啦!


  2 修改file system的dispatch函数表; 首先得到Fs的DriverObject(根据驱动名得到驱动设备对象(ObReferenceObjectByName (IoDriverObjectType))),pDriverObject->MajorFunction [IRP_MJ_SET_INFORMATION] = MySetInformation,然后再MySetInformation中再调用原来的调度函数,类似于HookApi;发现有删除
需保护文件的IRP,就直接IoCompleteRequest,更本不让原来的FsSetInformation处理!

有什么方法可以删除呢?自己写个驱动来修复Fs的dispatch函数表,读Fs的原始文件,根据PE文件得到Fs的Entrypoint, dispatch函数表的填充都在EntryPoint后面,我们可以根据Opcode查找,XX XX XX XX就是我们要找的dispatch的原始地址;找到后pDriverObject->MajorFunction [IRP_MJ_SET_INFORMATION] = XX XX XX XX,然后就能删除文件啦!

FunOpc=MajorFunction*4+0x38
C7 46 FunOpc[<80]  XX XX XX XX  mov     dword ptr [esi+50h], offset _NtfsFsdSetInformation
C7 86 FunOpc[>=80] XX XX XX XX
C7 43 FunOpc[<80]  XX XX XX XX  mov     dword ptr [ebx+50h], offset _NtfsFsdSetInformation
C7 83 FunOpc[>=80] XX XX XX XX


  3 通过ZwCreateFile把文件锁定;删除时报告“文件正在使用,禁止删除”,具体原理自己摸索吧,反正是通过ZwCreateFile实现的!

有什么方法可以删除呢?
  step1 :通过
QuerySystemInformation(SystemHandleInformation)得到当前系统的所有句柄信息
  step2 :遍历当前所有进程,根据进程ID,得到此进程打开的所有句柄信息
  Step3 :把句柄发送给我们的驱动程序,驱动程序根据ObQueryNameString得到句柄的路径信息,然后再传给我们的应用程序
  Step4 :如果是我们要删除文件的路径,应用程序调用DuplicateHandle(DUPLICATE_CLOSE_SOURCE),句柄被关闭了,现在可以删除文件了! 
  注:QuerySystemInformation的使用说明见The Undocumented Functions,或者http://undocumented.ntinternals.net,第三种解除文件锁定的方法是我反汇编Unlock软件学习到的

Vue后台管理 - 登录/登出 - 权限管理 - 列表过滤 - 权限切换 - 多语言切换 - 组件 - 富文本编辑器 - Markdown编辑器 - 城市级联 - 图片预览编辑 - 可拖拽列表 - 文件上传 - 数字渐变 - split-pane - 表单编辑 - 文章发布 - 工作流 - 表格 - 可拖拽排序 - 可编辑表格 - 行内编辑 - 单元格编辑 - 可搜索表格 - 表格导出数据 - 导出为Csv文件 - 导出为Xls文件 - 表格转图片 - 错误页面 - 403页面 - 404页面 - 500页面 - 高级路由 - 动态路由 - 带参页面 - 换肤 - 收缩侧边栏 - tag标签导航 - 面包屑导航 - 全屏/退出全屏 - 锁屏 - 消息中心 - 个人中心 立即下载

相关推荐

ZwQuerySystemInformation查找进程文件句柄

ZwQuerySystemInformation查找文件句柄

IRP_MJ_SET_INFORMATION

IRP_MJ_SET_INFORMATION 什么时候发送 IO管理器和其他操作系统组件,其他内核模式驱动程序发送 IRP_MJ_SET_INFORMATION 请求。例如当用户模式下的应用程序调用一个像SetEndOfFile 的微软Win32函数,或者是内核模式下的组件调用ZwSetInformationFile时会发送这个请求。 操作:文件系统驱动程序 文件系统驱动程序应当提取和解码

死胖子的博客 2408

adminmodel皮肤

cs1.6 op 专用皮肤 内置说明 adminmodel

less加管道tail_Linux之cat tail less常见用法

1.cat通常查找出错误日志 cat error.log | grep 'foo' , 这时候我们还有个需求就是输出当前这个日志的前后几行:cat error.log | grep -C 10 'foo' #显示file文件里匹配foo字串那行以及上下10行cat error.log | grep -B 10 'foo' #显示foo及前10行cat error.log | grep -A 10 ...

weixin_39957934的博客 305

Vue + Scss 动态切换主题颜色实现换肤的示例代码

根据预设的配色方案,在前端实现动态切换系统主题颜色。 大概的思路就是给html根标签设置一个data-theme属性,然后通过js切换data-theme的属性值,Scss根据此属性来判断使用对应主题变量。这里可以选择持久化Vux或接口来保存用户选择的主题。 一、首先需要给项目下载配置Scss 1.安装依赖 npm install node-sass sass-loader --save-dev 2.找到build中webpack.base.conf.js,在rules中添加scss规则 { test: /\.scss$/, loaders: ['style', 'css', 'sass

【AI平台】n8n入门2:第一个工作流,调用本地大模型

n8n是一款开源的,专注于AI工作流构建,支持灵活的自定义与集成。就是可以把大模型和其他工具联合起来,这就厉害了。而且,免费功能又强大,目前很火,来研究一下。

正经教主是个热衷于正经学习分享的教主。 4533

<学习笔记>Windows驱动开发技术详解__派遣函数

派遣函数是Windows驱动程序中的重要概念。驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的。 用户模式下所有对驱动程序的I/O请求,全部由操作系统转换为一个叫做IRP数据结构,不同的IRP会被“派遣”到不同的派遣函数中。 IRP与派

The New Old Things 4623

ASIC--DFT可测性设计工程师

DFT是什么? DFT是design for test(可测性设计)的缩写,就是在芯片设计过程中,加入可测性逻辑。有的公司把该职位归到前端设计,有的归到中端实现。 DFT职位大多分布于规模较大的数字IC设计公司里,因为大公司对芯片品质要求高,而且规模越大,芯片越贵,DFT就越复杂越重要。DFT主要是通过在芯片中加入可测性逻辑,等芯片制造出来,在ATE(AutomaticTestEquipmen...

TroubleMaker 2万+

读懂常见IRP:IRP_MJ_CLEANUP/IRP_MJ_CLOSE/IRP_MJ_CREATE

IRP_MJ_CLEANUP保持进程定义上下文信息的驱动器,必须在DispatchCleanup中包含cleanup请求。何时发送: 收到IRP_MJ_CLEANUP意味着请求的目标设备与目标文件的句柄相关(也可能因为io请求后没有释放)入参: 无出参: 无操作: 该IRP在关闭 file object 句柄的进程上下文中发送。因此,驱动器应该释放进程上下文中所指

5763

如何实现SOLIDWORKS阵列的“智能变更”?

有时,我们在设计一个零件时,零件上有一排阵列孔,同时零件有不同的长度,我们又希望可以做到零件长度改变时,这排孔可以按长度等距增减孔阵列的个数;或是零件长度加长或缩短时,这排孔保持个数不变,按零件长度增减孔距。 那具体要怎么做呢?接下来,我们一起来看看怎么用SOLIDWORKS中简单的操作来实现这两种智能的变更: 零件长度加长或缩短时,这排孔要按长度等距增减孔阵列的个数。 零件长度加长或缩短时,这排孔保持个数不变,按零件长度增减孔距。 那接下来,我们一起来看看怎么用简单的操作来实现这两种智能的

SOLIDWORKS艾金米 2080

嵌入式GUI显示驱动配置实战:从emWin硬件接口到SPI屏驱动优化

在嵌入式系统开发中,显示驱动是连接GUI库与物理屏幕的核心底层模块,其本质是CPU与显示控制器之间的数据“翻译”与“传输”系统。其工作原理是通过实现特定的硬件抽象层接口,将GUI生成的图形数据转换为屏幕能识别的时序和协议。这项技术的核心价值在于,它允许开发者在资源受限的MCU上,通过适配不同的硬件接口,以最小的硬件开销实现稳定的图形输出。其典型应用场景包括智能家居面板、工业HMI、可穿戴设备等嵌入式图形界面开发。本文将深入解析emWin GUI库的驱动框架,重点探讨如何针对SPI、I2C等串行接口进行高效的

weixin_29159711的博客 342

HIPS(Sfilter)

文件过滤那么就是相关分发函数的处理 FilterCreate(创建) FilterRead(一般不拦截,加解密处理) FilterWrite(修改,加解密处理) FilterSetInfo(删,重命名,IRP_MJ_SET_INFORMATION) Filterclose(一般不拦截,写关闭拦截) FIlterClean(写关闭) 代码片段 DriverObject->...

kernweak的博客 466

国家医保移动支付国密算法SM2签名验签、SM4加解密DLL

DLL,非.net开发,所以无需安装配置,直接程序引用开发即可,支持各类开发语言。已知省份有广西、贵州、安徽、河北、黑龙江、湖南、吉林、江苏、四川、新疆等各地方。国家医保移动支付国密算法SM2签名验签、SM4加解密DLL。//SM4加密与解密。支持医保移动支付(国家统一版),//SM2签名与验签。

4266

小议计算机网络平安的目前状况及策略

 摘 要 以影响计算机网络平安的主要因素为突破口,重点分析防范各种不利于计算机网络正常运行的办法,从不同角度全面了解影响计算机网络平安的情况,做到心中有数,将不利因素解决在萌芽状态,确保计算机网络的平安管理和有效运行。   计算机网络 系统平安 网络权限 加密1 影响计算机网络平安的主要因素  (1)网络系统在稳定性和可扩充性方面存在新问题。由于设计的系统不规范、不合理以及缺乏平安性考虑,因而

monicaxiaoy的专栏 1168

LLC谐振电路增益公式推导

LLC谐振电路增益公式理解

金凯*博客 1万+

【YOLO目标检测全栈实战】68 模型量化:从FP32到INT8,精度不掉,速度翻倍

摘要: 模型量化能显著提升推理速度(如YOLOv5s帧率从15FPS提升至38FPS),但需避免三大误区:1)校准集需覆盖实际场景,而非随机采样;2)敏感层(如检测头)应保留FP32精度;3)预处理必须与量化前后一致。通过混合精度量化(Backbone用INT8,检测头用FP32)和逐通道量化,可实现<1%的mAP损失。关键步骤包括校准数据准备、量化感知训练及逐层精度评估,最终在Jetson Nano等边缘设备上实现速度与精度的平衡。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 146

数据库安全小议

数据库安全目前是安全从业者讨论的重要主题之一。随着越来越多的突发事件发生,是时候采取一些行动了。 安全的数据库应当为成员的访问提供了有效控制与保护,同时还能保障所有的数据质量。我们必须充分了解数据...

cuchou5321的博客 267

一文探讨视频秒开:m3u8视频格式与视频秒开优化

秒开指的是,一秒内成功加载的播放数/播放总数。本意是想对比一下m3u8与mp4视频格式,并了解m3u8格式优缺点,以确定一个大概优化方向。但对m3u8做简单了解后,觉的m3u8可能是一个优化方向。

bjxiaxueliang的CODING小栈 2万+

【半原创】Irp占坑保护文件不被删除

Irp操作出自125096的博客 http://blog.youkuaiyun.com/qq125096885/article/details/53033896 这里提下 博主的例子中使用irpclose文件对象,这可能会造成蓝屏。 见链接:https://bbs.pediy.com/thread-215269.htm 所以这里把IrpCloseFile改为ObDereferenceObj

zhuhuibeishadiao 2419

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

获取本进程所有句柄和资源

获取本进程所有句柄和资源

要把所有那些负面的信息当做对自身行为的评价,而不是对自身价值的评判。 426

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Ring0层发送IRP消息打开文件不释放对象实现文件防删

背景 文件保护技术不论对于病毒木马还是杀软来说,都是至关重要的。要在内核层下实现文件防删除,通常是通过HOOK内核函数来实现,通过判断是否是删除保护文件,从而拒绝操作。本文将介绍一种不需要HOOK操作即可实现的文件保护方法,通过发送IRP信息打开文件并获取文件句柄,而不关闭文件句柄,使文件句柄一直保持打开状态。在文件句柄没有被关闭释放的情况,文件不能被删除,从而实现文件防删除。 实现过程 在前面章节就已经介绍过发送IRP管理操作文件,直接发送 IRP 对文件进行操作,可以避免一些HOOK的干扰。 在发送 I

毕业作品网站 716

强删文件--->构建IRP---->独占--->正在运行 以及磁盘读写(思路)

个人比较崇拜360 一个小小的按钮下面蕴含着很多的原理 要有多么强大才能1天搞定偏移 -------致敬360 致敬MJ-001 无奈本人学业不精 只能说说“独占”和“正在运行” 打开文件 一般使用ZwCreateFile NtCreateFile 但这些函数还不够底层 使用IoCreateFile会好一些 被其它程序独占 枚举句柄表 ZwQuerySystemInformation -

zhuhuibeishadiao 3127

使用IRP进行文件操作

一定要先感谢为技术的进步而付出辛勤汗水的人,感谢他们对技术的共享.一个通用IRP访问文件的十六进制编辑器(开源代码)     --   被诅咒的神(邪恶八进制信息安全团队)Windows平台内核级文件访问                               --   baiyuanfan (baiyuanfan@163.com)特别感谢被诅咒的神,他写的里面包含了非常多

2788

ARM 汇编入门(十):标量浮点与 VFP 指令全解析

前九篇从架构、ARM32、AArch64 寄存器/寻址、算术位操作、分支、调用约定、内存模型、NEON、SVE/SVE2 一路走到这里。这一篇回到标量浮点子系统:AArch64 用统一的 V0–V31 寄存器文件同时服务标量 FP、NEON 和 SVE;FPCR 控舍入/非规格化/异常陷阱,FPSR 记粘性异常标志;FMADD 单次舍入、FMAXNM 跳过 NaN、FRECPE/FRSQRTE 做快速倒数/平方根估计;最后落到 FP16/BF16 这些机器学习降精度扩展。

m0_58087444的博客 212
上一篇: Rootkit 1: Detection Hide Process
下一篇: Ring0Prolog
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值