本文将详细讨论一个键盘监视器的C/c#开发过程并针对反窥探提出一些建议,希望读者理解基于钩子技术的窥探软件的工作原理以便更好地对自己的软件加以保护 。
基于软件的键盘事件记录器是一个严重的安全威胁,因为它们通过捕获击键操作来监控用户的行动 。监控器可以用于一些恶意的行为,诸如盗窃信用卡号码等 。击键记录器是Trojans病毒的个基本组成部分,它们在后台安静地运行 。伺机捕获用户的击键操作 。击键事件被保存在经过良好隐藏的文件中,通过电子邮件或者FTP方式发送给窥探者 。下面是一个简单的、直接使用钩子技术实现的例子 。
键盘监视器体系结构
键盘监视器由3个模块组成:主模块、钩子过程和FTP模块 。主模块负责安装一个全局钩子过程 。该钩子的任务是把每次按键事件向主模块汇报,由主模块把所有的击键保存到一个文件中 。当记录文件达到预定的大小时,主模块命令FTP模块把记录文件上载给一个FTP服务器 。3个模块间的通讯是通过Windows消息机制实现的,如图1所示 。
【安卓键盘记录器app推荐 键盘记录者程序】一个系统范围的钩子实际上是一个函数,它安装在当前运行的所有进程中.在被监视消息到达目标window过程之前予以监控 。钩子过程用于监控系统中的各种类型的事件,例如击键,等等 。可以通过调用Win:32 API函数SetWindowsHookEx来安装一个钩子过程,并指定调用该过程的钩子类型 。一个WH_CBT钩子过程在窗口取得焦点并在击键事件从系统;肖息队列被清除之前调用 。所有桌面应用程序都在自己的上下文中调用一个全局的钩子过程.所以该钩子过程必须驻留在一个独立于应用程序的DLL中来安装钩子过程 。
一段DLL共享内存区域实际上是一个所有的DLL实例都可以看到的内存变量 。主模块把它的窗口句柄保存在钩子DLL的共享内存区域中,该DLL使所有的钩子过程实例能够把窗口消息邮寄回主模块中 。钩子过程共享内存区域并输出函数
函数的主模块代码如下
一个间谍程序为了防止自己被探测到,就必须隐藏好自己的踪迹 。它们主要涉及3个技术区域任务管理器、防火墙、文件系统 。我们在这里介绍前两个 。
任务管理器盗窃
ADS(Alternate Data Streams)是一项NTFS文件系统特性,它能使你把文件数据送于存在的文件中而不影响它们的功能,资源管理器等浏览工具对它们的显示,带有ADS的文件用本地文件浏览技术几乎是不可能检测到的 。一旦文件被注入该项特性,ADS即可被诸如传统的命令type等执行 。在激活时.ADS执行体以原始文件的方式出现并运行可以用Windows资源管理器等进程观察器来试验 。使用这种技术后,不仅能隐藏一个文件.而且能隐藏个非法进程的执行体部分 。事实上,如果安装了NTFS系统,你是不可能本地探测出以ADS方式隐藏的文件的 。ADS特性不能够被取消(dlsabled).目前为止还没有办法来针对用户已经对其具有存取权限的文件限制这种特性 。示例程序为了简明目地没有使用ADS 。你可以用下列方式手工操作ADS 。
防火墙盗窃
大多数的防火墙软件都能探测和阻拦不经授权的程序接入因特网 。主模块通过使用FTP模块把记录文件上载到一个FTP服务器 。防火墙通过把FTP模块DLL注入到另外一个已经安装的应用程序中来实现盗窃 。DLL注入意味着强制一个不能被挂起的进程必须接受一个自己从来没有要求的DLL文件 。示例中,我选择把FTP模块注八或者Internet Explorer或者FireFox 。DLL注入将会越过大多数防火墙软件的检测.特别在FTP服务器在监听80端口时 。钩子过程DLL (它由函数SetWindowsHookEx自动加载进入所有正运行进程)检查是被装入到Internet Explorer还是FireFox并加载(用LoadLibrary)了FTP模块DLL 。从DliMain中调用LoadLibrary函数是不允许的,因此DIIMain设置了一个布尔变量来让钩子过程调用LoadLibrary库函数 。
推荐阅读
- 小编教你ppt2010中幻灯片切换时间太长的相关步骤 小编教你键盘失灵按什么键恢复
- 我叫mt2什么时候可以玩,《我叫mt2》1月9日安卓版本更新公告
- 小编教你ntfs for mac更新软件版本的方法 小编教你键盘失灵按什么键恢复
- 安卓怎么登陆QQ梦之队,梦之队破军杯首秀
- wsa Windows11安卓子系统最新版2204.40000.19.0发布了!(附使用方法)
- iPhone键盘大小写怎么切换
- 小编教你HBuilder设置web服务器的操作步骤 小编教你键盘失灵按什么键恢复
- 安卓好用的视频播放器推荐 最好的手机视频播放器排行榜
- 仅用一招,就能替代键盘上的大小写指示灯
- 小编教你Word2019去水印的操作教程 小编教你键盘失灵按什么键恢复