• <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.¢%

            像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開心的工作
            簡(jiǎn)單、開放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
            小議文件保護(hù)和鎖定技術(shù)
            2007-08-19 09:55

            ?? 近1年來互連網(wǎng)上的木馬越來越多,有的還刪除不掉,要切換到dos才可行,如:CNNC,3721等,實(shí)現(xiàn)技術(shù)也五花八門,但就文件不可刪除的實(shí)現(xiàn)技術(shù)可分三類:

            ?? 1 Attach file system; 這種技術(shù)和Filemon/sfilter查不多,就是掛一個(gè)filter驅(qū)動(dòng)到fs上,其他函數(shù)都是passthru下去,只處理IRP_MJ_SET_INFORMATION,當(dāng)發(fā)現(xiàn)有刪除需保護(hù)文件的IRP,就
            Irp->IoStatus.Status = STATUS_SUCCESS;????????????
            Irp->IoStatus.Information = 0;????????????
            IoCompleteRequest(Irp, IO_NO_INCREMENT);
            更本不讓Fs去處理,從而達(dá)到文件不可刪除的作用!

            有什么方法可以刪除呢?自己寫個(gè)驅(qū)動(dòng)自己填充irp包(見OSR文檔Rolling Your Own),直接發(fā)送IRP到File System Device上去就ok啦!


            ?? 2 修改file system的dispatch函數(shù)表; 首先得到Fs的DriverObject(根據(jù)驅(qū)動(dòng)名得到驅(qū)動(dòng)設(shè)備對(duì)象(ObReferenceObjectByName(IoDriverObjectType))),pDriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] = MySetInformation,然后再M(fèi)ySetInformation中再調(diào)用原來的調(diào)度函數(shù),類似于HookApi;發(fā)現(xiàn)有刪除
            需保護(hù)文件的IRP,就直接IoCompleteRequest,更本不讓原來的FsSetInformation處理!

            有什么方法可以刪除呢?自己寫個(gè)驅(qū)動(dòng)來修復(fù)Fs的dispatch函數(shù)表,讀Fs的原始文件,根據(jù)PE文件得到Fs的Entrypoint,dispatch函數(shù)表的填充都在EntryPoint后面,我們可以根據(jù)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把文件鎖定;刪除時(shí)報(bào)告“文件正在使用,禁止刪除”,具體原理自己摸索吧,反正是通過ZwCreateFile實(shí)現(xiàn)的!

            有什么方法可以刪除呢?
            ?? step1 :通過QuerySystemInformation(SystemHandleInformation)得到當(dāng)前系統(tǒng)的所有句柄信息
            ?? step2 :遍歷當(dāng)前所有進(jìn)程,根據(jù)進(jìn)程ID,得到此進(jìn)程打開的所有句柄信息
            ?? Step3 :把句柄發(fā)送給我們的驅(qū)動(dòng)程序,驅(qū)動(dòng)程序根據(jù)ObQueryNameString得到句柄的路徑信息,然后再傳給我們的應(yīng)用程序
            Step4 :如果是我們要?jiǎng)h除文件的路徑,應(yīng)用程序調(diào)用DuplicateHandle(DUPLICATE_CLOSE_SOURCE),句柄被關(guān)閉了,現(xiàn)在可以刪除文件了!
            ?? 注:QuerySystemInformation的使用說明見The Undocumented Functions,或者http://undocumented.ntinternals.net,第三種解除文件鎖定的方法是我反匯編Unlock軟件學(xué)習(xí)到的

            午夜天堂av天堂久久久| 99久久这里只精品国产免费| 色婷婷综合久久久中文字幕| 久久精品aⅴ无码中文字字幕不卡| 久久超乳爆乳中文字幕| 国产精品亚洲美女久久久| 欧美久久一级内射wwwwww.| 色欲久久久天天天综合网| 国内精品久久久久影院日本| 精品乱码久久久久久夜夜嗨| 久久久精品久久久久影院| 久久精品九九亚洲精品天堂| 亚洲精品无码久久久久AV麻豆| 久久午夜羞羞影院免费观看| 天天影视色香欲综合久久| 国产精品一区二区久久国产| 亚洲国产成人乱码精品女人久久久不卡 | 2021最新久久久视精品爱 | 久久久久一级精品亚洲国产成人综合AV区 | 久久免费看黄a级毛片| 精品久久久久久久久久久久久久久 | 一本色道久久99一综合| 精品久久久久久无码中文野结衣| 人妻精品久久无码专区精东影业 | 久久精品蜜芽亚洲国产AV| 亚洲精品成人久久久| 国产成人无码精品久久久免费| 久久天天躁狠狠躁夜夜躁2O2O| 久久国产精品无| 9191精品国产免费久久| 99久久久国产精品免费无卡顿| 国内高清久久久久久| 精品伊人久久久| 国产免费久久精品99re丫y| 人妻少妇精品久久| 国产精品欧美久久久久天天影视 | 色欲久久久天天天综合网| 婷婷伊人久久大香线蕉AV| 99精品久久久久久久婷婷| 久久SE精品一区二区| 亚洲色大成网站WWW久久九九|