首页
社区
课程
招聘
[原创]支持Win7的星号密码查看器的实现
发表于: 2012-12-17 11:12 36099

[原创]支持Win7的星号密码查看器的实现

2012-12-17 11:12
36099
星号密码查看器大家肯定不陌生吧,但是在Win7下要想不用注入DLL,不用Windows钩子的确有点困难,最近简单了逆向了一下"Win7星号密码查看器",终于把原理搞清楚了,希望发出来能对大家有帮助

大家都知道在本进程内调用WM_GETTEXT和GetWindowText就能获取密码框的文本,而如果要跨进程WM_GETTEXT和GetWindowText就不管用了
在xp我们可以这样做,这也算微软的一个漏洞吧,没有判断是不是本进程发送的EM_SETPASSWORDCHAR消息
chPassChar = (TCHAR)SendMessage (hwndPoint, EM_GETPASSWORDCHAR, 0, 0);//获取密码字符
					
SendMessage(hwndPoint, EM_SETPASSWORDCHAR, 0, 0);//取消密码属性
SendMessage(hwndPoint, WM_GETTEXT, sizeof(szTitle) / sizeof(TCHAR), (LPARAM)szTitle);//获取密码文本
SendMessage(hwndPoint, EM_SETPASSWORDCHAR, 0, chPassChar);//设置密码字符


但在Win7上,上面的代码已经不能使用了,即使你用SetWindowLong取消掉ES_PASSWORD样式也行不通。虽然SetWindowLong不行,我们还有其它方法,这也算微软太马虎的吧
事实证明只要文本框包含ES_PASSWORD样式,SetWindowLong就取消不了ES_PASSWORD,但SetWindowWord可以
dwStyle = GetWindowLong(hwndPoint, GWL_STYLE);//获取密码框原来样式
SetWindowWord(hwndPoint, GWL_STYLE, 0);//取消所有样式
SetWindowLong(hwndPoint, GWL_STYLE, dwStyle & ~ES_PASSWORD);//去掉密码属性
					
SendMessage(hwndPoint, WM_GETTEXT, sizeof(szTitle) / sizeof(TCHAR), (LPARAM)szTitle);//没有了ES_PASSWORD属性WM_GETTEXT可以成功
										
SetWindowLong(hwndPoint, GWL_STYLE, dwStyle);//还原密码框原来样式


顺便发个我自己写星号密码查看器

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
最新回复 (51)
雪    币: 220
活跃值: (117)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
好东西 留个爪印
以后也许用得上.
win7下可用.如果对方进程没有高权 那么是不是自己也不需要高权?
2012-12-17 11:25
0
雪    币: 284
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好东西啊,mark!!
2012-12-17 11:51
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不错,收藏一下!!
2012-12-17 15:49
0
雪    币: 27
活跃值: (90)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
5
thanks for share : )
2012-12-17 16:48
0
雪    币: 102
活跃值: (1845)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
mark,留着以后用。。。
2012-12-17 17:14
0
雪    币: 45
活跃值: (55)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
学习了,微软真是啊。。改了这个不改那个
2012-12-17 17:19
0
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
8
前排站位,谢谢楼主分享!
2012-12-17 21:33
0
雪    币: 41
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
条条罗马通大陆
2012-12-17 21:56
0
雪    币: 175
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
SetWindowWord(hwndPoint, GWL_STYLE, 0);//取消所有样式
SetWindowLong(hwndPoint, GWL_STYLE, dwStyle & ~ES_PASSWORD);//去掉密码属性
直接这样不行吗?
SetWindowWord(hwndPoint, GWL_STYLE, dwStyle & ~ES_PASSWORD);
2012-12-17 23:11
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习了 以后可能会用
2012-12-17 23:14
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
不知道楼主在哪个软件上试验的,我试验了下QQ 迅雷 酷狗 阿里旺旺 keypass  等等 均告失败
2012-12-17 23:16
0
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
MARk下。。。。
2012-12-17 23:58
0
雪    币: 3149
活跃值: (66)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
谢谢分享,下载收藏!
2012-12-18 00:07
0
雪    币: 159
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
好使~
您输入的信息太短,您发布的信息至少为 6 个字符。
2012-12-18 09:34
0
雪    币: 292
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
应该是可以的,你可以试试看
2012-12-18 10:33
0
雪    币: 2190
活跃值: (981)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
    要是QQ有这么好弄就要乱了
2012-12-18 11:05
0
雪    币: 763
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
QQ密码啥不能识别?
2012-12-18 12:24
0
雪    币: 1579
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
  都是牛人啊,我什么时候才能追上你们的水平啊
2012-12-18 21:21
0
雪    币: 190
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
不行哈,还是显示Save_password
2012-12-18 23:17
0
雪    币: 6763
活跃值: (2590)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
很不错,原理和成品起飞,赞赏和顶共一回复。
2012-12-18 23:42
0
雪    币: 6763
活跃值: (2590)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
少年,你太天真了。如果QQ能这样搞到,也实在是太那个啥了。QQ这些都是有自己的保护的。
2012-12-18 23:43
0
雪    币: 45
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
QQ用的自己的界面库,不是微软的控件
你可以去搜一下
2012-12-18 23:46
0
雪    币: 484
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
支持 收藏了
2012-12-19 12:58
0
雪    币: 31
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
25
这些软件的控件不是系统中的, 所以可能发送的并不是PASSWORD消息.
2012-12-19 13:27
0
游客
登录 | 注册 方可回帖
返回
//