惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threatpost
V
Vulnerabilities – Threatpost
TaoSecurity Blog
TaoSecurity Blog
C
Cybersecurity and Infrastructure Security Agency CISA
P
Proofpoint News Feed
G
GRAHAM CLULEY
S
Securelist
P
Palo Alto Networks Blog
MongoDB | Blog
MongoDB | Blog
A
Arctic Wolf
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
WordPress大学
WordPress大学
Project Zero
Project Zero
T
Threat Research - Cisco Blogs
L
Lohrmann on Cybersecurity
C
Cyber Attacks, Cyber Crime and Cyber Security
F
Fortinet All Blogs
博客园 - 叶小钗
B
Blog RSS Feed
C
Cisco Blogs
Google DeepMind News
Google DeepMind News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Apple Machine Learning Research
Apple Machine Learning Research
G
Google Developers Blog
K
Kaspersky official blog
D
Docker
Latest news
Latest news
Cisco Talos Blog
Cisco Talos Blog
T
Tor Project blog
Cyberwarzone
Cyberwarzone
Security Latest
Security Latest
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Spread Privacy
Spread Privacy
Microsoft Azure Blog
Microsoft Azure Blog
C
Check Point Blog
J
Java Code Geeks
Simon Willison's Weblog
Simon Willison's Weblog
T
Tenable Blog
Recent Announcements
Recent Announcements
T
Tailwind CSS Blog
H
Help Net Security
L
LINUX DO - 热门话题
T
The Exploit Database - CXSecurity.com
Jina AI
Jina AI
S
SegmentFault 最新的问题
MyScale Blog
MyScale Blog
NISL@THU
NISL@THU
美团技术团队
腾讯CDC

博客园 - zhh007's Bolg

最近越来越当心,是不是自己真的老了。。。 - zhh007's Bolg - 博客园 在asp.net中应用VML需注意 - zhh007's Bolg - 博客园 链接js文件编码问题[asp.net 2.0] - zhh007's Bolg 图表 Windows Server 2003 激活 - zhh007's Bolg CodeSmith OutPut file HOOK笔记[1] 在Dialog上贴图 C++常用网址 程序代码美化工具 C++程序员常用工具集 C++程序员常用工具书 c++资源之不完全导引 WINDOWS系统文件索引〔转摘〕 看别人这么说,中国人〔转摘〕 面相 把内网服务发布到公网 一招克死所有病毒[值得一看哦] 三十岁前不要去在乎的29件事
HOOK笔记[2] - zhh007's Bolg - 博客园
zhh007's Bol · 2005-11-10 · via 博客园 - zhh007's Bolg

二、全局HOOK
I、编写DLL

 1 #include <windows.h>
 2 
 3 HHOOK hMouseHook;
 4 HHOOK hKeyHook;
 5 
 6 #pragma data_seg("MySec")
 7 HWND hWnd=NULL;
 8 #pragma data_seg()
 9 
10 //#pragma comment(linker,"/section:MySec,RWS")
11 /*
12 HINSTANCE hInstance;
13 BOOL WINAPI DllMain(
14   HINSTANCE hinstDLL,  // handle to the DLL module
15   DWORD fdwReason,     // reason for calling function
16   LPVOID lpvReserved   // reserved
17 )
18 {
19     hInstance = hinstDLL;
20 }
21 */
22 
23 LRESULT CALLBACK MouseProc(
24   int nCode,      // hook code
25   WPARAM wParam,  // message identifier
26   LPARAM lParam   // mouse coordinates
27 )
28 {
29     return 1;
30 }
31 
32 LRESULT CALLBACK KeyboardProc(
33   int code,       // hook code
34   WPARAM wParam,  // virtual-key code
35   LPARAM lParam   // keystroke-message information
36 )
37 {
38     if(VK_F2==wParam)
39     {
40         ::SendMessage(hWnd,WM_CLOSE,0,0);
41         UnhookWindowsHookEx(hKeyHook);
42         UnhookWindowsHookEx(hMouseHook);
43     }
44     return 1;
45 }
46 
47 void setHook(HWND hwnd)
48 {
49     hWnd=hwnd;
50     hMouseHook=SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("DLLHOOK"),0);
51     hKeyHook=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("DLLHOOK"),0);
52 }

注意:
1、SetWindowsHookEx最后两个参数的设置
GetModuleHandle("DLLHOOK")用来返回DLL模块句柄;也可以通过保存DllMain的hinstDLL得到DLL模块句柄;
DLLHOOK与工程名相同。
2、并不时一定要设置共享节
首先通过#pragma定义共享节,如:
#pragma data_seg("MySec")//MySec为节的名字
HWND hWnd=NULL;//这里必须初始化
#pragma data_seg()
然后声明该节为共享节:
方法一:
#pragma comment(linker,"/section:MySec,RWS")
方法二:
在(也叫模块文件)中按如下写:
SEGMENTS
MySec         READ WRITE SHARED
3、可以通过dumpbin /headers DLLHOOK.dll察看该共享节的设置

II、通过

DEF文件发布接口函数

1 LIBRARY DLLHOOK
2 EXPORTS
3 setHook        @2
4 SEGMENTS
5 MySec    READ WRITE SHARED

注:可以先新建DEF文件,再引入工程中。
III、在目标工程中引入该DLL

 1 _declspec(dllimport) void setHook(HWND hwnd);
 2 
 3 BOOL CHOOKTESTDlg::OnInitDialog()
 4 {
 5         ..    
 6     // TODO: Add extra initialization here
 7     int cxScreen,cyScreen;
 8     cxScreen = GetSystemMetrics(SM_CXSCREEN);
 9     cyScreen = GetSystemMetrics(SM_CYSCREEN);
10     SetWindowPos(&wndTopMost,0,0,cxScreen,cyScreen,SWP_SHOWWINDOW);
11     setHook(m_hWnd);
12     return TRUE;  // return TRUE  unless you set the focus to a control
13 }

注意:
1、在项目的配置中的LINKS选项中,导入库,如:
..\DLLHOOK\Debug\DLLHOOK.lib
当然位置可以自己改,也可以把该LIB文件放在该工程目录中的LIB文件夹中;
2、把DLL文件拷贝到该工程目录中