qq安全原理
故事總要有緣由,那麼這個故事的緣由就是,當我以前寫了一個獲取其它進程密碼框密碼的時候(前幾篇博客中有描述),我抱著試一試的心情去試探了一下能不能得到 QQ 的密碼,當我抓到密碼框的句柄,然後輸入給程序的時候,結果令人失望,並沒有任何結果,或許這根本就是一個假的密碼框。這便激發了我的興趣,便有了這次探究。QQ 的安全密碼框果然是下了功夫的。網上搜索相關內容,才發現,以前騰訊用了韓國的技術來保證密碼的安全性,但由於涉及到驅動,造成了一部分的不穩定性,所以最後取消掉了這種方法,那麼最新的方法是如何做到密碼安全呢?這種密碼安全是否還有提升的空間呢?我決定試一試。
首先想到的辦法便是鍵盤鉤子,大家都知道,鍵盤鉤子可以監聽係統中所有的擊鍵信息,馬上編碼實現,主要調用為:
- HHOOK SetWindowsHookEx( int idHook,
- HOOKPROC lpfn,
- HINSTANCE hMod,
- DWORD dwThreadId
- );
傳入的參數是:WH_KEYBOARD
打開程序監聽,目標程序選擇了大家不太關注的QQMusic(手頭上暫時隻有這個程序),打開密碼框輸入我的密碼,結果沒有任何有用信息,為什麼呢?我們知道如果在鉤子鏈中前麵的鉤子沒有顯示調用後麵的鉤子,後麵是得不到信息的,我們能不能把自己的鉤子放到最前麵呢。有兩點需要注意,一,後安裝的鉤子會在鉤子鏈的最前麵,二,我們安裝的是普通鉤子,還有一種低級的鍵盤鉤子會在其前麵執行。那我們直接安裝低級鉤子並且盡量遲的調用不就行了麼。
程序完成後,我發現,確實可以收到鍵盤信息了,不過在收到的信息中有許多幹擾信息,基於純理論分析這一做法,可以猜測,肯定有一個定時發送模擬按鍵消息的 Timer 在執行,去掉這個 Timer,當然就沒有了幹擾信息。但事情進行的不是那麼簡單,我發現,每次我接收到的鍵盤消息並不是我真正按下去的按鍵,莫非它安裝了一個在我前麵的鉤子,改掉了按鍵信息?於是我便寫了一個程序,去分析當前係統中的鉤子的信息,結果如下:
- 0x64b012d 0xc2cbf81 QQMusic.exe
- 0x64b012d 0xc2cbf81 QQMusic.exe
- 0x64c012d 0xc2cbf81 QQMusic.exe
- 0x64c012d 0xc2cbf81 QQMusic.exe
- 0x64c012d 0xc2cbf81 QQMusic.exe
- 0x64d012d 0xc2cbf81 QQMusic.exe
- 0x64d012d 0xc2cbf81 QQMusic.exe
- 0x64d012d 0xc2cbf81 QQMusic.exe
- 0x64e012d 0xc2cbf81 QQMusic.exe
- 0x64e012d 0xc2cbf81 QQMusic.exe
- 0x64e012d 0xc2cbf81 QQMusic.exe
- 0x64f012d 0xc2cbf81 QQMusic.exe
- 0x64f012d 0xc2cbf81 QQMusic.exe
- 0x64f012d 0xc2cbf81 QQMusic.exe
- 0x650012d 0xc2cbf81 QQMusic.exe
- 0x650012d 0xc2cbf81 QQMusic.exe
- 0x650012d 0xc2cbf81 QQMusic.exe
- 0x651012d 0xc2cbf81 QQMusic.exe
- 0x651012d 0xc2cbf81 QQMusic.exe
- 0x652012d 0xc2cbf81 QQMusic.exe
- 0x652012d 0xc2cbf81 QQMusic.exe
- 0x652012d 0xc2cbf81 QQMusic.exe
- 0x652012d 0xc2cbf81 QQMusic.exe
- 0x652012d 0xc2cbf81 QQMusic.exe
- 0x652012d 0xc2cbf81 QQMusic.exe
第一列便是鉤子的句柄值,我是每隔一秒鍾掃描一次的,可以清楚的發現,值在不斷的變化,那麼很容易便可以猜想到,它肯定在不斷去設置新的鉤子來達到使其在鉤子最前端這一效果。那麼去掉這個鉤子,我們便能夠使自己的鉤子監聽到鍵盤信息了。
本文隻給出了思路,可以看出,在密碼安全這一方麵,還是做了不少工夫的,現在密碼的安全也越來越受到各個公司的重視,希望能夠以此文互相交流,使我們的密碼安全做到更好。
最後更新:2017-04-03 07:57:16
上一篇:
找不到BufferedImage這個Class的解決方法
下一篇:
java.util.concurrent包(5)——CountDownLatch使用
Samba 係列(七):在 Samba AD DC 服務器上創建共享目錄並映射到 Windows/Linux 客戶
用TensorFlow和TensorBoard從零開始構建ConvNet(CNN)
《Redis官方教程》-FAQ
android4.0.3 修改啟動動畫和開機聲音
Sql查詢原理與Select執行順序(詳細)
三草兩木微商分銷係統開發定製
小程序實現原理解析
java中自定義annotation
NLP 專題論文解讀:從 Chatbot 到 NER | PaperDaily #11
ITEXT實例學習與研究(一) 之 HELLOWORLD的實現,解決中文問題,ITEXT框架