科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Windows文本框星号密码查看器

Windows文本框星号密码查看器

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

注册一个系统级鼠标挂钩,通过监测系统鼠标所在Windows窗口来获取密码,成功获取密码之后,通过发送自定义的Windows系统消息,到宿主程序。

作者:阿呆 来源:CSDN 2008年2月26日

关键字: 密码查看器 java Windows

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共9页)

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

            //发现密码窗口

    end;

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

    WM_COPYDATA:

    begin

        CXX_ReceiveCopyData(uMsg);

    end;

        ……

end;

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章