|
共有评论5条
当前显示最后5条评论
|
| kinneng |
2006/6/4 11:45:29 |
很好,我也做了一个,将输入的按键码,通过一个随机表,即时转换成其它码, 内存根本不保留原数据,取密码的时候,通过即时运算获得结果,看看老兄的思路。 |
| shotgun007 |
2006/6/4 18:17:00 |
这个控件我是接管了TEdit的几个消息,比如:EM_SetPasswordChar、WM_GetText等,这是通用密码查看器必须要使用的,对付这类查看器当然没有问题了。不过,如果用远程注入的方法,在主线程内部直接调用Text属性还是可以获取密码的。所以,最严谨的思路应该是:
1、单独开辟真实文本存储区,比如:在FRealText成员中存储密码; 2、接管TEdit所有文本输入途径,包括:按键、粘贴、拷贝等; 3、实现私有的文本Change方法,在FRealText中保存密码,而在FText中 保存等长的FPasswordChar; 4、提供一个允许访问的随机ID生成方法,并提供Add(ID)方法,需要访 问属性RealText的必须提供自己的ID,访问方法为:RealText(ID): string; 只有允许的ID才能访问,这样,既使是注入的线程也不能访问了,而正常的 Text属性被重载后返回的是等长的PasswordChar,没有用的。
我就说这么多,其实还有很多可以扩充的,哪位朋友有兴趣可以试试。 |
| kinneng |
2006/6/4 21:57:11 |
| 我做了2和部分的3,在我的控件内,没有一处保留真实内容的,这个控件会放在控件包内,连同一个数据表格,两个下拉框,是做进销存的好东西。 |
| shotgun007 |
2006/6/5 9:49:19 |
TO:Kinneng
能把你的代码给我一份吗,谢谢。我的邮箱:dzh@inleo.com |
| shotgun007 |
2006/6/6 4:53:01 |
| 不好意思,由于我的疏忽,在TPasswordEdit创建的时候,缺省的把FReloadTimer置为Enabled,造成,Text属性开始时会被赋值为空,现已修正,并加上了控件的安装位图,作为更新版本v1.0.1来发布,已经上传,请站长及时处理。 |
| 我要发表评论 |
查看全部评论 |