青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

We do not always find visible happiness in proportion to visible virtue

夢幻白樺林

SHARE

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  14 Posts :: 58 Stories :: 62 Comments :: 0 Trackbacks

公告

常用鏈接

留言簿(5)

搜索

  •  

最新隨筆

最新評論

閱讀排行榜

最近研究怎么樣使用HOOK攔截其他應用程序的消息,于是就動手寫了一個鉤子程序來掛到最常用的通訊及時通訊工具MSN,雖然沒有什么實際意義,但作為學習研究卻能夠幫助我們理解利用HOOK是怎么樣將自己編寫的DLL注入已經存在的程序空間中的。

我們需要做的是通過我們自己編寫的應用程序去攔截別人寫好的應用程序消息,實際上這是在兩個進程之間進行的,難度就在這里,如果是同一個進程什么都好辦,只要將系統響應WINDOWS消息的處理函數修改為我們自己編寫的函數就可以,但現在不能這么做,因為兩個進程有各自的進程地址空間,理論上你沒有辦法直接去訪問別的進程的地址空間,那么怎么辦來?辦法還是很多的,這里僅僅介紹通過HOOK來達到目的。

需要攔截別的應用程序的消息,需要利用將自己編寫的DLL注入到別人的DLL地址空間中才可以達到攔截別人消息的目的。只有將我們的DLL插入到別的應用程序的地址空間中才能夠對別的應用程序進行操作,HOOK幫助我們完成了這些工作,我們只需要使用HOOK來攔截指定的消息,并提供必要的處理函數就行了。我們這里介紹攔截在MSN聊天對話框上的鼠標消息,對應的HOOK類型是WH_MOUSE。

首先我們要建立一個用來HOOK的DLL。這個DLL的建立和普通的DLL建立沒有什么具體的區別,不過我們這里提供的方法有寫不同。這里使用隱式導入DLL的方法。代碼如下:

頭文件

#pragma once
#ifndef MSNHOOK_API
#define MSNHOOK_API __declspec(dllimport)
#endif

MSNHOOK_API BOOL WINAPI SetMsnHook(DWORD dwThreadId);//安裝MSN鉤子函數
MSNHOOK_API void WINAPI GetText(int &x,int &y,char ** ptext);//安裝MSN鉤子函數
MSNHOOK_API HWND WINAPI GetMyHwnd();//安裝MSN鉤子函數

==================================================

DLL 的CPP文件

#include "stdafx.h"
#include "MSNHook.h"
#include <stdio.h>

// 下面幾句的含義是告訴編譯器將各變量放入它自己的數據共享節中

#pragma data_seg("Shared")
HHOOK g_hhook = NULL;
DWORD g_dwThreadIdMsn = 0;
POINT MouseLoc={0,0};
char text[256]={0};
HWND g_Hwnd = NULL;
#pragma data_seg()

//告訴編譯器設置共享節的訪問方式為:讀,寫,共享

#pragma comment(linker,"/section:Shared,rws")

HINSTANCE g_hinstDll = NULL;

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
g_hinstDll = (HINSTANCE)hModule;
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

LRESULT WINAPI GetMsgProc(int nCode,WPARAM wParam, LPARAM lParam);

BOOL WINAPI SetMsnHook(DWORD dwThreadId)
{
OutputDebugString("SetMsnHook");
BOOL fOK = FALSE;
if(dwThreadId != 0)
{
OutputDebugString("SetMsnHook dwThreadId != 0");
g_dwThreadIdMsn = GetCurrentThreadId();

//安裝WM_MOUSE鉤子和處理函數GetMsgProc
g_hhook = SetWindowsHookEx(WH_MOUSE,GetMsgProc,g_hinstDll,dwThreadId);
fOK = (g_hhook != NULL);
if(fOK)
{
fOK = PostThreadMessage(dwThreadId,WM_NULL,0,0);
}
else
{
fOK = UnhookWindowsHookEx(g_hhook);
g_hhook = NULL;
}
}
return(fOK);
}

LRESULT WINAPI GetMsgProc(int nCode,WPARAM wParam, LPARAM lParam)
{

char temp[20];
sprintf(temp,"%dn",nCode);
OutputDebugString("temp");
if (nCode==HC_ACTION)
{
MOUSEHOOKSTRUCT *l=(MOUSEHOOKSTRUCT *)lParam;
MouseLoc=l->pt; //送鼠標位置

//char text[256] = "";
HWND hWnd = WindowFromPoint(l->pt);
if(hWnd)
{
//GetWindowText(hWnd,text,256);
SendMessage(hWnd,WM_GETTEXT,256,(LPARAM)(LPCTSTR)text);
// strcpy(text,"123455555");
SendMessage(hWnd,WM_SETTEXT,256,(LPARAM)(LPCTSTR)text);
g_Hwnd = hWnd;
}
//SendMessage(WindowFromPoint(l->pt),WM_GETTEXT,256,(LPARAM)(LPCTSTR)psw);
}

return(CallNextHookEx(g_hhook,nCode,wParam,lParam));
}

