忙里偷闲, 在看雪论坛上面看到有人发布了一个"Win7星号密码探测工具", 发现"有那么一点"小用处.
用处不大的原因是:这个程序的的能力相当有限, 只能查看一部分安全性不高的软件的密码框里面的程序,
如果你要拿它来看QQ的密码, 想当然, 那是不可能了.
程序使用到了一种非常古老的技术来实现获取其它进程密码框的内容:远程线程注入后,使用WM_GETTEXT消息来获取
指定Edit的内容. 之所以说非常古老, 是因为这种方法早在2003年就有一牛人在CodeProject上面发表了这样的文章,
一篇非常经典, 带领许多人入门的文章:
Three Ways To Inject Your Code Into Another Process
我的这个程序大部分代码来自上面的文章, 不过基本全部是我自己重新写的, 只写了核心部分, 实现了功能即可. 也算是
我学习学习远程线程注入的方法.
工作原理:
大家都知道, 在当前进程内通过发送WM_GETTEXT消息给某控件, 就可以取得控件的文本, 但是, 当你取得不属于当前
进程的控件句柄, 想要获取其文本的时候, 你认为可能吗? 早在Win98之时, 这是可能的, 不过到了后面的Win2000, WinXP,
这种方法也能用, 但是, 如果EDIT控件加上了ES_PASSWORD属性后, 这种方法就失效了...
所以作者提到的办法就是注入一个线程到远程进程, 并执行WM_GETTEXT, 并使远程线程与当前进程进程间通信, 取得密码.
之所以能够取得密码, 是因为取密码的工作已经交给了远程线程, 远程线程是运行在远程进程的地址空间内的, 属于同一进程,所以没问题.
效果图: