得到textBox的句柄,通过api实现。GetWindowsText吧,
解决方案 »
- HttpWebRequest的效率问题
- c#的socket类能模拟java中的OutputStream类输出字符串到只有java接口的服务端么
- VS2008编写的项目怎么在VS2005中打开
- 1 摄像头如果不是免驱动的,那么用WIN API是不是也调不同摄像头? 2 视频会议类似的开发视频用什么方法传输会好一些?
- 能否让style的目标类型,指定多个类型?
- 问个ACCESS数据库绝对路径改相对路径的问题
- 求助:XML的一个问题
- Array.Copy()的疑惑
- 100分,来救我啊!
- 各位大虾:帮忙看一下!
- 本人需要做一个(税法查询)软件系统,谁要接活,大概和我给你的这个软件类似,请给我一个报价
- 怎样不让TextBox输入汉字!
2.如gujunyan(ivy) 说GetWindowsText
http://www.codeguru.com/ieprogram/SPwdSpyDemo_Src.zip
hope it helps
2,被检测的程序是普通的Widnows Form或者win32程序,被检测的筐是textbox。
3,通过WM_GETTEXT来得到密码办法,已经被微软改掉了,从2k起已经没有办法用了。
4,tjq_tang(重新开始)的也不行。
5,请用C#实现。请大家不要说原理了,贴代码在这里好了。
wm_gettext
sleep(100)
wm_setpasswordchar按顺序发送消息sendmessage,我可能写错了函数了,自己查msdn吧
char PassCharacter;
PassCharacter = SendMessage(hWindow, EM_GETPASSWORDCHAR, 0, 0); //得到PASSWORD CHARACTER;
PostMessage(hWindow, EM_SETPASSWORDCHAR, 0, 0); //取消Edit ES_PASSWORD style,
Sleep(100); //在2000下似乎必须这么做,否则不能得到密码;98下没区别;
SendMessage(hWindow, WM_GETTEXT, 1024, (LPARAM) Pass);
EditCaption->Text = Pass;
//得到密码后,恢复ES_PASSWORD style,,也可以不写后这句,这样
//密码框的密码则以明文显示;
PostMessage(hWindow, EM_SETPASSWORDCHAR, (WPARAM) PassCharacter, 0);
{
if (m_bIsCapturing)
{
ClientToScreen(&point); m_strXYPos.Format("X=%ld, Y=%ld", point.x, point.y);
m_strHwnd = _T("");
m_strWndClass = _T("");
m_strIsPassword = _T("");
m_strPassword = _T(""); CWnd* pWnd = CWnd::WindowFromPoint(point);
if (pWnd)
{
HWND hwndCurr = pWnd->GetSafeHwnd(); // Make sure that the window doesn't 'belong' to us
if ((::GetWindowThreadProcessId (GetSafeHwnd(), NULL))
!= (::GetWindowThreadProcessId (hwndCurr, NULL)))
{
m_strHwnd.Format("%ld", hwndCurr);
m_strIsPassword = gc_PasswordNo; // Get the class name
char lpClassName[255];
if (::GetClassName(hwndCurr, lpClassName, 255))
{
m_strWndClass = lpClassName; // Is this an Edit control
if (0 == m_strWndClass.CompareNoCase("EDIT"))
{
// Get the window's style
LONG lStyle = ::GetWindowLong(hwndCurr, GWL_STYLE);
if (lStyle & ES_PASSWORD)
{
m_strIsPassword = gc_PasswordYes; char szText[255];
::SendMessage(hwndCurr, WM_GETTEXT, 255, (LPARAM)szText);
m_strPassword = szText;
}
}
}
}
} UpdateData(FALSE);
} CDialog::OnMouseMove(nFlags, point);
}
我只见过在98中实现的,现在还不知道在XP中怎么实现!
这个问题我研究过,解决是没有公用的方法的,简单说一下吧,必须手工解,置顶希望也不大,你给班班发个消息试试1,旧方法,从窗口的textbox 句柄获得数据源,GetWindowsText 之类的就不说了,这个方法已经不行2,从内存中取出与textbox 同 class 的所有句柄内容,然后逆出该窗体是否是要找的目标,但因为win2k+ 密码不同软件在内存中存放的位置都不再有理可遵,所以也不能用global get char from memory,只能手工从内存中调试跟踪它的初始化偏移位置所以想做个工具软件发布那不可行,y. u can't do this 除非你要做某个软件专用的search password from memory不知哪位更有高见
这是重要的安全问题,如果允许这样的功能存在,微软会被安全专家骂死的。除非用 VXD,采用 RING 0 级的捕捉或许值得尝试。
然而做 VXD,C#(包括 .NET 平台上的任何语言)天生不行,也永远不行。