HOOK 拦截系统托盘区消息的问题 [问题点数:150分]

Bbs1
本版专家分:0
结帖率 0%
Bbs10
本版专家分:138201
Blank
进士 2018年总版新获得的技术专家分排名前十
Blank
银牌 2019年7月 总版技术专家分月排行榜第二
2019年5月 总版技术专家分月排行榜第二
Blank
铜牌 2019年4月 总版技术专家分月排行榜第三
2019年3月 总版技术专家分月排行榜第三
Blank
红花 2019年7月 VC/MFC大版内专家分月排行榜第一
2019年6月 VC/MFC大版内专家分月排行榜第一
2019年5月 VC/MFC大版内专家分月排行榜第一
2019年4月 VC/MFC大版内专家分月排行榜第一
2019年3月 VC/MFC大版内专家分月排行榜第一
2019年1月 VC/MFC大版内专家分月排行榜第一
2018年12月 VC/MFC大版内专家分月排行榜第一
2018年11月 VC/MFC大版内专家分月排行榜第一
2018年10月 VC/MFC大版内专家分月排行榜第一
2018年9月 VC/MFC大版内专家分月排行榜第一
2018年8月 VC/MFC大版内专家分月排行榜第一
2018年5月 VC/MFC大版内专家分月排行榜第一
2018年4月 VC/MFC大版内专家分月排行榜第一
2018年3月 VC/MFC大版内专家分月排行榜第一
2018年2月 VC/MFC大版内专家分月排行榜第一
2018年1月 VC/MFC大版内专家分月排行榜第一
2017年12月 VC/MFC大版内专家分月排行榜第一
2017年11月 VC/MFC大版内专家分月排行榜第一
2017年7月 VC/MFC大版内专家分月排行榜第一
2012年7月 VC/MFC大版内专家分月排行榜第一
Delphi 系统托盘 TrayIcon(1)
TTrayIcon 的主要属性:            TrayIcon.Icon 指定托盘图标, 有几种用法: 1、设计时选择;  2、把一个 TIcon 对象给它; 3、使用当前程序图标: TrayIcon1.Icon := Application.Icon; 4、TrayIcon1.SetDefaultIcon; 这也是使用当前程序图标.   TrayIcon.Icons 与
HOOK拦截消息问题!!!
使用全局钩子<em>拦截</em>Windows<em>消息</em>,SetWindowsHookEx的第一个参数也就是<em>hook</em> type 应该选那种类型???
使用hook 拦截消息
钩子(Hook),是Windows<em>消息</em>处理机制的一个平台,用用程序可以在上面设置子程以监视指定窗口的某种<em>消息</em>,而且所监视的窗口可以是其他进程所创建的(我始终认为用<em>hook</em>去钩当前自己的进程没多大意义,去钩别的进程才比较实在)。当<em>消息</em>到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window<em>消息</em>或特定事件。   钩子实际上是一个处理<em>消息</em>的程序段,通过系统调用,把它挂入系统。
HOOK拦截消息代码
//在进程中试了一下,修改<em>消息</em>应该没<em>问题</em>(系统钩子应该也差不多,知道原理变通一下就可以了)。unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;const WM_END = 0; //在Windows
HOOK拦截关机消息
想要通过HOOK来<em>拦截</em>关机<em>消息</em>,并让弹出窗体让用户出现判断;现能捕捉到但是弹出判断窗体后无法一次吃掉关机的<em>消息</em>,怎办啊,望高手出现!rnrnrn[code=C/C++][/code]rn#include rn//#include "Winbase.h"rnrn#include "stdio.h"rn//#include "afx.h"rnrnrnHHOOK g_hMouse=NULL;rnHHOOK g_hKeyboard=NULL;rnHHOOK g_hShutDown = NULL;rnLPMSG msg;rn//HWND g_hWnd=NULL;rnrn#pragma data_seg("MySec")rnHMODULE g_hWnd=NULL;rn#pragma data_seg()rnrn#pragma comment(linker,"/section:MySec,RWS")rn//HINSTANCE g_hInst; rn//extern "C" LPCTSTR PASCAL EXPORT InsatllHook( BOOL IsInstall );rnrnvoid InstallHook(BOOL IsIstall);rnrnBOOL WINAPI DllMain(rn HMODULE hmoudle, // handle to the DLL modulern DWORD ul_reason_for_call, // reason for calling functionrn LPVOID lpvReserved // reservedrn )rnrn switch ( ul_reason_for_call )rn rn case DLL_PROCESS_ATTACH:rn g_hWnd = hmoudle;rn// InstallHook( TRUE );rn break ;rn case DLL_THREAD_DETACH:rn// InstallHook( FALSE );rn break;rn rn return TRUE;rnrnrnLRESULT WINAPI GetMsgProc( int nCode, WPARAM wParam, LPARAM lParam ) rnrn PCWPSTRUCT pcw=(PCWPSTRUCT) lParam; rnrn if ( pcw->message == WM_QUERYENDSESSION )rn rn// pcw->message = 0;rn// return 0;rn// HWND hHandle;rn// hHandle = FindWindow( NULL, "提示");rn// rn// if ( hHandle == NULL)rn// rn if ( MessageBox ( NULL, "请确认是否从内网关机", "提示", MB_OK | MB_OKCANCEL ) == IDOK ) [color=#FF0000]//到这里的时候弹出了这个窗体,但等会儿会出现应用程序无效应的系统框,该怎么处理;[/color] rn pcw->message = 1;rn return 1;rn rn elsern rn pcw->message = 0;rn return 0;rn rn rn return CallNextHookEx( g_hShutDown, nCode, wParam, lParam);rnrnrnvoid InstallHook(BOOL IsIstall)rn rn int Ret;rn if ( TRUE == IsIstall)rn rn g_hShutDown = SetWindowsHookEx ( WH_CALLWNDPROC, (HOOKPROC)GetMsgProc, g_hWnd, 0 );rn rn if ( NULL == g_hShutDown )rn rn MessageBox (NULL, "NULL", "000",MB_OK);rn rn rn elsern rn Ret = Un<em>hook</em>WindowsHookEx( g_hShutDown );rn rn rnrnrn
Hook技术之消息拦截(Windows Hook )
首先来说说windows <em>消息</em>Hook,这个<em>消息</em>Hook就是我们常用的通过SetWindowsHookEx来设置一个Hook,这个函数通过将这个Hook插入到Hook链的最前端,而发送给我们已经Hook了的窗口的<em>消息</em>首先会被我们的Hook函数截获,也就是我们优先于窗体捕获到<em>消息</em>。 Windows Message Hook 可以实现全局Hook和局部Hook。局部Hook是在自身进程中创建一个Ho
hook消息拦截的区别联系
能不能给我说说详细的区别啊?rn什么时候用<em>hook</em>什么时候用<em>消息</em><em>拦截</em>?rn谢谢了
HooK 拦截关机消息 WM_QUERYENDSESSION Then
我写了一个DLL,注入到了 Explorer.exe.rnrn我想用这个DLL<em>拦截</em>关机<em>消息</em>.因为我要在用户关机的时候我需要2秒时间做一些动作.然后在关机.rnrnHook 怎么<em>拦截</em>,麻烦给你代码... 还是DLL注入的!
系统托盘问题
当在<em>系统托盘</em>区加入图标以后,怎样用鼠标的左右键按键打开窗口或弹出菜单?如若单击左键则打开窗口,单击右键则弹出菜单。多谢指教!!!
系统托盘区右键菜单问题
在任务栏托盘区,添加程序的右键弹出菜单rn HMENU hMenu=LoadMenu(AfxGetResourceHandle(),MAKEINTRESOURCE(IDR_POP));rn HMENU hSub=GetSubMenu(hMenu,0);rn SetForegroundWindow();rn POINT pt;rn GetCursorPos(&pt);rn DWORD dwID=TrackPopupMenu(hSub,TPM_RIGHTALIGN|TPM_BOTTOMALIGN|TPM_RETURNCMD,pt.x,pt.y,0,m_hWnd,0);rn可是弹出的并不是我在IDR_POP中设计的菜单,而是其最大化时的第一列菜单也就是IDR_MAINFRAME的菜单项
系统托盘
PowerBuilder9<em>系统托盘</em>区源代码
如何Hook系统托盘部分的鼠标双击消息
如题,稍微讲一下或给个例子都行,多谢rn最好不要用全局鼠标钩子。。。
系统托盘问题(高分求解)
我要作一程序,功能是强制终结另一在托盘区有图标的程序进程,用到TerminateProcess。而且要循环执行,<em>问题</em>是当那个程序终结后,托盘区的图标仍然留在上面,只有把鼠标放上面才能消失。但如何用编码来让那个图标消失?
怎么用HOOK拦截WM_CTLCOLOR消息呀?
我用了好几种HOOK都没能<em>拦截</em>到,到底怎么做?
为什么HOOK拦截不到WM_COPYDATA消息
如题~~rnrn其它<em>消息</em>都可以<em>拦截</em>到,但是WM_COPYDATA<em>消息</em>却不行~rnrnwhy?
拦截窗体消息的钩子(hook)(50分)
我用vb 控制别的程序,需要<em>拦截</em>窗体的<em>消息</em>,比如按钮按下的<em>消息</em>,
简单全局HOOK拦截大部分键盘消息
前言:学习HOOK中,万一老师讲解HOOK入门教程:http://www.cnblogs.com/del/category/124150.html http://www.cnblogs.com/del/category/124150.html正题:全局HOOK<em>拦截</em>大部分键盘<em>消息</em>,Ctrl+alt+del 同Num Lock 目前测试无法截获。写全局Hook基本步骤:因为为全局Hook,要用到dl...
关于Hook拦截不到WM_WM_KILLFOCUS消息
LRESULT CALLBACK GetMsgProc( int code, // <em>hook</em> codern WPARAM wParam, // current-process flag rn LPARAM lParam // message datarn)rnrnSetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,GetModuleHandle("HookDll"),NULL);rnrn现在钩子可以设置成功,也进入了GetMsgProc函数。,但就是<em>拦截</em>不到指定的<em>消息</em>, rn大概就是这些,具体代码如下:rnrndll def文件:rn[code=C/C++]LIBRARY HookDllrnEXPORTSrnSetHook[/code]rnrnrnrndll cpp文件:rn[code=C/C++]#include rn#pragma data_seg("MyHookEx")rnHHOOK hhgm=NULL;rn#pragma data_seg()rnrn#pragma comment(linker,"/section:MyHookEx,RWS")rnLRESULT CALLBACK GetMsgProc( int code, // <em>hook</em> codern WPARAM wParam, // current-process flag rn LPARAM lParam // message datarn)rnrn if(code==HC_ACTION)rn rn MSG *msg = (MSG*)lParam;rn if(code == HCBT_ACTIVATE)rn rn if(msg->message==WM_KILLFOCUS)rn rn MessageBox(0,0,0,0);rn rn rn return 0;rn else if(code,WS_CHILDWINDOW+WS_VISIBLE,0,0,100,50,hwnd,NULL,hInstance,NULL);rn MSG msg;rn while(GetMessage(&msg,NULL,0,0))rn rn TranslateMessage(&msg);rn DispatchMessage(&msg);rn rn return (int) msg.wParam;rnrnLRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)rnrn switch(message)rn rn case WM_CREATE:rn break;rn case WM_COMMAND:rn if((HWND)lParam==hb)rn rn SetHook();rn rn break;rn case WM_DESTROY:rn PostQuitMessage(0);rn break;rn default:rn return DefWindowProc(hWnd,message,wParam,lParam);rn break;rn rn return 0;rnrnrn[/code]rnrn
系统托盘消息
package com.msg;     import java.applet.Applet; import java.applet.AudioClip; import java.awt.AWTException; import java.awt.Image; i
如何 HOOK 系统托盘信息?
如何 <em>hook</em> 到系统的托盘信息? 比如说什么时候哪个程序向<em>系统托盘</em>中添加了一个图标或删除了一个图标?
-=-=-=- 如何 hook 系统托盘信息 -=-=-=-
我想实现的功能是:获知<em>系统托盘</em>中添加了或者删除了一个图标,该如何做?rnrn试过的方法有:rn1. 安装一个 WH_CALLWNDPROC 钩子,获取<em>系统托盘</em>窗口中的 TB_INSERTBUTTON,TB_DELETEBUTTON 等<em>消息</em>,发现只要处理一个 TB_DELETEBUTTON <em>消息</em>,则后面所有的 TB_INSERTBUTTON,TB_DELETEBUTTON 等<em>消息</em>都不能再次获取,TB_INSERTBUTTON 是正常的。钩子函数如下:rn[code=C/C++]rnLRESULT CALLBACK <em>hook</em>_proc( UINT nCode, WPARAM wParam, LPARAM lParam )rnrn CWPSTRUCT *pMsg = (CWPSTRUCT*)lParam;rnrn if( nCode < 0 )rn return CallNextHookEx( g_hHook, nCode, wParam, lParam );rnrn if( HC_ACTION == nCode ) rn if( g_hWndTray == pMsg->hwnd ) rn switch( pMsg->message ) rn case TB_ADDBUTTONS:rn PostMessage( g_hWnd, MY_TB_ADDBUTTONS, 0, 0 );rn break;rn case TB_INSERTBUTTON:rn PostMessage( g_hWnd, MY_TB_INSERTBUTTON, 0, 0 );rn break;rn case TB_DELETEBUTTON:rn PostMessage( g_hWnd, MY_TB_DELETEBUTTON, 0, 0 );rn break;rn default:rn break;rn rn CallNextHookEx( g_hHook, nCode, wParam, lParam );rn return 0;rn rn rnrn return CallNextHookEx( g_hHook, nCode, wParam, lParam );rnrn[/code]
读取系统托盘
现在的软件很多都使用了<em>系统托盘</em>区来放置图标,而隐藏了窗口。通常是在托盘区的图标上点击时显示出窗口,本文介绍的方法可以为你窗口的显示增加动画效果到达美化界面的目的。 准备工作1熟悉一个API函数DrawAnimatedRects,这个函数可以在你指定的两个矩形间以动画的效果画出一个移动的窗口,一个例子就是窗口在最大化/最小化时的动画效果,函数原型如下:BOOL WINAPI DrawAnimat
修改系统托盘区宽度
varrn Form1: TForm1;rn hSysTab,hTray,htime:Hwnd;rnimplementationrnrnrn$R *.DFMrnrnprocedure TForm1.GetHandles;rnbeginrnhSysTab:=FindWindow('Shell_TrayWnd', nil);rn hSysTab:=FindWindowEx(hSysTab, 0, 'ReBarWindow32', nil);rnrn hTray:=FindWindow('Shell_TrayWnd', nil);rn hTray:=FindWindowEx(hTray, 0, 'TrayNotifyWnd', nil);rnrn hTime:=FindWindow('Shell_TrayWnd', nil);rn hTime:=FindWindowEx(hTime, 0, 'TrayNotifyWnd', nil);rn hTime:=FindWindowEx(hTime, 0, 'TrayClockWClass', nil);rnrnrnprocedure TForm1.Button1Click(Sender: TObject);rnbeginrnrn GetHandles;rn SetWindowPos(hSysTab, 0, 0, 0, 794, 22, SWP_NOMOVE);rn SetWindowPos(hTray, 0,790, 0, 300, 22, SWP_SHOWWINDOW);rn SetWindowPos(hTime, 0, 0, 0, 102, 20, SWP_NOMOVE);rnend;rnrn上面的代码可以实现调整宽度,但是系统闪一下,又会恢复原来的宽度。rnrn这该怎么做呀.(让调整后不再回去).
hook ... 消息问题(message)
我用钩子HOOK了全局SendMessageA 和 SendMessageW函数,调用过程保存在某个TXT文件中.rnrn大约全是这样的记录rnrnSendMessageA : Handle : 131470 Msg : 1031rnSendMessageA : Handle : 131470 Msg : 1031rnSendMessageA : Handle : 131470 Msg : 1031rnSendMessageA : Handle : 131470 Msg : 1031rnSendMessageA : Handle : 2753324 Msg : 4868rnSendMessageA : Handle : 2753324 Msg : 4869rnSendMessageA : Handle : 2753324 Msg : 4868rnSendMessageA : Handle : 2753324 Msg : 4869rnSendMessageA : Handle : 2753324 Msg : 4868rnrn代码是这样的rnrnfunction SendMessageACallBack(h:HWND;msg:UINT;wParam:WPARAM;lParam:LPARAM):LRESULT;stdcall;rnbeginrn Log('SendMessageA : Handle : ' + IntToStr(h) + ' Msg : ' + IntTostr(msg) );rn result:=SendMessageANext(h,msg,wParam,lParam);rn RenewHook(@SendMessageANext);rnend;rnrnrn<em>问题</em>是我想做某个单独<em>消息</em>的<em>hook</em>,比如WM_KEYDOWN,如下代码却一条SENDMESSAGE都截取不了rnrn if (GetKeyState($c0)>) and (msg = messages.WM_KEYDOWN) thenrn SaveLog ....rn end;rnrn可是没成功,如何将将msg和messages里定义的某个<em>消息</em>比较?
关于拦截消息问题
是这样的,我有个想法,就是<em>拦截</em>某个应用程序的保存<em>消息</em>,直接将它保存到数据库中,而不是本地的文件,比如autocad的<em>消息</em>,谢谢了
一个hook拦截消息框的问题
怎么用<em>hook</em><em>拦截</em>网络用户通过命令行输入 net send user "message" 发过来的<em>消息</em>,我不想让它蹦出<em>消息</em>框。
拦截键盘消息问题
我写了一个键盘钩子<em>拦截</em>键盘<em>消息</em>,平时运行正常,但是当按了ctrl+alt+del后,就无法再<em>拦截</em>到键盘<em>消息</em>了,请高手指点一下!
进程消息拦截问题
在NT系统中,用资源管理器杀死一个进程是发一个什么<em>消息</em>给该进程,rn在进程中是否可以屏蔽该<em>消息</em>的响应?
同时拦截消息问题
能不能同时<em>拦截</em> WM_GETMINMAXINFO WM_SYSCOMMAND 就是我想在最大化的时候修改WM_GETMINMAXINFO 而不是他俩单独<em>拦截</em>。。rn就像 if WM_GETMINMAXINFO + WM_SYSCOMMAND then ... (只是打个比方...)
WinSetHook拦截消息问题
做一个程序,想<em>拦截</em>所有键盘<em>消息</em>,用WinSetHook可以在98下<em>拦截</em>,可是在NT下却只能<em>拦截</em>自己这个进程的<em>消息</em>,怎么解决啊?2K下没有试过,估计和NT下一样。rn请告知在NT或2K下<em>拦截</em>键盘<em>消息</em>的手段。
qq的消息拦截问题
现在有很多工具可以<em>拦截</em>msn的<em>消息</em>,用到Wincap,但发现QQ并不能<em>拦截</em>?我是没找到软件,各位谁知道,透漏一下 ,呵呵rnrn是做不了吗?rnrn注意,很多查看保存在本地的QQ聊天记录的工具不在这个帖子的讨论范围rnrn
关于拦截消息问题
我想<em>拦截</em>键盘<em>消息</em>,于是做了一个线程函数rnUINT WorkThread(LPVOID pParam)rn rn MSG msg;rnHWND m_hwnd=::AfxGetMainWnd()->m_hWnd;rn while(1)rn rn // 检查是否按下 Escape 键rn rn if (PeekMessage(&msg,::AfxGetMainWnd()->m_hWnd,WM_KEYFIRST,WM_KEYLAST, PM_REMOVE)) rn rn if (msg.message == WM_KEYDOWN&& msg.wParam ==VK_SPACE)//如果按下ESc就rn rn AfxMessageBox("ddd");rn rn rn ::Sleep(1000);rn rn rn rn rn return 0;rnrnrnrnrnrn为什么<em>拦截</em>不到呢?用peekmessage到底行不行?rnrnrn
▲▲▲关于消息拦截问题!!▲▲▲
在Dialog中有一个CGridCtrl,我想在鼠标双击CGridCtrl的时,在Grid控件前先接收到鼠标双击<em>消息</em>?我用如下代码为什么不行?rnBOOL CViewRptSrc::PreTranslateMessage(MSG* pMsg) rnrn // TODO: Add your specialized code here and/or call the base classrn if (pMsg->hwnd == m_Grid.GetSafeHwnd())rn rn if (pMsg->message == NM_DBLCLK )rn MessageBox("1111");rn rn return CFormView::PreTranslateMessage(pMsg);rnrn3ks
关于拦截编辑框中EM_REPLACESEL消息的HOOK问题
现在,有一个程序中有一个EDIT编辑框,而我想自己编一个程序,利用Hook函数<em>拦截</em>该Edit编辑框中的EM_REPLACESEL<em>消息</em>并获取该<em>消息</em>中的值。程序用Delphi编写。rnrnrn首先安装HookrnSetWindowsHookEx(int idHook,HOOKPROC lpfn, INSTANCE hMod,DWORD dwThreadId)rn  这里,idHook应该给什么<em>消息</em>类型rnrn然后,写钩子子程rnHookProc(int nCode ,WPARAM wParam,LPARAM lParam)rn  这里的代码中如何<em>拦截</em>EM_REPLACESEL<em>消息</em>和获取EM_REPLACESEL中的值rnrn该程序中使用的钩子是全局的钩子,然后<em>拦截</em>指定的程序中的<em>消息</em>rnrn我在网上找过很多关于钩子的资料,但全部都是关于键盘和鼠标的例子,本人刚学Delphi不久,因突发奇想,想把单位中的一个设备的终端程序修改,但又不清楚该程序COM口的协议,所以只能<em>拦截</em>该程序中编辑框返回的信息,而我用SPY查看过,该程序中每次有返回信息时,都是出现EM_REPLACESEL<em>消息</em>,如果有人知道,可否给我一点提示,主要的是HookProc中的代码该如果写,谢谢大家了。
消息HOOK
HOOK <em>消息</em>HOOK SetWindowsHookEx
HOOK消息
我想向系统中的其他进程传送一些字符串和结构参数,所以准备向目标进程注入一个DLL,在DLL中HOOK Message<em>消息</em>,向目标进程发送WM_COPYDATA<em>消息</em>,在目标进程中把Message的参数字符串读出来rnrn但是在实施过程中遇到了一些<em>问题</em>,WH_CALLWNDPROC可以<em>拦截</em>到SendMessage的<em>消息</em>,但是却<em>拦截</em>不到WM_COPYDATA?rnExitStr:='我是字符串';rnSendMessage(hwd,WM_COPYDATA,10882,LPARAM(ExitStr)); //这个HOOK<em>拦截</em>不到rnSendMessage(hwd,10881,10882,LPARAM(ExitStr)); //这个可以<em>拦截</em>到rn
消息Hook
  基本概念钩子(Hook),是Windows<em>消息</em>处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种<em>消息</em>,而且所监视的窗口可以是其他进程所创建的。当<em>消息</em>到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window<em>消息</em>或特定事件。钩子实际上是一个处理<em>消息</em>的程序段,通过系统调用,把它挂入系统。每当特定的<em>消息</em>发出,在没有到达目的窗口前,钩子程序就
拦截消息
我能在网页中 <em>拦截</em>下 用户按下了 极小化按扭这个<em>消息</em>吗?rn多谢?rn
拦截消息
怎么样<em>拦截</em>击右键拖动的<em>消息</em>呢?rn
消息拦截
怎么样<em>拦截</em>击右键拖动的<em>消息</em>呢?
如何拦截键盘输入(HOOK)
Option ExplicitDeclare Function SetWindowsHookEx Lib "user32" Alias _"SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, _ByVal hmod As Long, ByVal dwThreadId As Long) As LongDeclare Functi
易语言hook拦截数据
易语言<em>hook</em><em>拦截</em>数据易语言<em>hook</em><em>拦截</em>数据易语言<em>hook</em><em>拦截</em>数据
API的HOOK拦截
API的HOOK<em>拦截</em>实用型
用HOOK拦截系统消息
我在一个DLL中用:rn h<em>hook</em>=SetWindowsHookEx(WH_GETMESSAGE,HookProc,g_hinstDll,0);rn 设置了一个HOOK,但这个HOOK只能拦到主线程的<em>消息</em>,如何<em>拦截</em>系统范围的<em>消息</em>呢?
Hook API拦截网络数据包?
最近遇到一个<em>问题</em>,我们公司的一个对手,利用他们的软件修改了网络数据包如rn[url=http://www.soso.com/q?ie=utf-8&cid=union.s.wh&unc=m400284_8103&w=IT%E7%94%B7%E5%86%99%E4%B8%87%E5%AD%97%E7%BD%91%E5%B8%96%E5%90%90%E6%A7%BD][/url]这条http请求,本来这是正确的,结果在发送的时候被修改了,rn[url=http://www.soso.com/q?ie=utf-8&cid=union.s.wh&unc=h500284_8103&w=IT%E7%94%B7%E5%86%99%E4%B8%87%E5%AD%97%E7%BD%91%E5%B8%96%E5%90%90%E6%A7%BD][/url]因为此unc字段是根据每个用户的点击数的统计,被修改后,我们的用户就没有记录了,点击数量也会记到修改的ID上,对我们造成严重影响。rn最近开始研究这个<em>问题</em>,想到了<em>hook</em> api来解决,<em>hook</em> send <em>拦截</em>网络数据包,检查发送的数据是否正确,如果不正确就修改回来,但是经过测试后发现,<em>hook</em> send 无法<em>拦截</em>到被修改的数据包,同时也试了sendto,WASsend,都不行。rn后来在论坛里看到可以通过<em>hook</em> NtDeviceIoControlFile来进行数据<em>拦截</em>,[url=http://bbs.pediy.com/showthread.php?t=81204 ][/url]这个号称是应用层最底层的抓包了,然后把这个也试了一下,还是无法<em>拦截</em>到网络数据包,这个可以<em>拦截</em>到异步的数据包。rn这两种方法我都是通过远程注入的方式,注入到IE进程,进行数据包<em>拦截</em>。rn在测试的时候发现通过wireshark抓包可以看到被修改的数据包rn[code=HTML]GET /q?ie=utf-8&cid=union.s.wh&unc=h500854_s1_a2&w=%E5%87%916%E5%85%83%E4%B8%AD500%E4%B8%87 HTTP/1.1\r\nrnAccept-Language:zh-cn\r\nrnAccept-Encoding:gzip,deflate\r\nrnUser-Agent:Mozilla/4.0 (compatible;MSIE 7.0;Windows NT 5.1;Trident/4.0)\r\nrnHost:www.soso.com\r\nrnConnection:Keep-Alive\r\nrn[truncated] Cookie:suid=2599556110;pgv_pvid=3408397397;pgv_flv=10.0;uin_cookie=317606359;euin_cookie=26372ABF290DAE24A0BF28765FB1A794414D5A3851F5C529;cid=union.s.wh;pgv_info=pgvReferrer=&ssid=s4201218218;ss_cidf=1;tjz_1_uid=909117214442021\r\n(这是wireshark抓到的包)rnrnGET /q?ie=utf-8&cid=union.s.wh&unc=m400284_8103&w=%E4%B8%AD%E7%9F%B3%E5%8C%96%E7%82%BC%E6%B2%B9%E5%8E%82%E7%88%86%E7%82%B8 HTTP/1.1 rnAccept: */* rnAccept-Language: zh-cn rnAccept-Encoding: gzip, deflate rnUser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0) rnHost: www.soso.com rnConnection: Keep-Alive rnCookie: suid=2599556110; pgv_pvid=3408397397; pgv_flv=10.0; [/code](我自己写的程序抓的包)rn不知道大家有没有什么好办法,相互讨论一下,谢谢各位了!
hook拦截send()
我希望做一个全局的钩子,能够<em>拦截</em>到Winsocket的send()的数据。我是这样做的,在一个应用程序中注入一个全局的(DLL)的钩子:rn _declspec(dllimport) void SetHook(HWND hWnd);rn SetHook(this->m_hWnd);rn然后在钩子里面对WH_GETMESSAGE<em>消息</em>进行<em>拦截</em>。如下:rnSetWindowsHookEx(WH_GETMESSAGE,GetMsgProc,::GetModuleHandle("Hook"),0);rnrn然后<em>问题</em>就来了,我现在怎么通过我的这个GetMsgProc回调函数对send()的<em>消息</em>进行<em>拦截</em>呢?rn 我先进行了:rn hInstanceWinsock = LoadLibrary("wsock32.dll");rn pfSend = GetProcAddress(hInstanceWinsock,"send");rn来获取send函数的入口地址。之后,我就真的不知道该如何让下手了,应该要进行汇编和内存的访问属性进行修改,请问有什么高人,可以给我说说, 不甚感激。。。只要解决了<em>问题</em>,我一定再加分的。 rnrnrn
一个拦截socket 的hook
截取socket的<em>hook</em>源码.实现了截取所有windows的网络数据包。仅供学习参考
关于HOOK拦截
我写了个全局HOOK ,能够<em>拦截</em>击键的最原始信息,意思就是说即便输入法状态发生改变,譬如换成智能abc,也只能<em>拦截</em>击键的字符,而无法获得经过输入法处理后的信息,我现在想<em>拦截</em>经过输入法处理后的信息,我该怎么做?请高手不吝赐教!
拦截api hook
汇编语言,<em>拦截</em> API 函数,几乎能<em>拦截</em> windows xp 任何函数。
怎样用hook拦截系统消息
我想对 WM_POWERBROADCAST,这个系统<em>消息</em>的PBT_APMPOWERSTATUSCHANGE 事件进行<em>消息</em><em>拦截</em>,并不想让其他的程序和系统收到这<em>消息</em>,能做得到么?rnrn如果可以请描述一下过程,有代码更好了!rn如果不可以,能否说明一下理由!rnrn多谢多谢!!!rn
在线等!请问如何拦截系统托盘中的图标的消息
同上,我要<em>拦截</em>的是一个BCB程序的<em>系统托盘</em>图标<em>消息</em>,用钩子怎么也不行,请问有谁知道给怎么办吗?谢谢
关于CRichEditView类及系统托盘区编程的问题
各位大侠:rn 我有一个SDI程序,是基于CRichEditView类,我想禁止用户在视图中的一切输入,禁止右键菜单功能,并隐藏视图光标,用户只能使用系统快捷键(Ctrl+C)实现"复制"rn文字的功能,而当用户按下系统快捷键(Ctrl+V)时,由我指定的函数执行此项功能.rnrn 另外一个<em>问题</em>是如何实现改变CRichEditView背景颜色,我参考了MSDN中的改变rn视图背景颜色的例子,只能在CView类中改变背景颜色,而在CRichEditView类中显示rn不正常,当我把代码放入OnPaint()函数时可以改变背景颜色,可是视图中的文字却rn不能正常显示出来(事实上文字的确在视图中存在).请问各位如何能解决?附带说一说,如果在基于CRichEditView类的SDI程序中用位图作为背景.rnrn 还有一个<em>问题</em>,是关于<em>系统托盘</em>区编程的<em>问题</em>,我想实现托盘图标滚动提示,多行rn提示,及单行提示时,能在提示中显示一个箭头,以在提示文本过长时,能让用户单击提示,以显示后续的提示.(如果提示中能放入位图,哪就更加好了).rn 如何能在<em>系统托盘</em>区实现像window98开始菜单的右键菜单.(有菜单图标及竖写文字).rn 唉,提了这么多<em>问题</em>,希望各位大侠别怪我烦,我还是一个菜鸟呀!rn 希望各位大侠能尽快回复,本人急于想知道答案,多谢了!rnrn
关于系统托盘消息显示。
想在<em>系统托盘</em>上做个<em>消息</em>显示。rn调用的是别人的做的CSystemTray。rn应该是网上比较通用的<em>系统托盘</em>开源库了。rn显示<em>消息</em>是这个函数吧。rn[code=C/C++]rnBOOL CSystemTray::ShowBalloon(LPCTSTR szText,rn LPCTSTR szTitle /*=NULL*/,rn DWORD dwIcon /*=NIIF_NONE*/,rn UINT uTimeout /*=10*/ )rnrn#ifndef SYSTEMTRAY_USEW2Krn return FALSE;rn#elsern // Bail out if we're not on Win 2K.rn if (!m_bWin2K)rn return FALSE;rnrn // Verify input parameters.rnrn // The balloon tooltip text can be up to 255 chars long.rn ASSERT(AfxIsValidString(szText));rn ASSERT(lstrlen(szText) < 256);rnrn // The balloon title text can be up to 63 chars long.rn if (szTitle)rn rn ASSERT(AfxIsValidString( szTitle));rn ASSERT(lstrlen(szTitle) < 64);rn rnrn // dwBalloonIcon must be valid.rn ASSERT(NIIF_NONE == dwIcon || NIIF_INFO == dwIcon ||rn NIIF_WARNING == dwIcon || NIIF_ERROR == dwIcon);rnrn // The timeout must be between 10 and 30 seconds.rn ASSERT(uTimeout >= 10 && uTimeout , NIIF_INFO, 20);rn[/code]rnrn我跟了下。rn返回是1.rn为什么托盘不显示<em>消息</em>呢。rn还是我对函数理解有错。rnrn大家帮帮忙。
怎样实现系统托盘消息自动弹出那种效果!急
各位大虾,我想做一个程序,平时是缩在<em>系统托盘</em>区的,当接收到<em>消息</em>的时候从<em>系统托盘</em>区向上拉出一个窗口,怎么说呢,就像msn messager 有好友上线一样,不知用什么方法可以实现,我很急请多多指教,如果有范例的代码可否让俺参考参考,感激万分!!
像QQ一样,一有消息系统托盘区一闪一闪的,如何做的?
像QQ一样,一有<em>消息</em>,<em>系统托盘</em>区一闪一闪的,如何做的?我只知静态图标的...
怎样在系统托盘区动态显示提示信息?
window的自动更新功能会在托盘区提示“现在可以安装新的程序了”,类似于这样的功能。rn是怎样实现的?rn
Windows2000系统托盘区为16色!
Windows2000<em>系统托盘</em>区为16色!才装的2000系统,正确安装了显卡驱动,并且桌面为1024*768*32位真彩。但<em>系统托盘</em>的图标却只有16色,请高人指点!
HOOK高手,我想用HOOK拦截一个窗口中输入汉字的消息,请问需拦截什么消息?
HOOK高手,我想用HOOK<em>拦截</em>一个窗口中输入汉字的<em>消息</em>,请问需<em>拦截</em>什么<em>消息</em>?
一个关于Hook消息问题
我在写一个控件:rn需要监控一个文本框的KeyDown事件,当这个文本框有键按下时,控件就根据文本框当前的内容发生相应的动作。rnrn我是用Hook函数实现的:rn在控件的生成函数中安置了Hook:rnrnhMsgHook = SetWindowsHookEx(WH_GETMESSAGE, (HOOKPROC)GetMsgProc, NULL, GetCurrentThreadId() );rnrn然后再重写了GetMsgProc函数:rnLRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam )rnrn LRESULT lReturn=0;rn MSG* cwMessage;rn cwMessage=(MSG *)lParam;rn if(cwMessage->hwnd==hRelaEdit && cwMessage->message == WM_KEYDOWN)//如果是在那个RelaEdit文本框中发生的KeyDown事件的话rn CallMyProc(); //处理这件事情的函数rnrnrn程序可以运行,但有一个<em>问题</em>:rnCallMyProc()函数中需要去读那个文本框的当前Text值,但由于处理KeyDown的CallMyProc函数发生在文本框接收到那个按下键值之前,这样就造成了一个滞后的<em>问题</em>了。rn举例说明:rn如文本框中已有字符“ab”,再在文本框中按下“c”键后,系统的处理过程是:rn判断文本框中有键按下,发生KeyDown<em>消息</em>,而且这个<em>消息</em>的Handle是指定的文本框,于是就执行CallMyProc()函数。rnCallMyProc()函数执行时,先读文本框的值,注意:::这时按下“c”键的<em>消息</em>还未传到文本框来,因此文本框的文本仍然是“ab”:::::而我所希望的是按“abc”来处理。rnrn也就是,KeyDown<em>消息</em>是CallMyProc先处理,文本框后处理,于是,我的<em>问题</em>就是:rnrn如何让文本框先接收到这个KeyDown<em>消息</em>,再交给CallMyProc来处理。
关于hook mouse消息问题
我有一个<em>问题</em>,我在做一个能用鼠标在屏幕上绘图的工具。原理就是希望截获鼠标<em>消息</em>,在desktop上绘制,并不往相应的应用程序转发。rn用<em>hook</em>函数,<em>hook</em> WH_MOUSE,但是我发现,如果鼠标从屏幕上的某个应用程序的client area开始点击绘制,rn那么只能相应在这个应用程序的client区域进行绘制。无法超出绘制。rn而从desktop的上面就可以在程序的任何地方绘制。而且如果点击某个应用程序的title bar,无法<em>hook</em>住此时down的鼠标<em>消息</em>。rn我不知道有什么地方用错了<em>hook</em>函数,还是系统有什么特殊处理。没有什么思路。谢谢你们能帮助我!
HOOK消息,并修改的问题!
if(((DWORD)lParam&0x40000000) && (HC_ACTION==nCode))rnrnswitch(wParam)rnrncase 'Z':rnrnkeybd_event(0x48,MapVirtualKey(0x48,0),0,0);rnkeybd_event(0x48,MapVirtualKey(0x48,0),KEYEVENTF_KEYUP,0);rnbreak;rnrncase VK_TAB:rnrnkeybd_event(0x61,MapVirtualKey(0x61,0),0,0);rnkeybd_event(0x61,MapVirtualKey(0x61,0),KEYEVENTF_KEYUP,0);rnbreak;rnrnrnLRESULT RetVal = CallNextHookEx(hkb,nCode,wParam,lParam);rnreturn RetVal;rn原代码是这样的,当我按Z键的时候,先是输入了一个Z然后又输入了一个Hrn我怎么样让他按Z只输入H!rn那个高手指点一下!rn
PostMessage的消息hook问题--WM_CLOSE
1:目的:因为公司禁用了ocs的聊天<em>消息</em>保存,想自己写一个程序来保存聊天记录。(ps:ocs是一种类似msn等IM的通信工具)rn2:原理:截获聊天窗口被关闭的<em>消息</em>,并保存窗口的聊天记录(模拟按键发送 ctrl+A ctrl+c,因为程序本身的原因,WM_GETTEXT不能使用,只能出此下策)rn3:HOOK类型WH_CALLWNDPROC,主要code如下:rn[code=C/C++]rn#pragma data_seg("Shared") rnHHOOK hHook=NULL;rnHINSTANCE hModule; //钩子函数所在模块的句柄rn#pragma data_seg()rn#pragma comment(linker, "/section:Shared,rws") rnrn...rnhHook = SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)HookProc, hModule, 0);rn...rnrn//钩子回调函数rnLRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)rnrn pCwp = (CWPSTRUCT *)lParam; rn rn if (nCode < 0)rn return CallNextHookEx(hHook,nCode,wParam,lParam); rnrn if (pCwp && (WM_CLOSE == pCwp->message)rn rn if (...) //这里根据窗口类名判断当前的<em>消息</em>是否是发给我需要的窗口的。窗口类名可以用spy++看到rn rn ...//do somethingrn rn rnrn return CallNextHookEx(hHook,nCode,wParam,lParam);rnrn[/code]rnrn4:<em>问题</em>:当使用鼠标点击聊天窗口的右上角的关闭和使用快捷键alt+F4进行窗口关闭的时候,可以正常截获WM_CLOSE<em>消息</em>,但是当按键盘esc键退出窗口的时候不能截获WM_CLOSE<em>消息</em>。使用spy++分析,发现按esc键的时候WM_CLOSE是由PostMessage发的,而点击窗口关闭的时候WM_CLOSE是由GetMessage发出的。rn5:求助:请问各位大牛怎么才能截获按esc键而触发的WM_CLOSE,或者还有什么其他好的方式达到我的目的,非常感谢。
问个键盘消息拦截问题
主界面是Dialog,上面有button,combobox,edit等控件,现在的要求是在除了edit之外的其他地方按左右方向键做一些事情,但是在edit控件里,因为要移动光标修改输入内容,所以不能屏蔽左右方向键,而且也不能做这些事情rn我现在的做法是重载了主Dialog的pretranslatemessage,判断KEYDOWN事件,如果是左右方向键,则做这些事情,但是这样的话,在edit控件里光标会移动,但也去做那些事情了,这种情况该如何解决?
关于拦截窗口大小消息问题
document/view程序,我已经把程序图标放到托盘里,我怎么让别人点击最小化按扭或关闭扭不让程序退出,而是像QQ那样在<em>系统托盘</em>里!!rn就是说,怎样才能<em>拦截</em>WM_MINSIZE<em>消息</em>,我找了半天没找到!!rn还有托盘图标好象不响应鼠标<em>消息</em>!!很急!!
关于拦截键盘消息问题
我想用一个<em>hook</em><em>拦截</em>键盘上面的任意字母键,通过其调出一个窗口后将那个字母键又 交给输入法。rnrnrn 关键:rn 1.我可以实现<em>拦截</em>键盘上的所有键,怎样实现只<em>拦截</em>任意字母键。rnrn 2.怎样实现<em>拦截</em>之后,又将哪个按键交给输入法。rn rn rn rn
关于窗体消息拦截问题~~
varrn Form1: TForm1;rn hHook:dword;rn lpPrevWndProc:FARPROC;rnrnrnimplementationrnrn$R *.dfmrnrnfunction InstallHook(hwnd:HWND): dword; external 'HookDll.dll';rnfunction GetPsw: dword; external 'HookDll.dll';rnprocedure UninstallHook ; external 'HookDll.dll';rnrnrnprocedure un<em>hook</em> ;rnbeginrn UninstallHook ;rn SetWindowLong(form1.Handle ,GWL_WNDPROC, longint(lpPrevWndProc)) ;rnend;rnrnfunction MyProc(Hwnd:HWND;iCode:UINT;wParam:WPARAM;lParam:LPARAM):integer; //stdcall;rnbeginrnResult := 0 ;rnif hHook=0 thenrn beginrn hHook:= InstallHook(Hwnd);rn endrnelse if icode=$406 thenrn beginrn SendMessage ( form1.edit1.handle , WM_SETTEXT, 255, GetPsw) ;rn exit ;rn endrnelse if icode =$10 thenrn un<em>hook</em>;rn result:=CallWindowProc(lpPrevWndProc,Hwnd,iCode,wParam,lParam);rnend;rnrnprocedure TForm1.FormCreate(Sender: TObject);rnVARrnrect:TRECT ;rnbeginrnGetWindowRect(form1.Handle ,rect) ;rnSetWindowPos(form1.Handle ,HWND_TOPMOST,rect.Left ,rect.Top ,0 ,0,SWP_SHOWWINDOW +SWP_NOSIZE) ;rnlpPrevWndProc:= FARPROC(SetWindowLong(form1.Handle ,GWL_WNDPROC,longint(@MyProc))) ;rnend;rnend.rn那个DLL里是获得窗体标题的几个函数~~~~用SetWindowLong过后在自己的<em>消息</em>处理那里老是出错~~~~不知道那里有<em>问题</em>~~~高手请指教!~谢谢~~~
TRichEdit的WM_VSCROLL消息拦截问题
因为TRichEdit没有针对滚动条事件的响应,所以我自己去截获WM_VSCROLL<em>消息</em>,做法如下:rnXXX.h文件中rn[code=C/C++]rnclass TForm1:TForm rnprivate:rn.......rnvoid __fastcall OnWMVScroll(TMessage &Msg);rnrnpublic:rn......rnBEGIN_MESSAGE_MAPrn MESSAGE_HANDLER(WM_VSCROLL, TMessage, OnWMVScroll);rnEND_MESSAGE_MAP(TForm);rnrn[/code]rnrn并在XXX.cpp中实现OnWMVScroll函数rnrn预期效果应该是在截获到WM_SCROLL<em>消息</em>时,能够调用到OnWMVScroll函数,遗憾的是没有产生预期效果rn还望各位予以指点。谢谢!!!rn
CBC 拦截键盘消息问题
在一个空白页面上放了个label控件,rn写了一个对键盘<em>消息</em>进行处理的<em>消息</em>处理函数,当输入的键盘键为alt+a的时候,就在label上显示,可以运行。rnrn再添加一个memo控件以后,程序刚开始运行的时候,memo控件就获得了输入焦点。原来写的<em>消息</em>处理函数就不起作用了。rnrn有人知道这是为什么吗?rn主要代码如下:rn头文件:rnprotected:rn MESSAGE void NewKeyDown(TWMKey &Message);rn rn BEGIN_MESSAGE_MAPrn MESSAGE_HANDLER(WM_KEYDOWN,TWMKey,NewKeyDown);rn MESSAGE_HANDLER(WM_SYSKEYDOWN,TWMKey,NewKeyDown);rn END_MESSAGE_MAP(TForm);rnrn.cpp文件:rnvoid TForm1::NewKeyDown(TWMKey &Message)rnrn TForm::Dispatch(&Message);rn rn rn short result = GetKeyState(VK_MENU);rn if(result&0xff00)rn rn short result2 = GetKeyState(65);rn if(result2&0xff00)rn rn Label1->Caption = "alt a";rn rn rn rn elsern rn Label1->Caption = "not";rn rnrn
vb 中拦截消息问题
Public Function WndMessage(ByVal hwnd As OLE_HANDLE, ByVal Msg As OLE_HANDLE, ByVal wp As OLE_HANDLE, ByVal lp As Long) As Longrn rn If Msg <> 641 Thenrn WndMessage = CallWindowProc(OldWindowProc, hwnd, Msg, wp, lp)rn Exit Functionrn End Ifrn rn rn rn WndMessage = Truern rnEnd Functionrnrn程序进入WndMessage后为死循环,如何处理
控件消息拦截窗体消息
CDialog窗体上只有一个CSliderCtrl控件,添加对话框窗体的MouseMove事件,当鼠标位于CSliderCtrl控件窗体的区域范围时,CDialog窗体的MouseMove事件没有响应,该如何解决?
Hook工具例子 监控任意窗体拦截消息
修改代码,随意<em>hook</em>窗口,监控窗口事件。
关于HOOK API拦截不到想要拦截的函数问题
希望能够帮帮小弟rn程序源代码:rnvoid CTestAPIDlg::OnHook() rn rn// TODO: Add your control notification handler code here rnHMODULE m_hdl = GetModuleHandle(NULL); rnHMODULE m_hdldll=LoadLibrary("User32.dll"); rnFARPROC m_ProAdd = GetProcAddress(m_hdldll,"MessageBoxA"); rnrn//pf*m_pf=MessageBoxQ; rn//fp=MessageBox; rnReplaceIATEntryInOneMod("User32.dll" , m_ProAdd , (PROC)MessageBoxQ , m_hdl); rn rnrnvoid CTestAPIDlg::ReplaceIATEntryInOneMod(PCSTR pszCalleeModName, PROC pfnCurrent, PROC pfnNew, HMODULE hmodCaller) rn rn ULONG ulSize; rnrn PIMAGE_IMPORT_DESCRIPTOR pImportDesc = NULL; rn __try rn pImportDesc = (PIMAGE_IMPORT_DESCRIPTOR) ImageDirectoryEntryToData( rn hmodCaller, TRUE, IMAGE_DIRECTORY_ENTRY_IMPORT, &ulSize); rn rn __except (InvalidReadExceptionFilter(GetExceptionInformation())) rn rn rn rn if (pImportDesc == NULL) rn return; // This module has no import section or is no longer loaded rnrn for (; pImportDesc->Name; pImportDesc++) rn rn PSTR pszModName = (PSTR) ((PBYTE) hmodCaller + pImportDesc->Name); rn if (lstrcmpiA(pszModName, pszCalleeModName) == 0) rn rnrn PIMAGE_THUNK_DATA pThunk = (PIMAGE_THUNK_DATA) rn ((PBYTE) hmodCaller + pImportDesc->FirstThunk); rnrn // Replace current function address with new function address rn for (; pThunk->u1.Function; pThunk++) rn rnrn // Get the address of the function address rn PROC* ppfn = (PROC*) &pThunk->u1.Function; rnrn // Is this the function we're looking for? rn BOOL bFound = (*ppfn == pfnCurrent); rn if (bFound) rn rn if (!WriteProcessMemory(GetCurrentProcess(), ppfn, &pfnNew, sizeof(pfnNew), NULL) && (ERROR_NOACCESS == GetLastError())) rn rn DWORD dwOldProtect; rn if (VirtualProtect(ppfn, sizeof(pfnNew), PAGE_WRITECOPY, &dwOldProtect)) rn rn WriteProcessMemory(GetCurrentProcess(), ppfn, &pfnNew, sizeof(pfnNew), NULL); rn VirtualProtect(ppfn, sizeof(pfnNew), dwOldProtect, &dwOldProtect); rn rn rn return; // We did it, get out rn rn rn // Each import section is parsed until the right entry is found and patched rn rnrnrnvoid CTestAPIDlg::OnMsgbox() rnrn // TODO: Add your control notification handler code herern MessageBoxA("没有被截取到!");rn
Hook 简单的实例--拦截鼠标和键盘消息(一)
Hook(钩子)就是对Windows系统的一些<em>消息</em>或是API函数进行<em>拦截</em>和监控的处理平台,让可以根据程序员的设置获取其感兴趣的信息。 这里主要是介绍一下Hook<em>拦截</em>鼠标<em>消息</em>和键盘<em>消息</em>。 下面是CALLBACK Proc 回调函数 和 CallNextHookEx函数 LRESULT CALLBACK HookProc ( int nCode,//指定是否需要处理该<em>消息</em> ...
什么是Hook编程和消息过滤拦截啊?
只是了解一些Hook编程,以及<em>消息</em>过滤和<em>拦截</em>方面的概念;rn具体不清楚,为什么要有这几个概念?rn是比普通API跟深一层的系统接口?
如何利用HOOK拦截某游戏的键盘消息
我定义了一个全局HOOK钩子,本来想<em>拦截</em>某款游戏的键盘<em>消息</em>的,结果发现其它程序的键盘<em>消息</em>都能<em>拦截</em>,就这款游戏的键盘<em>消息</em>不能<em>拦截</em>。查询资料得知可能是它设置了局部钩子,优先级要高于系统钩子。请问是这样的吗?还有我该怎么解决这个<em>问题</em>呢?
使用socket hook拦截封包问题
从网上查到一篇“<em>拦截</em>其它程序的网络数据封包”的文章,我想问问前辈们,我应该怎么获取此程序连接的ip地址呢?我是希望能根据ip地址判断是不是需要<em>拦截</em>。rnrnHOOK.DLL的代码:rnlibrary Hook;rnrnusesrnSysUtils,rnwindows,rnMessages,rnAPIHook in 'APIHook.pas';rnrntypernPData = ^TData;rnTData = recordrnHook: THandle;rnHooked: Boolean;rnend;rnrnvarrnDLLData: PData;rnrn------------------------------------rn过程名:HookProcrn过程功能:HOOK过程rn过程参数:nCode, wParam, lParam<em>消息</em>的相rn 关参数rn------------------------------------rnprocedure HookProc(nCode, wParam, lParam: LongWORD);stdcall;rnbeginrnif not DLLData^.Hooked thenrnbeginrnHookAPI;rnDLLData^.Hooked := True;rnend;rn//调用下一个HookrnCallNextHookEx(DLLData^.Hook, nCode, wParam, lParam);rnend;rnrnrn------------------------------------rn函数名:InstallHookrn函数功能:在指定窗口上安装HOOKrn函数参数:sWindow:要安装HOOK的窗口rn返回值:成功返回TRUE,失败返回FALSErn------------------------------------rnfunction InstallHook(SWindow: LongWORD):Boolean;stdcall;rnvarrnThreadID: LongWORD;rnbeginrnResult := False;rnDLLData^.Hook := 0;rnThreadID := GetWindowThreadProcessId(sWindow, nil);rn//给指定窗口挂上钩子rnDLLData^.Hook := SetWindowsHookEx(WH_GETMESSAGE, @HookProc, Hinstance, ThreadID);rnif DLLData^.Hook > 0 thenrnResult := True //是否成功HOOKrnelsernexit;rnend;rnrn------------------------------------rn过程名:UnHookrn过程功能:卸载HOOKrn过程参数:无rn------------------------------------rnprocedure UnHook;stdcall;rnbeginrnUnHookAPI;rn//卸载HookrnUn<em>hook</em>WindowsHookEx(DLLData^.Hook);rnend;rnrn------------------------------------rn过程名:DLL入口函数rn过程功能:进行DLL初始化,释放等rn过程参数:DLL状态rn------------------------------------rnprocedure MyDLLHandler(Reason: Integer);rnvarrnFHandle: LongWORD;rnbeginrncase Reason ofrnDLL_PROCESS_ATTACH:rnbegin //建立文件映射,以实现DLL中的全局变量rnFHandle := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, $ffff, 'MYDLLDATA');rnif FHandle = 0 thenrnif GetLastError = ERROR_ALREADY_EXISTS thenrnbeginrnFHandle := OpenFileMapping(FILE_MAP_ALL_ACCESS, False, 'MYDLLDATA');rnif FHandle = 0 then Exit;rnend else Exit;rnDLLData := MapViewOfFile(FHandle, FILE_MAP_ALL_ACCESS, 0, 0, 0);rnif DLLData = nil thenrnCloseHandle(FHandle);rnend;rnDLL_PROCESS_DETACH:rnbeginrnif Assigned(DLLData) thenrnbeginrnUnmapViewOfFile(DLLData);rnDLLData := nil;rnend;rnend;rnend;rnend;rnrn$R *.resrnexportsrnInstallHook, UnHook, HookProc;rnrnbeginrnDLLProc := @MyDLLHandler;rnMyDLLhandler(DLL_PROCESS_ATTACH);rnDLLData^.Hooked := False;rnend.rnrn----------------------------------------------------------------------------------------rnAPIHook.Pas的代码:rnrnunit APIHook;rnrninterfacernrnusesrnSysUtils,rnWindows, WinSock;rnrntypern//要HOOK的API函数定义rnTSockProc = function (s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;rnrnPJmpCode = ^TJmpCode;rnTJmpCode = packed recordrnJmpCode: BYTE;rnAddress: TSockProc;rnMovEAX: Array [0..2] of BYTE;rnend;rnrn//--------------------函数声明---------------------------rnprocedure HookAPI;rnprocedure UnHookAPI;rnrnvarrnOldSend, OldRecv: TSockProc; //原来的API地址rnJmpCode: TJmpCode;rnOldProc: array [0..1] of TJmpCode;rnAddSend, AddRecv: pointer; //API地址rnTmpJmp: TJmpCode;rnProcessHandle: THandle;rnimplementationrnrn---------------------------------------rn函数功能:Send函数的HOOKrn函数参数:同Sendrn函数返回值:integerrn---------------------------------------rnfunction MySend(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;rnvarrndwSize: cardinal;rnbeginrn//这儿进行发送的数据处理rnMessageBeep(1000); //简单的响一声rn//调用直正的Send函数rnWriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);rnResult := OldSend(S, Buf, len, flags);rnJmpCode.Address := @MySend;rnWriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize);rnend;rnrn---------------------------------------rn函数功能:Recv函数的HOOKrn函数参数:同Recvrn函数返回值:integerrn---------------------------------------rnfunction MyRecv(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall;rnvarrndwSize: cardinal;rnbeginrn//这儿进行接收的数据处理rnMessageBeep(1000); //简单的响一声rn//调用直正的Recv函数rnWriteProcessMemory(ProcessHandle, AddRecv, @OldProc[1], 8, dwSize);rnResult := OldRecv(S, Buf, len, flags);rnJmpCode.Address := @MyRecv;rnWriteProcessMemory(ProcessHandle, AddRecv, @JmpCode, 8, dwSize);rnend;rnrn------------------------------------rn过程功能:HookAPIrn过程参数:无rn------------------------------------rnprocedure HookAPI;rnvarrnDLLModule: THandle;rndwSize: cardinal;rnbeginrnProcessHandle := GetCurrentProcess;rnDLLModule := LoadLibrary('ws2_32.dll'); rnAddSend := GetProcAddress(DLLModule, 'send'); //取得API地址rnAddRecv := GetProcAddress(DLLModule, 'recv');rnJmpCode.JmpCode := $B8;rnJmpCode.MovEAX[0] := $FF;rnJmpCode.MovEAX[1] := $E0;rnJmpCode.MovEAX[2] := 0;rnReadProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);rnJmpCode.Address := @MySend;rnWriteProcessMemory(ProcessHandle, AddSend, @JmpCode, 8, dwSize); //修改Send入口rnReadProcessMemory(ProcessHandle, AddRecv, @OldProc[1], 8, dwSize);rnJmpCode.Address := @MyRecv;rnWriteProcessMemory(ProcessHandle, AddRecv, @JmpCode, 8, dwSize); //修改Recv入口rnOldSend := AddSend;rnOldRecv := AddRecv;rnend;rnrn------------------------------------rn过程功能:取消HOOKAPIrn过程参数:无rn------------------------------------rnprocedure UnHookAPI;rnvarrndwSize: Cardinal;rnbeginrnWriteProcessMemory(ProcessHandle, AddSend, @OldProc[0], 8, dwSize);rnWriteProcessMemory(ProcessHandle, AddRecv, @OldProc[1], 8, dwSize);rnend;rnrnend.rnrn---------------------------------------------------------------------------------------------rn编译这个DLL后,再新建一个程序调用这个DLL的InstallHook并传入目标进程的主窗口句柄就可:rnunit fmMain;rnrninterfacernrnusesrnWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,rnDialogs, StdCtrls;rnrntypernTForm1 = class(TForm)rnButton1: TButton;rnButton2: TButton;rnEdit1: TEdit;rnprocedure Button1Click(Sender: TObject);rnprocedure Button2Click(Sender: TObject);rnprivatern Private declarations rnpublicrn Public declarations rnend;rnrnvarrnForm1: TForm1;rnInstallHook: function (SWindow: THandle):Boolean;stdcall;rnUnHook: procedure;stdcall;rnimplementationrnrn$R *.dfmrnrnprocedure TForm1.Button1Click(Sender: TObject);rnvarrnModuleHandle: THandle;rnTmpWndHandle: THandle;rnbeginrnTmpWndHandle := 0;rnTmpWndHandle := FindWindow(nil, '目标窗口的标题');rnif not isWindow(TmpWndHandle) thenrnbeginrnMessageBox(self.Handle, '没有找到窗口', '!!!', MB_OK);rnexit;rnend;rnModuleHandle := LoadLibrary('Hook.dll');rn@InstallHook := GetProcAddress(ModuleHandle, 'InstallHook');rn@UnHook := GetProcAddress(ModuleHandle, 'UnHook');rnif InstallHook(FindWindow(nil, 'Untitled')) thenrnShowMessage('Hook OK');rnend;rnrnprocedure TForm1.Button2Click(Sender: TObject);rnbeginrnUnHookrnend;rnrnend.
使用HOOK拦截任务管理器中直接杀进程的消息
这是本人在网上搜索到的资料,跟大家分享,感谢那个提供源码的网友. 大家都知道,在任务管理器进程标签中直接杀进程,是直接杀,不交给用户处理.很多人都在为了防止自己的进程被误杀而苦苦思索,但是一般的<em>拦截</em><em>消息</em>的方法又几乎都不管用. 在这里,给大家一个Delphi的源码,使用HOOK进行<em>拦截</em>处理任务管理器来实现. 在附件的文档中包含了源码,共分为两个部分:exe测试部分,Dll部分(HookDll,unit<em>hook</em>). 我已经亲自编译测试过,可以实现<em>拦截</em>任务管理器的<em>消息</em>. 再次感谢那个网友(没有记住名...)! PS:附件中的Word是使用Office2010保存的docx格式,如果您不能打开我这个文档,可以在我的资源目录下找这个补丁安装上就可以了. FileFormatConverters_Office_doc_to_docx 这个是微软提供的,可以使Office2003等早期版本打开新的docx格式文档. 感谢大家光临!
用HOOK拦截修改消息鼠标,中间键与右键对换。
用HOOK<em>拦截</em>修改<em>消息</em>鼠标,中间键与右键对换。rn在N多程序上测试通过,但是在UGS上有些对换了,有些又不变,rn如按下中间键和按下右键换了,点击中间键和点击右键就不变,rn有点怪怪的。rn请高人指点。rn源码如下:rnrnlibrary MouseHookDLL;rnrnuses WinTypes, WinProcs, Messages;rnrnvarrn IsHooked: Boolean;rn MHooked, MHooked2: Boolean;rn HookHandle: HHook;rnrnfunction MouseHookProc(Code: integer; Msg: WPARAM; MouseHook: LPARAM): LRESULT; stdcall;rn var MouseStruct: TMOUSEHOOKSTRUCT;rnbeginrn if MHooked thenrn beginrn MHooked:= FALSE;rn Result := CallNextHookEx(HookHandle, Code, Msg, MouseHook);rn endrn elsern beginrn MouseStruct := pMOUSEHOOKSTRUCT(MouseHook)^;rn case Msg ofrn WM_RBUTTONDOWN: //右键rn beginrn mouse_event(MOUSEEVENTF_MIDDLEDOWN,MouseStruct.pt.X,MouseStruct.pt.Y,0,0);rn Result:=1;rn MHooked:= True;rn end;rn WM_RBUTTONUP: //右键rn beginrn mouse_event(MOUSEEVENTF_MIDDLEUP,MouseStruct.pt.X,MouseStruct.pt.Y,0,0);rn Result:=1;rn MHooked:= True;rn end; rn WM_RBUTTONDBLCLK: //右键rn beginrnrn end; rn WM_MBUTTONDOWN: //中键rn beginrn mouse_event(MOUSEEVENTF_RIGHTDOWN,MouseStruct.pt.X,MouseStruct.pt.Y,0,0);rn Result:=1;rn MHooked:= True;rn end;rn WM_MBUTTONUP: //中键rn beginrn mouse_event(MOUSEEVENTF_RIGHTUP,MouseStruct.pt.X,MouseStruct.pt.Y,0,0);rn Result:=1;rn MHooked:= True;rn end; rn WM_MBUTTONDBLCLK: //中键rn beginrnrn end; rn elsern Result := CallNextHookEx(HookHandle, Code, Msg, MouseHook);rn end;rn end;rnend;rnrnfunction SetHook: boolean; stdcall;rnbeginrn Result := FALSE;rn if IsHooked then Exit;rn HookHandle := SetWindowsHookEx(WH_MOUSE, MouseHookProc, HInstance, 0);rn Result:= HookHandle <> 0;rnend;rnrnfunction RemoveHook: boolean; stdcall;rnbeginrn Result := FALSE;rn if (not IsHooked) and (HookHandle <> 0) thenrn Result := Un<em>hook</em>WindowsHookEx(HookHandle);rn IsHooked:= FALSE;rnend;rnrnexportsrn SetHook,rn RemoveHook,rn MouseHookProc;rnrn Initialize DLL data. rnbeginrn IsHooked:= FALSE;rn MHooked:= FALSE;rn MHooked2:= FALSE;rnrnend.
全局HOOK如何拦截到活动窗口发生改变的消息
也就是说,我想通过它确保任何时候都能够获取当前活动窗口的句柄。然后我是通过GetForegroundWindow()实现的。在这之前还要编写一个动态库,实现HOOK。rnrn如果不这样做我只知道用一个死循环,循环体内调用GetForegroundWindow(),所以用恰当的<em>hook</em>过程应该就会方便一些。rnrn具体应该用哪个<em>hook</em>过程?以及如何设置该回调函数参数?
[原创记录]简单全局HOOK拦截大部分键盘消息
前言:学习HOOK中, 万一老师讲解HOOK入门教程:http://www.cnblogs.com/del/category/124150.html 正题:全局HOOK<em>拦截</em>大部分键盘<em>消息</em>,Ctrl+alt+del 同Num Lock 目前测试无法截获。 写全局Hook基本步骤: 因为为全局Hook,要用到dll,以后就不知道需要不………… 一.创建dll 1.声明同实现回调...
如何通过钩子hook拦截windows中的消息
如何通过钩子<em>hook</em><em>拦截</em>windows中的<em>消息</em>?能给我提供一些函数和例子吗?
如何用HOOK拦截windows关闭其它某个程序的消息
怎么用钩子<em>拦截</em>系统发送的<em>消息</em>?rn<em>拦截</em>后又怎么知道这个<em>消息</em>是传给哪个窗口的?rn怎样使<em>消息</em>不能传送个窗口,即windows不能关闭指定的窗口?rnrn另外还想向大家请教一下,在一个dll中能否同时使用键盘和系统两个钩子?
绿豆的API HOOK WS2_32.DLL SEND 拦截问题
我<em>拦截</em>的是 WS2_32.DLL rn用的是 mTag = m_oExpHooker.HookExport(mModBas, "send", False)rn<em>拦截</em>是成功的不过<em>问题</em>是很卡. 而且SEND好象是输入函数 是不是用这个<em>拦截</em>啊,还有就是怎么才能修改<em>拦截</em>的包,在哪个里面修改的rnrn处理的是用联众3打一<em>拦截</em>部分的rnPrivate Sub m_oExpHooker_BeforeAction(ByVal lHookID As Long, ByVal lHookType As Long, ByVal sAPIName As String, ByVal lpArgs As Long, fBlock As Boolean, lArgCount As Long, ByVal lReturnAddress As Long)rnrnmAA = Falsern'*******************************rnDim alArgsEx() As LongrnDim mBuff() As ByternDim mIndex As LongrnDim TempStr As Stringrn'*******************************rnWith m_oExpHookerrn'******************************************rn.GetArguments alArgsEx(), 4rn'Debug.Print alArgsEx()rn'If alArgsEx(2) = 20 Or alArgsEx(2) = 8 ThenrnReDim mBuff(alArgsEx(2) - 1) As Bytern.Pmemcpy2local VarPtr(mBuff(0)), alArgsEx(1), alArgsEx(2)rn'If CLng(mBuff(4)) = 1 Or alArgsEx(2) = 8 ThenrnTempStr = "===============================================" & alArgsEx(2) & vbCrLfrnFor mIndex = 0 To UBound(mBuff)rnTempStr = TempStr & Right$("0" & Hex(mBuff(mIndex)), 2) & " "rn'TempStr = TempStr & Chr(mBuff(mIndex)) & " "rnNextrnText2.Text = Text2.Text & TempStr & vbCrLfrnText2.SelStart = Len(Text2.Text)rn'End Ifrn' End IfrnEnd WithrnEnd Sub
hook例子源码-拦截API
VC写的<em>拦截</em>API的简单实例,对理解<em>hook</em>的原理有很大益处。
利用HOOK拦截封包原理
  2004-2-18加入  来自未知  作者佚名  2条评论  点击7596次        截获API是个很有用的东西,比如你想分析一下别人的程序是怎样工作的。这里我介绍一下一种我自己试验通过的方法。 首
利用HOOK拦截封包原理
截获API是个很有用的东西,比如你想分析一下别人的程序是怎样工作的。这里我介绍一下一种我自己试验通过的方法。      首先,我们必须设法把自己的代码放到目标程序的进程空间里去。Windows Hook可以帮我们实现这一点。SetWindowsHookEx的声明如下:  HHOOK SetWindowsHookEx(  int idHook, // <em>hook</em> type  HOOKPROC lpfn
实现拦截API的钩子(Hook)
道理不多讲,简单说就是将系统API的地址,替换为我们自己写的API的地址,所以要求我们自定义的API函数要和被<em>拦截</em>的API有相同的参数。在用完后,记得恢复。因为要挂全局的钩子,所以Hook的部分,做成DLL。Hook.DLL主工程文件代码library Hook; uses SysUtils, Windows, Classes, ApiDefine in 'ApiDefine.pas', APIHook in 'APIHook.pas'; {$R *.res} v
hook sendmessage和od拦截 不同
我用od在SendMessageA 对 WM_COPYDATA 下断,od断下有一个特定的<em>消息</em>内容的<em>消息</em>。但是如果我<em>hook</em>了SendMessageA 却无法截获,好像就没发这个<em>消息</em>,纠结两天了 ,我 <em>hook</em>6-10字节 也是不行。。不知道为啥
拦截聊天记录--Hook技巧简介
一、    战场环境 [兵工场]:VC6.0 [兵器谱]: Detours Express 2.1、Windbg6.11、OllyDBG 二、    战术分析 Hook从字面上理解就是钩子的意思,当然这个钩子不是用来钓鱼的。它是用来挂钩程序用的,程序一但被挂钩就可以改变程序原有的流程。例如Hook之前的流程如下: Hook后的流程如下: <em>拦截</em>XX
Hook技术拦截跳转登录
     其实现在的开发中大多支持游客模式,但是一些需要绑定用户的模块就需要用户登录,这时候用Hook就方便多了。 1、确定Hook点       确定Hook点的原则就是生命周期比较长,不会轻易重新创建,一般寻找静态变量和单例。 劫持登录就需要Hook到页面跳转的静态变量调用者,下面我们根据startActivity方法去寻找Hook点(此处查找源码为Android23,在26版本静态变量有变化...
windows hook 拦截指定的输入设备
<em>问题</em>的缘由是由于ID卡读卡器接入PC后被虚拟为一个键盘,刷卡时会在当前光标处录入卡号。<em>拦截</em>的目的是抓住刷卡读入的卡号后直接在后台处理。操作员可以继续其他的操作,如编辑Word,浏览网页,填写表格等。rn读卡器无驱动,无开发包。rn读卡器接入电脑后,从硬件设备中可以查看到有一个USB人工输入设备。尝试过处理USB的数据通讯,但程序识别不出来ID卡虚拟出来的这个设备。其他的U盘,鼠标都能识别出来。因此放弃了转而通过<em>拦截</em>这个指定设备的输入的办法,不知道是否可行。rn请大虾们指点。
2级拦截HOOK源码
2级<em>拦截</em>HOOK源码
Hook技术--Activity的启动过程的拦截
1、寻找Hook点的原则 Android中主要是依靠分析系统源码类来做到的,首先我们得找到被Hook的对象,我称之为Hook点;什么样的对象比较好Hook呢?自然是容易找到的对象。什么样的对象容易找到?静态变量和单例;在一个进程之内,静态变量和单例变量是相对不容易发生变化的,因此非常容易定位,而普通的对象则要么无法标志,要么容易改变。我们根据这个原则找到所谓的Hook点。 2、寻找Hook点 ...
哪个HOOK能拦截WM_COMMAND ?
哪个HOOK能<em>拦截</em>WM_COMMAND ?
java程序员面试(7个文件)下载
网上收集的Java 程序员面试笔试题,不错的! 相关下载链接:[url=//download.csdn.net/download/mushan_xiao/2298241?utm_source=bbsseo]//download.csdn.net/download/mushan_xiao/2298241?utm_source=bbsseo[/url]
网页视频播放器下载
这是一个网页视频播放器,网页设计必不可少,我保证肯定能用,可以控制视频的快进、快退、全屏、声音大小控制。 相关下载链接:[url=//download.csdn.net/download/bijiexueyuanjk/4253136?utm_source=bbsseo]//download.csdn.net/download/bijiexueyuanjk/4253136?utm_source=bbsseo[/url]
ajax实例的简单实现下载
简单实现ajax异步调用,不刷新页面显示用户需要信息 相关下载链接:[url=//download.csdn.net/download/shdhenghao3/4551744?utm_source=bbsseo]//download.csdn.net/download/shdhenghao3/4551744?utm_source=bbsseo[/url]
相关热词 c#串口测试应用程序 c# 匹配 正则表达式 c#防止窗体重绘 c#读写txt文件 c#挖地雷源代码 c#弹框选项 c# 移除 队列 c# 密码写入配置文件 c# 获取可用内存大小 c# 嵌入excel编辑
我们是很有底线的