void WINAPI GetText(int &x,int &y,char ** ptext)
{
x = MouseLoc.x;
y = MouseLoc.y;
*ptext = text;
}

HWND WINAPI GetMyHwnd()
{
return g_Hwnd;
}

上面是處理鉤子的DLL代碼,下面我們要讓這個DLL起作用還需要一個啟動部分,通過這個啟動部分我們才能讓我們的鉤子函數真正的注入到系統其他函數中。我們這里使用個對話框的程序,程序非常簡單:一個按鈕用來啟動鉤子,一個用來停止,一個TIMER用來刷新顯示,還有一個EDITBOX用來接受信息。

程序如下:

//包含DLL函數導出的頭文件
#include "MSNHook.h"

//隱式導入

#pragma comment(lib,"MSNHook.lib")

//聲明導入函數

__declspec(dllimport) BOOL WINAPI SetMsnHook(DWORD dwThreadId);
__declspec(dllimport) void WINAPI GetText(int &x,int &y,char ** ptext);
__declspec(dllimport) HWND WINAPI GetMyHwnd();//安裝MSN鉤子函數

void CTestMSNHookDlg::OnBnClickedOk()
{

//通過SPY++可以看到MSN聊天對話框窗口類是IMWindowClass,通過這個得到該窗口句柄
CWnd *pMsnWin = FindWindow(TEXT("IMWindowClass"),NULL);
if(pMsnWin == NULL) return ;

//通過窗口句柄得到對應的線程的ID
SetMsnHook(GetWindowThreadProcessId(pMsnWin->GetSafeHwnd(),NULL));
MSG msg;
GetMessage(&msg,NULL,0,0);
SetTimer(101,100,NULL);

}

void CTestMSNHookDlg::OnTimer(UINT_PTR nIDEvent)
{

//刷新消息
char * pText = NULL;
int x = 0,y = 0;
GetText(x,y,&pText);
if(x ==0 && y ==0) return ;
m_Edit.Format("%d:%d:%s",x,y,pText);
//m_Edit = pText;
UpdateData(FALSE);

HWND hWnd = GetMyHwnd();
CWnd * pWnd = CWnd::FromHandle(hWnd);
pWnd->GetWindowText(m_Edit);
CDialog::OnTimer(nIDEvent);
}

void CTestMSNHookDlg::OnBnClickedButton1()
{

//關閉
KillTimer(101);
SetMsnHook(0);
OnCancel();
}

好了,基本上就這些了。這里有個問題,我本想得到MSN用戶聊天時輸入的聊天信息,這里通過WM_GETTEXT消息的不到,如果有知道的朋友告訴一聲。

