我知道Win98下怎样查看, 但Win2000下要怎样才能查看星号密码?能否给示例代码?
解决方案 »
- 事件选择,WSAEventSelect ,这个程序为什么不好使???
- web服务器与客户端桌面程序通信的问题
- 如何控制输出1000HZ的声音
- 紧急求救!!!请问各位高手!!!如何实现圆角矩形窗口后,实现窗口的拖动改变大小啊!!!
- 菜鸟:求一个24位彩色图片旋转的函数代码
- 怎么访问csdn老是自动打开http://ok100.allyes.com/main/???
- ************我想让一成员函数“虚拟”+“静态”,可否?************
- MFC是微软开发的,它赚到钱了,STL是哪个公司开发的?但我们在vc里可以用,为什么不需要另外再付费?
- 对象名无效的疑惑
- com和ATL好学吗?请推荐一些中文教程(电子版的).
- 怎么转换"123456"到unsigned char*?
- 问一个用CRecordSet连MS Access的基础问题====
EM_GETPASSWORDCHAR消息保存密码屏蔽字符
用EM_SETPASSWORDCHAR取消密码字符
Sleep(20)以后再WM_GETTEXT
最后EM_SETPASSWORDCHAR恢复原来密码字符
char PsChar=SendMessage(des,EM_GETPASSWORDCHAR,0,0);
PostMessage(des,EM_SETPASSWORDCHAR,0,0);
Sleep(50);
char title[255];
SendMessage(des,WM_GETTEXT,255,long(title));
PostMessage(des,EM_SETPASSWORDCHAR,PsChar,0);
::SendMessage(GetDlgItem(IDC_EDIT)->m_hWnd, WM_GETTEXT, MAX_PATH, (LPARAM)buffer);
IDC_EDIT是密码EDIT
buffer就是你要的东东
远线程简单一些, 列一下步骤:
1. 取目标进程句柄, OpenProcess, 至少要传 PROCESS_CREATE_THREAD 和 PROCESS_VM_WRITE 权限.
2. VirtualAllocEx 建一页 4k 内存
3. WriteProcessMemory 把执行下面函数写入 alloc 来的内存.
VOID Worker(HWND hwndPwd) {
SendMessage(hwndPwd, EM_SETPASSWORDCHAR, 0, 0);
}
可以假设 user32.dll 在那个进程里地址一样. 否则稍麻烦些.
4. CreateRemoteThread, 以 alloc 返回的地址为 lpStartAddress.
5. free 内存, handle, etc
---------------------
binbin 你大概没试过你发的方法. 2k 不是 9x, 有一点密码保护.
当然你还要获得密码输入框的句柄,这个句柄的获得在DLL里进行,把它传给A就可以了。不过涉及到两个进程的通信就要读写内存映射文件了。不过这个我自己做来玩的,不知道是否适合你的情况
俺的代码在windows 2000 sp3上测试通过.将密码框属性去掉就可以使用WM_GETTEXT得到密码.
而这只需要发送一个EM_SETPASSWORDCHAR即可将其变成普通文本框.取完改回去即可.
20毫秒的时间里,一切就象没发生过,而你已经取到想要的东东.
并不需要远程线程
试试再说话,不要想当然.
MS 没有那么疏忽~ 别的进程建的密码 EDIT 是不会允许你EM_SETPASSWORDCHAR 的.
sorry.
我没注意是 PostMessage. 这点很关键了.
鼓掌ing
我也明白了,非常感谢!To 楼主:
SendMessage是把消息发送到消息队列中,并一直等到该消息执行完成后才返回。PostMessage则是把消息发送到消息队列中,但不会等待,立即返回。