• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運轉,開心的工作
            簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            小議文件保護和鎖定技術

            Posted on 2009-10-25 17:06 S.l.e!ep.¢% 閱讀(423) 評論(0)  編輯 收藏 引用 所屬分類: RootKit
            小議文件保護和鎖定技術
            2007-08-19 09:55

            ?? 近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軟件學習到的

            久久人人爽人人爽人人爽 | 亚洲色大成网站www久久九| 怡红院日本一道日本久久 | 久久综合久久鬼色| 久久婷婷五月综合国产尤物app| 国产成人久久AV免费| 久久久久久亚洲精品不卡 | 久久夜色精品国产噜噜噜亚洲AV| 久久人妻少妇嫩草AV无码专区| 91精品久久久久久无码| 色播久久人人爽人人爽人人片AV| 久久久久免费看成人影片| 欧美日韩中文字幕久久久不卡| 综合久久国产九一剧情麻豆| 久久国产香蕉一区精品| 久久久无码人妻精品无码| 久久天天婷婷五月俺也去| 国产精品免费看久久久香蕉| 日韩AV无码久久一区二区 | 亚洲人AV永久一区二区三区久久| 久久久久AV综合网成人| 狠狠色丁香久久婷婷综合图片| 久久精品国产福利国产琪琪| 东京热TOKYO综合久久精品| 久久久久国产精品嫩草影院| 久久青青草原亚洲av无码| 亚洲国产精品久久久久婷婷老年| 无码AV中文字幕久久专区| 久久亚洲精品国产亚洲老地址| 久久毛片免费看一区二区三区| 久久91亚洲人成电影网站| 久久发布国产伦子伦精品| 青青草原精品99久久精品66| 久久精品人妻中文系列| 久久精品国产日本波多野结衣| 久久久久久久综合日本| 久久久久久噜噜精品免费直播| 香蕉久久AⅤ一区二区三区| 欧美亚洲日本久久精品| 无码任你躁久久久久久老妇App| 欧美日韩精品久久久免费观看|