Windows文本框星号密码查看

从给定的文件标题、描述、标签以及部分内容中,我们可以推断出这是一段与Windows系统下星号(*)密码查看相关的C++程序代码。这段代码主要涉及到Windows API的使用,尤其是Hook技术和消息处理机制,用于在用户不知道的情况下捕获并显示文本框中的密码字符。下面将详细解析这一知识点。 ### Windows文本框星号密码查看 #### 1. Hook技术在密码查看中的应用 Hook是Windows操作系统中的一种机制,允许程序员拦截、修改或扩展由Windows系统处理的消息。在这段代码中,Hook被用来监听鼠标事件,当用户在密码输入框内移动鼠标时,触发相应的Hook函数,从而获取到密码输入框的信息。 #### 2. 捕获密码输入框 为了确定当前鼠标所在位置的窗口是否为密码输入框,代码首先通过`WindowFromPoint()`函数获取鼠标指针下的窗口句柄。然后,使用`GetWindowLong()`函数检查该窗口的样式属性,判断其是否具有`ES_PASSWORD`样式,这是Windows用于标记密码输入框的特殊样式。 #### 3. 星号密码的获取与显示 一旦确认了鼠标下的窗口是密码输入框,代码会调用`SendMessage()`函数发送`WM_GETTEXT`消息来获取该输入框中的文本内容。通常情况下,密码框中显示的是星号(*),但通过此方法,实际输入的密码字符可以被读取出来。获取到的密码文本存储在`MouseTitle`数组中。 #### 4. 数据结构的使用 在代码中,定义了`TMouseInfo`和`TCopyDataStruct`两个数据结构。`TMouseInfo`用于存储鼠标位置信息和捕获到的密码文本,而`TCopyDataStruct`则用于在进程间传递数据。通过`CopyDataStruct`,可以将包含密码信息的`TMouseInfo`结构体发送到另一个指定的窗口,实现数据的共享。 #### 5. 钩子函数的注册与移除 在代码中,可以看到`SetWindowsHookEx()`和`UnhookWindowsHookEx()`函数的使用。前者用于注册钩子函数,后者用于移除已注册的钩子。这表明代码在运行时会先注册一个鼠标事件的钩子,以便于监听并处理鼠标事件;而在不再需要监听时,会移除这个钩子,避免对系统造成不必要的负担。 ### 总结 通过对这段代码的分析,我们可以看到Windows文本框星号密码查看功能的实现,涉及到了Hook技术的应用、Windows API的调用、数据结构的定义与使用等多个方面。这种技术虽然可以帮助开发者进行学习和交流,但需要注意的是,在未获得用户明确许可的情况下使用此类技术捕获密码等敏感信息,可能违反隐私保护法律法规,因此在实际应用中需谨慎对待。























1、 设计原理:注册一个系统级鼠标挂钩,通过监测系统鼠标所在Windows窗口来获取密码,成功获取密码之后,通过发送自定义的Windows系统消息,到宿主程序。
2、 Hook动态链接库设计原理:采用Windows Hook技术[鼠标挂钩],切入远程进程内部,并监测当前系统鼠标所在位置的当然窗口句柄(通过Windows APIWindowFromPoint()),获取窗口句柄之后,判断当然窗口是否为文本框,并进一步判断是否为密码框,当发现是密码输入框时,当此窗口发送WM_GETTEXT消息,获取密码。成功获取密码之后,发现自定义的WM_COPYDATA消息到宿主程序;
具体实现步骤简介:
1. 设置系统鼠标挂钩:
hkMouseHook := SetWindowsHookEx(WH_MOUSE,@CXX_MouseHookProc,hInstance,0);
2. 注销系统鼠标挂钩:
UnHookWindowsHookEx(hkMouseHook);
3. 监测当然窗口及窗口风格判断:
MousePos := pMhs.pt;
wnd := WindowFromPoint(pmhs.pt);
style := GetWindowLong(wnd,GWL_STYLE);
if (style and ES_PASSWORD) = ES_PASSWORD then
begin
//发现密码窗口
4. 向密码框获取密码串:
SendMessage(wnd,WM_GETTEXT,256,Integer(@MouseTitle[0]));
5. 发送自定义消息到宿主程序:
GetMem(pmi,sizeof(TMouseInfo));
pmi.MouseX := pt.X;
pmi.MouseY := pt.Y;
pmi.MouseTitle := pwd;
GetMem(pcds,sizeof(TCopyDataStruct));
pcds.dwData := 9910;
pcds.cbData := sizeof(TMouseInfo);
pcds.lpData := pmi;
SendMessage(hDec,WM_COPYDATA,0,LPARAM(pcds));
3、 宿主程序设计原理:我的宿主程序是自己学习Windows SDK开发时作品,采用纯SDK实现。SDK的编程不用废话了吧。在这个工具程序中,只需要在系统消息处理方法中,增加一个对WM_COPYDATA的拦截及处理过程就可能了。
case uMsg of
剩余31页未读,继续阅读

- yoso20082012-12-04这个好像用处不大哦

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 房地产开发工程管理制度流程.doc
- 设备安全操作规程.doc
- 帕利哌酮ER对阴性、情感症状的改善.pptx
- 《结构设计原理》试卷和答案.doc
- 企业安全生产管理制度.doc
- 第十章4混凝土模板及支撑工程.ppt
- 第八章-几何建模.ppt
- 新creo配置大全文件下载 下面是各版本
- 大班体育活动教案-我是孙悟空(纸棍的多种玩法).doc
- 大型商业建筑低成本节能改造技术分析.doc
- 城市供用气合同范本(直接套用-格式规范).doc
- 0kV变电站工程标准工艺策划剖析(含多图).doc
- 电气一般常见问题.pptx
- 汽机调试方案之三--空冷岛热冲洗方案.doc
- 年度培训计划1.doc
- 佛山魁奇立交试验方案.doc


