首页 伟德体育app下载官网 编程 必备知识 搜索引擎
站内搜索
  • 最近浏览
  • [J2EE]J2EE 应用伟德体育app下载官网技术
  • MySql替换伟德始于英国1946内容
  • IIS 7 下限制站点带宽和...
  • [伟德始于英国1946]sql serve...
  • linkd.exe目录映射工...
  • thinkphp提示PHP ...
  • [web站点]在IIS上开设...
  • [网络伟德体育app下载官网]如何保证伟德体育app下载官网...
  • dedecms网站写权限
  • MYSQL启用日志,查看日志...
  • thinkphp的设置方法
  • [伟德始于英国1946]查看sql ser...
  • VC++ 重启服务,停止服务...
  • 微软IE 7浏览器曝出第二个...
  • 微软承认系统严重漏洞 Win...
  • 推荐文章
  • [网络伟德体育app下载官网]如何保证伟德体育app下载官网...
  • [伟德始于英国1946]查看sql ser...
  • MySql替换伟德始于英国1946内容
  • thinkphp的设置方法
  • 命令行下的ip安全策略
  • 热文排行
  • API之SetWindows...
  • StartServiceCtrlDispatcher
  • [网络伟德体育app下载官网]如何保证伟德体育app下载官网...
  • 搭建eclipse+Jbos...
  • VC++ 重启服务,停止服务...
  • 远程桌面连接日志脚本bat&vbs
  • VB API 重启服务,停止...
  • 端口复用技术与实现代码(C++)
  • 获取计算机信息有关的API
  • WTS系列函数的使用
  • [web站点]在IIS上开设...
  • 将STL改成链表式
  • vc编译exe的体积最小优化
  • VB ListView的使用
  • [伟德始于英国1946]查看sql ser...
  • 小议文件保护和锁定技术


       近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软件学习到的
    [wangjy17908]
    添加时间:2010-07-06
    版权所有(C)2005-2015