- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用钩子函数截取indows应用程序口令
使用钩子函数截取Windows应用程序口令摘要:本文简单介绍如何采用Visual c++ 语言,利用钩子函数截取Windows应用程序或文件口令,并以此说明windows存在的安全隐患。关键词:密码、钩子函数、DLL、后台进程一、引言:在计算机发展的今天,安全性是衡量信息系统的一个重要指标,也是信息系统中的一个重要课题。在我国指纹识别和条码识别尚不能普及的情况下,程序编制者为了维护系统的安全在程序中经常使用口令来验证使用者是否是合法用户,以此来决定他能否有权使用计算机中的数据资源。这种做法曾一度被视为最安全最简单最有效,于是用户也喜欢经常的变换口令,设置口令,在他们看来有了密码口令,就像有了保护神,一夫当关万夫莫开。于是系统中就出现了各种各样的口令,如文件口令(象Word 、Excel、Access、Zip 、Wps)、数据库访问口令、电子邮件账号口令、终端口令、以及个别应用程序的使用口令等等。一方面,这些口令给使用者记忆保存口令带来的很大的负担,另一方面一旦用户忘记了这些口令可能会给他们带来很大的麻烦。特别应当注意的是,如果有个别用心的人,在系统中安置一个类似于“黑客程序”(如Reveal)的小程序,就会轻而易举地取得用户口令,在这种情况下,用户口令丝毫不能保护他们的数据安全,本文就是结合上述问题谈谈Windows环境下一些口令设置程序设计的弊端。以此来提醒用户在使用口令的同时加强管理同样不可忽视。二、设计思路我们知道Windows应用程序经常使用口令对话框来输入密码,然后对输入的密码进行验证,一般的密码经常使用一些字符作为回显字符(如* % $ # @ ! ~ ^ ?),以此来表明使用者已经输入的字符数。这些对话框一般的都擦采用Windows中的ES_PASSWORD编辑框控件,一般程序编制者对编辑框的事件都不响应,采用Windows 默认的事件驱动。这样就造成了安全隐患,如果我们在程序中对当前系统的所有可见窗口进行遍历,如果发现控件的文本属性包含密码或口令,以及PASSWORD文本,就认为系统要求输入密码,不管是否是ES_PASSWORD风格,这样非ES_PASSWORD密码对话框,也可以进行截获,只要使用GetWindowsText(hWnd)就可轻而易举地取得用户输入的口令。我们知道每一个windows消息传递都经过钩子函数,通过钩子函数我们很容易拦截窗口的WM DESTROY消息,然后通过API 调用获得其密码。下面分几个方面,具体谈谈如何用钩子函数取得用户输入的口令。(一)钩子函数钩子函数是系统消息处理机制的一个入口点,通过它应用程序可以安装一个例程,来监视系统的消息传递路线,对某种特定的消息在传递到目标窗口之前进行响应。(1)钩子函数的安装 ——SetWindowsHookExSetWindowsHookEx 函数用于安装一个应用程序定义的钩子例程到钩子链中,你可以安装一个钩子例程来监视系统中的某些事件,这些事件既可以与某一特定的线程有关,也可以与系统中的所有线程有关。HHOOK SetWindowsHookEx(int idHook, // 要安装的钩子类型HOOKPROC lpfn, // 钩子例程的入口地址HINSTANCE hMod, // 应用程序的事例句柄DWORD dwThreadId // 安装钩子的线程标识);参数:idHook 指定要安装的钩子类型,这个参数可以是下列值 值 描述 WH_CALLWNDPROC 安装一个钩子例程监视传递给目标窗口例程之前的消息。详细信息请参看 CallWndProc 钩子例程. WH_CALLWNDPROCRET 安装一个钩子例程监视已被目标窗口例程处理之的消息。详细信息请参看 CallWndProcRet程. WH_CBT 安装一个钩子例程接受与计算机训练有关的消息详细信息请参看CBTProc 钩子例程 WH_DEBUG 安装一个钩子例程用于调试其他钩子例程 详细信息请参看 DebugProc 钩子例程 WH_FOREGROUNDIDLE 安装一个钩子例程用于当应用程序前台线程空闲时被调用,这个钩子对于在系统空闲时运行一些低优先权的任务特别有用。详细信息请参看 ForegroundIdleProc 钩子例程 WH_GETMESSAGE 安装一个钩子例程用于监视加入到消息队列中的消息。详细信息请参看 GetMsgProc 钩子例程 WH_JOURNALPLAYBACK 安装一个钩子例程用于投递先前被WH_JOURNALRECORD 钩子记录的消息,详细信息请参看JournalPlaybackProc 钩子例程 WH_JOURNALRECORD 安装一个钩子例程用于记录投递系统消息
文档评论(0)