使用Windows钩子获取丢失的密码

简介

几年前我在CodeGuru 上下载了一个叫 Eureka的程序,如果你忘记了密码,你可以用程序把密码“取”回来。它不是密码破解程序,相反,它利用了一个Windows的安全漏洞来拷贝另外一个运行中的程序的密码。我对这个程序很感兴趣,决定写一个自己的版本。后来,Windows 2000 发布,我失望地发现,微软修补了那个漏洞,这样一来那个程序在Windows 2000上也就不灵了。经过一番尝试,我终于找到一个方法拷贝任何在32-位Windows 系统上运行程序的密码。

本文例子程序:


使用方法:

PasswordSpy程序的使用非常简单。你只要运行包含忘记了密码的程序,再运行PasswordSpy。然后将放大镜拖动到密码输入域上,PasswordSpy则会将密码显示出来。PasswordSpy程序并没有恶意,开发它的目的只是想把密码找回来,该程序在Win95/98 /ME and WinNT/2K/XP/Windows 2003 上测试通过。

功能说明:

除了PasswordSpy本身的用途之外,它还示范了一些有用和有趣的代码:

单实例应用——如果用户启动了PasswordSpy的第二个实例,系统会找到第一个实例,并在所有窗口的最前端显示出PasswordSpy界面;

Always on top——总是在最顶层,只用一行代码就可以在你的程序中启动和禁用这个功能;

进程间通讯——PasswordSpy 使用几种形式的IPC,包括WM_COPYDATA消息以及内存映射文件;

设置窗口钩子——为了在Windows 2000/Windows XP中吸取密码,你得使用在远程进程中置入一个钩子。

代码实现细节:

到目前为止,PasswordSpy 程序最有趣的部分其实是使用 SetWindowsHookEx API.函数设置Windows 钩子。利用该函数你可以将钩子安装到操作系统中或者某个特定的进程中。钩子的种类有很多种,每种钩子作用也不尽相同,用来监视特定的一组事件。当某一类事件发生时,钩子代码被调用。PasswordSpy使用WH_GETMESSAGE钩子,它监视对GetMessage 和PeekMessage 的调用。关于钩子更详细的信息请参考MSDN库的SetWindowsHookEx。

我在网上、书本以及MSDN上找到几个有关钩子的例子,每个都至少有一个Bug。本文我用自己的方案解决了这些问题。使用Windows钩子最难的部分是妥善存储钩子句柄。设置钩子之前,你需要做两件事情:

时间: 2024-10-28 00:54:18

使用Windows钩子获取丢失的密码的相关文章

怎么用Windows PE找回丢失的管理员密码

  有时我们忘记了Windows XP的超级管理员密码,无法进入系统且无法登录带命令行的安全模式,这时可以使用一些工具来修改超级管理员密码,本文以深山红叶WinPE为例,介绍修改密码的方法. 1.下载一个"深山红叶PE工具箱嫦娥一号纪念版"的ZIP文件,解压后为ISO文件,用刻录机把它刻成光盘. 2.用光盘启动电脑,通过菜单栏选择启动WinPE系统. 3.进入WinPE系统后,选择"开始→程序→Windows系统维护→Windows用户密码修复"菜单. 4.在后续的

windows-在Windows下更改用户密码时,有什么方法可以获取到旧密码、新密码、确认密码吗?求各位大神指教

问题描述 在Windows下更改用户密码时,有什么方法可以获取到旧密码.新密码.确认密码吗?求各位大神指教 在Windows下更改用户密码时,有什么方法可以获取到旧密码.新密码.确认密码吗?求各位大神指教. 有什么DLL用来处理用户修改密码的事件吗? 有的话是不是可以hook这个DLL的函数来截获新密码? 解决方案 不知道你是准备做什么,用hook是可以截取键盘和鼠标的所有信息的,但是各种杀毒软件都会提醒用户键盘鼠标正被监听.hook函数慎重使用,不然你的电脑会经常死机的 解决方案二: 不是要截

