近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软件学习到的
相关推荐
ZwQuerySystemInformation查找进程文件句柄
ZwQuerySystemInformation查找文件句柄
IRP_MJ_SET_INFORMATION
IRP_MJ_SET_INFORMATION 什么时候发送 IO管理器和其他操作系统组件,其他内核模式驱动程序发送 IRP_MJ_SET_INFORMATION 请求。例如当用户模式下的应用程序调用一个像SetEndOfFile 的微软Win32函数,或者是内核模式下的组件调用ZwSetInformationFile时会发送这个请求。 操作:文件系统驱动程序 文件系统驱动程序应当提取和解码
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 ...
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工作流构建,支持灵活的自定义与集成。就是可以把大模型和其他工具联合起来,这就厉害了。而且,免费功能又强大,目前很火,来研究一下。
<学习笔记>Windows驱动开发技术详解__派遣函数
派遣函数是Windows驱动程序中的重要概念。驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的。 用户模式下所有对驱动程序的I/O请求,全部由操作系统转换为一个叫做IRP数据结构,不同的IRP会被“派遣”到不同的派遣函数中。 IRP与派
ASIC--DFT可测性设计工程师
DFT是什么? DFT是design for test(可测性设计)的缩写,就是在芯片设计过程中,加入可测性逻辑。有的公司把该职位归到前端设计,有的归到中端实现。 DFT职位大多分布于规模较大的数字IC设计公司里,因为大公司对芯片品质要求高,而且规模越大,芯片越贵,DFT就越复杂越重要。DFT主要是通过在芯片中加入可测性逻辑,等芯片制造出来,在ATE(AutomaticTestEquipmen...
读懂常见IRP:IRP_MJ_CLEANUP/IRP_MJ_CLOSE/IRP_MJ_CREATE
IRP_MJ_CLEANUP保持进程定义上下文信息的驱动器,必须在DispatchCleanup中包含cleanup请求。何时发送: 收到IRP_MJ_CLEANUP意味着请求的目标设备与目标文件的句柄相关(也可能因为io请求后没有释放)入参: 无出参: 无操作: 该IRP在关闭 file object 句柄的进程上下文中发送。因此,驱动器应该释放进程上下文中所指
如何实现SOLIDWORKS阵列的“智能变更”?
有时,我们在设计一个零件时,零件上有一排阵列孔,同时零件有不同的长度,我们又希望可以做到零件长度改变时,这排孔可以按长度等距增减孔阵列的个数;或是零件长度加长或缩短时,这排孔保持个数不变,按零件长度增减孔距。 那具体要怎么做呢?接下来,我们一起来看看怎么用SOLIDWORKS中简单的操作来实现这两种智能的变更: 零件长度加长或缩短时,这排孔要按长度等距增减孔阵列的个数。 零件长度加长或缩短时,这排孔保持个数不变,按零件长度增减孔距。 那接下来,我们一起来看看怎么用简单的操作来实现这两种智能的
嵌入式GUI显示驱动配置实战:从emWin硬件接口到SPI屏驱动优化
在嵌入式系统开发中,显示驱动是连接GUI库与物理屏幕的核心底层模块,其本质是CPU与显示控制器之间的数据“翻译”与“传输”系统。其工作原理是通过实现特定的硬件抽象层接口,将GUI生成的图形数据转换为屏幕能识别的时序和协议。这项技术的核心价值在于,它允许开发者在资源受限的MCU上,通过适配不同的硬件接口,以最小的硬件开销实现稳定的图形输出。其典型应用场景包括智能家居面板、工业HMI、可穿戴设备等嵌入式图形界面开发。本文将深入解析emWin GUI库的驱动框架,重点探讨如何针对SPI、I2C等串行接口进行高效的
HIPS(Sfilter)
文件过滤那么就是相关分发函数的处理 FilterCreate(创建) FilterRead(一般不拦截,加解密处理) FilterWrite(修改,加解密处理) FilterSetInfo(删,重命名,IRP_MJ_SET_INFORMATION) Filterclose(一般不拦截,写关闭拦截) FIlterClean(写关闭) 代码片段 DriverObject->...
国家医保移动支付国密算法SM2签名验签、SM4加解密DLL
DLL,非.net开发,所以无需安装配置,直接程序引用开发即可,支持各类开发语言。已知省份有广西、贵州、安徽、河北、黑龙江、湖南、吉林、江苏、四川、新疆等各地方。国家医保移动支付国密算法SM2签名验签、SM4加解密DLL。//SM4加密与解密。支持医保移动支付(国家统一版),//SM2签名与验签。
小议计算机网络平安的目前状况及策略
摘 要 以影响计算机网络平安的主要因素为突破口,重点分析防范各种不利于计算机网络正常运行的办法,从不同角度全面了解影响计算机网络平安的情况,做到心中有数,将不利因素解决在萌芽状态,确保计算机网络的平安管理和有效运行。 计算机网络 系统平安 网络权限 加密1 影响计算机网络平安的主要因素 (1)网络系统在稳定性和可扩充性方面存在新问题。由于设计的系统不规范、不合理以及缺乏平安性考虑,因而
LLC谐振电路增益公式推导
LLC谐振电路增益公式理解
【YOLO目标检测全栈实战】68 模型量化:从FP32到INT8,精度不掉,速度翻倍
摘要: 模型量化能显著提升推理速度(如YOLOv5s帧率从15FPS提升至38FPS),但需避免三大误区:1)校准集需覆盖实际场景,而非随机采样;2)敏感层(如检测头)应保留FP32精度;3)预处理必须与量化前后一致。通过混合精度量化(Backbone用INT8,检测头用FP32)和逐通道量化,可实现<1%的mAP损失。关键步骤包括校准数据准备、量化感知训练及逐层精度评估,最终在Jetson Nano等边缘设备上实现速度与精度的平衡。
数据库安全小议
数据库安全目前是安全从业者讨论的重要主题之一。随着越来越多的突发事件发生,是时候采取一些行动了。 安全的数据库应当为成员的访问提供了有效控制与保护,同时还能保障所有的数据质量。我们必须充分了解数据...
一文探讨视频秒开:m3u8视频格式与视频秒开优化
秒开指的是,一秒内成功加载的播放数/播放总数。本意是想对比一下m3u8与mp4视频格式,并了解m3u8格式优缺点,以确定一个大概优化方向。但对m3u8做简单了解后,觉的m3u8可能是一个优化方向。
【半原创】Irp占坑保护文件不被删除
Irp操作出自125096的博客 http://blog.youkuaiyun.com/qq125096885/article/details/53033896 这里提下 博主的例子中使用irpclose文件对象,这可能会造成蓝屏。 见链接:https://bbs.pediy.com/thread-215269.htm 所以这里把IrpCloseFile改为ObDereferenceObj
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
获取本进程所有句柄和资源
获取本进程所有句柄和资源
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
Ring0层发送IRP消息打开文件不释放对象实现文件防删
背景 文件保护技术不论对于病毒木马还是杀软来说,都是至关重要的。要在内核层下实现文件防删除,通常是通过HOOK内核函数来实现,通过判断是否是删除保护文件,从而拒绝操作。本文将介绍一种不需要HOOK操作即可实现的文件保护方法,通过发送IRP信息打开文件并获取文件句柄,而不关闭文件句柄,使文件句柄一直保持打开状态。在文件句柄没有被关闭释放的情况,文件不能被删除,从而实现文件防删除。 实现过程 在前面章节就已经介绍过发送IRP管理操作文件,直接发送 IRP 对文件进行操作,可以避免一些HOOK的干扰。 在发送 I
强删文件--->构建IRP---->独占--->正在运行 以及磁盘读写(思路)
个人比较崇拜360 一个小小的按钮下面蕴含着很多的原理 要有多么强大才能1天搞定偏移 -------致敬360 致敬MJ-001 无奈本人学业不精 只能说说“独占”和“正在运行” 打开文件 一般使用ZwCreateFile NtCreateFile 但这些函数还不够底层 使用IoCreateFile会好一些 被其它程序独占 枚举句柄表 ZwQuerySystemInformation -
使用IRP进行文件操作
一定要先感谢为技术的进步而付出辛勤汗水的人,感谢他们对技术的共享.一个通用IRP访问文件的十六进制编辑器(开源代码) -- 被诅咒的神(邪恶八进制信息安全团队)Windows平台内核级文件访问 -- baiyuanfan (baiyuanfan@163.com)特别感谢被诅咒的神,他写的里面包含了非常多
ARM 汇编入门(十):标量浮点与 VFP 指令全解析
前九篇从架构、ARM32、AArch64 寄存器/寻址、算术位操作、分支、调用约定、内存模型、NEON、SVE/SVE2 一路走到这里。这一篇回到标量浮点子系统:AArch64 用统一的 V0–V31 寄存器文件同时服务标量 FP、NEON 和 SVE;FPCR 控舍入/非规格化/异常陷阱,FPSR 记粘性异常标志;FMADD 单次舍入、FMAXNM 跳过 NaN、FRECPE/FRSQRTE 做快速倒数/平方根估计;最后落到 FP16/BF16 这些机器学习降精度扩展。
2408



被折叠的 条评论
为什么被折叠?