posted on 2007-02-08 20:47 colys 閱讀(369) 評論(0)  編輯 收藏 引用 所屬分類: C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲视频在线观看| 久久国产精品一区二区| 亚洲精品久久视频| 久久国产直播| 在线视频你懂得一区| 欧美大胆人体视频| 亚洲国产精品传媒在线观看| 午夜国产精品视频| 亚洲人体影院| 欧美a级一区| 在线观看日韩国产| 欧美不卡视频一区发布| 久久久久国产精品一区三寸| 国产欧美日韩伦理| 性欧美长视频| 亚洲宅男天堂在线观看无病毒| 欧美色另类天堂2015| 99热在线精品观看| 亚洲美女av在线播放| 欧美日韩成人综合天天影院| 日韩一级在线| 99在线视频精品| 欧美性久久久| 欧美一区二区三区视频在线观看 | 久久婷婷激情| 欧美岛国激情| 亚洲精品国产精品国自产观看| 欧美成人精品| 免费在线一区二区| 亚洲精品在线看| 亚洲精品一二三| 欧美无乱码久久久免费午夜一区 | 久久久久久97三级| 久久久国产成人精品| 亚洲第一级黄色片| 亚洲视频一区二区| 欧美一级午夜免费电影| 在线观看视频一区| 欧美激情亚洲另类| 国产亚洲女人久久久久毛片| 欧美激情1区2区3区| 国产精品男gay被猛男狂揉视频| 久久久精品一区二区三区| 欧美精品亚洲精品| 欧美风情在线| 亚洲一区视频在线观看视频| 一区二区冒白浆视频| 国产欧美日韩一区| 欧美~级网站不卡| 欧美日韩亚洲一区二| 久久精品免费电影| 欧美精品一区二区蜜臀亚洲| 欧美一区综合| 欧美激情一级片一区二区| 欧美一级网站| 欧美激情久久久| 久久久久在线| 国产精品久久网| 欧美成人a∨高清免费观看| 欧美精品v日韩精品v国产精品| 亚洲一区久久| 欧美不卡福利| 久久久久免费| 国产精品盗摄久久久| 欧美激情视频一区二区三区在线播放| 国产精品免费观看在线| 欧美激情一区二区| 国产一区观看| 亚洲天天影视| 日韩视频在线一区二区| 欧美一区午夜精品| 亚洲男女自偷自拍| 欧美全黄视频| 亚洲国产精品一区二区www在线| 国产日韩一区二区三区在线播放| 99国产精品| 亚洲精品一区中文| 久久影院午夜论| 久久欧美肥婆一二区| 国产美女搞久久| 亚洲电影av| 久久精品九九| 久久av一区二区三区漫画| 欧美日韩999| 亚洲欧洲日韩女同| 亚洲精品一区久久久久久| 狂野欧美一区| 欧美大色视频| 亚洲高清视频一区| 久久亚洲综合网| 美女国产一区| 精品动漫3d一区二区三区免费版| 午夜精品视频网站| 欧美综合国产| 国产真实乱偷精品视频免| 久久精品日产第一区二区| 久久综合九色综合欧美狠狠| 国产一区二区观看| 久久久久久网站| 欧美成人影音| 亚洲免费av片| 欧美性片在线观看| 亚洲一区二区视频在线观看| 午夜日韩在线| 国内精品久久久久影院 日本资源| 欧美影院一区| 久久综合九色综合欧美就去吻| 精品91视频| 欧美成人在线免费视频| 亚洲国产精品悠悠久久琪琪| 亚洲免费高清| 国产美女精品免费电影| 久久久久久久综合狠狠综合| 亚洲国产一区在线| 亚洲一区二区精品视频| 国产精品久久久久77777| 午夜精品一区二区在线观看 | 亚洲日本视频| 欧美日韩一区免费| 午夜精品视频网站| 亚洲二区在线视频| 亚洲一区网站| 极品日韩久久| 欧美激情网站在线观看| 亚洲尤物影院| 欧美不卡在线| 亚洲与欧洲av电影| 国产自产女人91一区在线观看| 蜜臀99久久精品久久久久久软件| 亚洲欧洲精品一区二区三区 | 在线看成人片| 欧美日韩色一区| 欧美亚洲尤物久久| 亚洲国产精品一区二区第一页| 亚洲专区一二三| 影音先锋成人资源站| 欧美日韩人人澡狠狠躁视频| 久久久久久久网站| 亚洲一品av免费观看| 免费欧美日韩国产三级电影| 亚洲无限av看| 亚洲高清不卡| 国产麻豆精品在线观看| 免费观看亚洲视频大全| 亚洲影视在线播放| 亚洲久久一区二区| 国产伦精品一区二区三区| 欧美成人国产va精品日本一级| 亚洲一区二区三区四区五区午夜 | 免费短视频成人日韩| 亚洲永久精品大片| 亚洲乱码国产乱码精品精可以看| 国产欧美日韩伦理| 欧美新色视频| 欧美精品观看| 久久视频在线看| 欧美中文字幕久久| 亚洲欧美卡通另类91av| 亚洲美女在线观看| 91久久国产精品91久久性色| 久久国产天堂福利天堂| 亚洲欧美国产高清| 中国亚洲黄色| 日韩一级片网址| 日韩一级免费观看| 亚洲裸体在线观看| 亚洲人成网站影音先锋播放| 伊人精品成人久久综合软件| 国产欧美一区二区三区在线看蜜臀 | 亚洲午夜视频在线| 日韩午夜电影在线观看| 亚洲国产成人在线| 国产一区二区精品久久91| 国产麻豆精品视频| 国产伦精品一区二区三区照片91 | 性亚洲最疯狂xxxx高清| 亚洲欧美福利一区二区| 翔田千里一区二区| 性欧美video另类hd性玩具| 亚洲免费中文| 欧美一区在线看| 久久久一区二区三区| 久久亚洲精品视频| 欧美1区3d| 免费久久99精品国产自| 欧美成人影音| 亚洲狼人综合| 亚洲一区二区三区免费视频| 亚洲男同1069视频| 久久国产黑丝| 免费中文字幕日韩欧美| 欧美区日韩区| 国产精品日韩欧美大师| 国产在线观看一区| 亚洲成人在线观看视频| 亚洲欧洲日产国产综合网| 一区二区三区欧美日韩| 亚洲欧美综合v| 久久久久一区二区| 亚洲国产一区视频|