RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
钩子的应用: 程序运行监视
  • 作者:zhaozj
  • 发表时间:2020-12-23 11:02
  • 来源:未知

钩子的应用: 程序运行监视(浏览 12350 次)

Victor Chen, (C++ 爱好者)


程序介绍:

利用这个程序:1.可以监视在你的电脑运行的程序, 把在你的电脑运行过的程序的时间和名字记录下来;2.可以阻止你规定的禁用程序的执行, 比如不让玩游戏。3.这个程序需要加入注册表, 在系统启动时就运行, 达到监视的目的。注册表大概都不陌生,就是这里:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run程序的记录格式:2003-02-03 17:31:25 - [System Startup - Windows XP 5.01.2600]2003-02-03 17:31:29 "CabinetWClass" -> "我的电脑"2003-02-03 17:31:59 "Red Alert" -> "Red Alert" (关闭禁用程序)2003-02-03 17:32:19 "扫雷" -> "扫雷" (关闭禁用程序)2003-02-03 17:32:35 "OpusApp" -> "Microsoft Word"2003-02-03 17:32:50 - [System Shutdown - 0 days, 0 hrs, 1 mins, 25 secs]2003-02-03 17:35:37 - [System Startup - Windows 98 SE 4.10.2222]2003-02-03 17:35:53 "扫雷" -> "扫雷" (关闭禁用程序)2003-02-03 17:36:05 "CabinetWClass" -> ""2003-02-03 17:36:31 "Red Alert" -> "Red Alert" (关闭禁用程序)2003-02-03 17:36:56 "ExploreWClass" -> ""2003-02-03 17:37:07 - [System Shutdown - 0 days, 0 hrs, 1 mins, 30 secs]程序运行只需要3个文件:  hwhpapp.exe 可执行文件  hwhpdrv.dll 安装钩子的动态链接库  hwhpapp.cfg 禁用软件黑名单, 可用记事本修改程序运行会自动产生记录文件:  hwhpapp.sys 可以用记事本打开看

程序原理:一.钩子利用 API 函数 SetWindowsHookEx() 安装一个全局钩子, 钩子类型为 WH_SHELL。WH_SHELL 钩子可监视所有应用程序的主窗口创建或者关闭。最典型的应用就是 Windows 的状态栏,当程序运行时,把主窗口的标题加入状态栏,程序退出时,从状态栏删除。如果你截获这个钩子,可以做到禁止状态栏的显示,也可以自己作一个状态栏,或者作一个历史记录,把所有在你电脑曾经运行的程序记录下来。如果运行的程序不是你希望的,你可以直接关闭这个程序,达到禁止运行的目的。二.动态链接库由于钩子是全局的,必须把这个钩子定义到 .DLL 的动态链接库里,这就涉及到建立动态链接库。三.共享内存由于钩子是安装到系统里的,钩子的运行是在操作系统里面,因此这个钩子不能使用你的程序所定义的任何全局变量!既然如此,有什么办法解决呢?在本程序里利用共享内存技术,利用 API 函数 CreateFileMapping() 可创建共享内存,这个内存可以在任何运行的程序中使用,也就是说任何运行的 .EXE、.DLL 和其他程序都可以使用这块内存。在本程序中直接使用了 Victor 串口 VCL 控件里的 TSharedMemory 共享内存类。