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

            小默

            [zz]MFC - 星號密碼查看器原理及防范思路(轉)

            幾乎所有軟件在用戶密碼輸入框都做了手腳,使得用戶輸入的密碼顯示為星號“*”,這樣就無法使得惡意用戶直接看到密碼。但是,網(wǎng)上有很多版本的星號密碼查看器,可以還原星號為真實的密碼。我根據(jù)自己的一些想法寫了星號查看器的源代碼,并且根據(jù)其原理做了一些防范手段。使用本源代碼寫的程序可以查看到很多軟件如popo、msn、qq低版本的密碼,用戶使用VC、VB、BCB編寫的軟件并且直接使用Edit或者Text組件的話,本代碼也可以還原其真實密碼。而使用本修改手法以后的軟件,使用網(wǎng)上盛傳的passxp以及前面的查看方法均失效。好了,進入正題。

               一、星號查看器原理

                Edit或者Text組件有一個屬性為“PasswordChar”,我們一般就是設置這個屬性已實現(xiàn)把真實密碼隱藏為星號的,但它們收到EM_GETPASSWORDCHAR消息以后,會返回其PasswordChar屬性值,收到EM_SETPASSWORDCHAR消息后會修改其PasswordChar屬性值,當然就可以取消原有的“*”設置,而使其顯示真實字符,這時再向其發(fā)送WM_GETTEXT消息即可得到其真實密碼,很多星號密碼查看器都是根據(jù)這個原理寫的。關鍵代碼如下(以BCB為例):

            void __fastcall TForm1::Timer1Timer(TObject *Sender)
            {
            POINT P;
            ::GetCursorPos(&P);//捕捉鼠標屏幕位置
            //取得鼠標位置下窗口handle
            HWND HWnd = ::WindowFromPoint(P);
            //向此窗口送出"取得標題字符串"信息
            char buffer[100];

            char Char;
            Char = SendMessage (HWnd,EM_GETPASSWORDCHAR,0,0);//獲取密碼字符
            PostMessage (HWnd,EM_SETPASSWORDCHAR,0,0);//取消密碼字符
            Sleep (60);
            SendMessage (HWnd,WM_GETTEXT,255,long(buffer));獲取真實密碼
            PostMessage (HWnd,EM_SETPASSWORDCHAR,Char,0);還原密碼字符

            //顯現(xiàn)在Form1窗口的字符串對象上
            Caption = buffer;
            }

               這里用了一個計時器,每隔100毫秒調(diào)用一次上面的代碼。

               我們已經(jīng)看出來了,主要是幾個消息壞了我們的大事,如果我們能夠屏蔽這幾個消息,即可安全隱藏真實密碼。網(wǎng)上有很多屏蔽消息的方法,但都顯過于復雜,我的思路如下:

               二、防范星號密碼查看器

               我們可以從TEdit派生一個新的組件,名字為TBugEyesEdit,然后修改其消息定義。在頭文件添加代碼如下:

                public:
                    __fastcall TBugEyesEdit(TComponent* Owner);
                    void __fastcall BugEyes(TMessage &Msg);//自定義消息處理函數(shù)
                    BEGIN_MESSAGE_MAP   //消息影射
                          VCL_MESSAGE_HANDLER(EM_GETPASSWORDCHAR,TMessage,BugEyes)
                          VCL_MESSAGE_HANDLER(WM_GETTEXT,TMessage,BugEyes)
                          VCL_MESSAGE_HANDLER(EM_SETPASSWORDCHAR,TMessage,BugEyes)
                    END_MESSAGE_MAP(TEdit) //結束消息影射

               然后在其cpp文件中添加如下代碼:

            void __fastcall TBugEyesEdit::BugEyes(TMessage &Msg)
            {
            Msg.Result =0;
            }

                最后安裝這個新的組件,并添加到自己的程序中,設置其PasswordChar屬性為“*”,然后運行程序,這時星號密碼查看器就失效了,無法再看到真實密碼。

                除了上述辦法,還有一個常用的,就是利用程序消息泵來屏蔽消息,qq2005對星號密碼查看器有免疫作用,估計是做了類似處理。

                本文來源:http://old.blog.edu.cn/user1/20989/archives/2005/185727.shtml

            posted on 2009-10-22 22:23 小默 閱讀(1693) 評論(0)  編輯 收藏 引用 所屬分類: Language

            導航

            統(tǒng)計

            留言簿(13)

            隨筆分類(287)

            隨筆檔案(289)

            漏洞

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            国产成人综合久久综合| 久久精品国产精品亚洲精品| 亚洲国产成人久久综合碰碰动漫3d | 97久久国产综合精品女不卡| 久久久久久亚洲精品成人| 久久亚洲高清观看| 久久综合色老色| 久久国产精品99久久久久久老狼| 久久人人爽人爽人人爽av| 久久精品欧美日韩精品| 久久人人超碰精品CAOPOREN | 久久久久99精品成人片牛牛影视| 97精品伊人久久大香线蕉| 久久精品嫩草影院| 香蕉久久夜色精品升级完成| 国内精品久久久久久中文字幕| 亚洲欧美成人综合久久久 | 久久国产亚洲高清观看| 日批日出水久久亚洲精品tv| 大伊人青草狠狠久久| 亚洲乱码中文字幕久久孕妇黑人| 国内精品久久久久国产盗摄| 人妻无码αv中文字幕久久琪琪布| 亚洲国产成人精品无码久久久久久综合| 日本欧美久久久久免费播放网| 深夜久久AAAAA级毛片免费看| 99久久国语露脸精品国产| 久久亚洲熟女cc98cm| 四虎国产精品成人免费久久| 日本加勒比久久精品| 久久精品不卡| 久久精品国产精品亜洲毛片| 久久久久99精品成人片牛牛影视| 日本一区精品久久久久影院| 精品一区二区久久久久久久网站| 无码国内精品久久人妻| 婷婷久久香蕉五月综合加勒比| 国产精品亚洲综合久久| 久久久久se色偷偷亚洲精品av| 狠狠色丁香久久婷婷综合蜜芽五月| 亚洲精品国产第一综合99久久|