windows系统下那些常见密码的问题

  一.遗忘了SYSTEM密码 如果你遗忘了CMOS设置中的SYSTEM密码,就无法启动机器了,解决的办法只能是:打开机箱,把电池取下.正负极短接,给 CMOS 放电,清除CMOS中的所有内容(当然也就包括密码),然后重新开机进行设置. 注意:有些主板设置了CMOS密码清除跳线,请参照主板说明书将该跳线短接,这样也可以清除CMOS密码. 二.遗忘了SETUP密码 遗忘了该密码,就不能进行CMOS设置了.如果你能使用计算机,但不能进入CMOS设置,可以这样解决:在DOS状态下启动DEBUG ,然后

WINDOWS钩子函数详解

本课中我们将要学习WINDOWS钩子函数的使用方法.WINDOWS钩子函数的功能非常强大,有了它您可以探测其它进程并且改变其它进程的行为. 理论:WINDOWS的钩子函数可以认为是WINDOWS的主要特性之一.利用它们,您可以捕捉您自己进程或其它进程发生的事件.通过"钩挂",您可以给WINDOWS一个处理或过滤事件的回调函数,该函数也叫做"钩子函数",当每次发生您感兴趣的事件时,WINDOWS都将调用该函数.一共有两种类型的钩子:局部的和远程的. 局部钩子仅钩挂您自

Windows Server 2008中fine-grained密码策略

Windows Server 2008 操作系统为组织提供一个方法,可以为域中的不同集合的用户定义不同的密码和账号锁定策略.在Microsoft Windows 2000和Windows Server 2003 活动目录域中,只能有一个密码策略和账号锁定策略应用到域中的所有的用户.这些策略在域的缺省的域策略中指定.结果是,那些想为不同集合的用户定义不同的密 码和账号锁定策略的组织只能创建密码过滤器或部署多个域来实现.由于不同的原因这些方法的成本都很高. Fine-grained 密码策略能够做什

C#实现从windows剪贴板获取内容的方法

  本文实例讲述了C#实现从windows剪贴板获取内容的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Data; using System.Windows.Forms; public class Ma

windows 7系统用户有密码怎么样才能自动登录

用户如果没密码会自动登录,相信很多人都知道.但是用户有密码怎么样才能让它自动登录呢?小编以前也不知道以为不能实现,今天无聊到处搜索下,看看win7有没有这个功能.最后真的让小编找到了.这边跟大家说下实现方法. 1 进入注册表编辑器 通常用的方法是在运行里面输入"regedit".或者直接搜索regedit,搜索到的文件双击下也可以进. 2 到注册表编辑器里面定位到:HKEY_LOCAL_MACHINESOFtwareMicrosoftWindows NtCurrentVersionWi

Windows计算机中丢失SETUPAPI.dll

  Windows计算机中丢失SETUPAPI.dll的解决方法 Windows 2012 最近出现 计算机中丢失SETUPAPI.dll 的问题 查看日志未果,查看系统更新,好几个失败,没理! 是由于系统更新的原因:系统跟新失败,又没有回滚成功; 下载安装 2795944 更新,安装成功,重启,好了! 1 $>dir Windows8-RT-KB2795944-x64.msu 2 Volume in drive E has no label. 3 Volume Serial Number is

vc++-windows如何获取当前应用程序使用的网络类型

问题描述 windows如何获取当前应用程序使用的网络类型 请问各位,Windows下如何获取当前应用程序使用的网络类型?是WIFI还是有线网络. 1.目前实在是没找到类似安卓或者IOS那样的直接就可以读取的API.有的话跪求 2.现在所能想到的就是使用GetAdaptersInfo遍历获取到所有的网卡类型和对应的IP地址, 然后根据gethostbyname得到本地地址,用这个本地地址去匹配遍历得到的网卡IP.这样是否会有问题呢(考虑多网卡的情况) 解决方案 windows上面没有直接提供这一