朋友写了一个WINSPY,无法获得有的密码框的密码,估计是重写了TextBox,我也写了一个TextBoxEx:
public class TextBoxEx:System.Windows.Forms.TextBox
{
public const int WM_GETTEXT=0x000d;
public TextBoxEx()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
protected override void WndProc(ref Message m)
{
if(m.Msg==WM_GETTEXT)return;
base.WndProc (ref m);
}
这样用SendMessage(hWnd,WM_GETTEXT,sb.Capacity,sb);//StringBuilder sb = new StringBuilder(1024);
无法获得文本框的Text,WM_GETTEXT被截获了
请问还有别的方法可以获得那个TextBoxEx的文本吗?
比如发送别的消息,如何反截获呢
public class TextBoxEx:System.Windows.Forms.TextBox
{
public const int WM_GETTEXT=0x000d;
public TextBoxEx()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
protected override void WndProc(ref Message m)
{
if(m.Msg==WM_GETTEXT)return;
base.WndProc (ref m);
}
这样用SendMessage(hWnd,WM_GETTEXT,sb.Capacity,sb);//StringBuilder sb = new StringBuilder(1024);
无法获得文本框的Text,WM_GETTEXT被截获了
请问还有别的方法可以获得那个TextBoxEx的文本吗?
比如发送别的消息,如何反截获呢
如果是.net写的应用程序,可以通过FindWindow,找到那个窗体句柄,Form.FromHandle()得到窗体,再用反射找到那个文本框的句柄,进尔可以直接取其.Text尔!
没有戴获wm_gettext的话,那没问题的,就是因为
if(m.Msg==WM_GETTEXT)return;
就得不到文本了
还有如果在不同进程中,Form.FromHandle()恐怕不行吧
我用Control.FromHandle()得不到不同进程中的控件
怎么多没空帮我解决啊,如果不能通过发送消息获取文本框内容,那能不能用ReadProcessMemory将另一进程的TextBox(已知句柄hWnd)的内容读到本进程的内存变量中呢?
比如QQ的密码框,我用WINSPY得到:
窗口句柄:656328 标题: 类名:Static
有个游戏的密码框:
窗口句柄:66904 标题: 类名:Edit
以上标题部份为空,即得不到文本框的内容
我是先得到文本框的句柄,然后发送WM_GETTEXT消息的,为什么不行,该如何做?
QQ的密码框连选择内容也不行,那游戏的密码框可以选择但按鼠标右键出现的菜单中的“复制”为灰色
说明屏蔽了消息WM_GETTEXT,但我改用发WM_COPY消息(当然先发EM_SETPASSWORDCHAR,清除passwordchar),粘贴板中还是得不到,郁闷
高手帮帮忙啊
我把问题改一下:
1.如何用ReadProcessMemory读取另一进程(比如记事本)中Edit的内容
2.如何用WriteProcessMemory向记事本的Edit写内容呢?
3.可以用FindwindowEx获得记事本和Edit的句柄
用GetWindowThreadProcessId得到记事本进程id,OpenProcess(...)得到记事本进程的句柄,并赋予全部权限
那WriteProcessMemory( hProcess, lpRemoteBuffer, ref buf,len,IntPtr.Zero );中的
lpRemoteBuffer呢,不会就是Edit的句柄吧(我想应该是Edit在进程中的地址,我用句柄试了好象不行)
线程注入应该可行,可用C#怎么写?
具体点,最好有C#例子
别的语言的倒是可以找到好多,C#不易实现啊
期待高手出现帮我解决:
1.如何用ReadProcessMemory读取另一进程(比如记事本)中Edit的内容
2.如何用WriteProcessMemory向记事本的Edit写内容呢?
3.可以用FindwindowEx获得记事本和Edit的句柄
用GetWindowThreadProcessId得到记事本进程id,OpenProcess(...)得到记事本进程的句柄,并赋予全部权限
那WriteProcessMemory( hProcess, lpRemoteBuffer, ref buf,len,IntPtr.Zero );中的
lpRemoteBuffer呢,不会就是Edit的句柄吧(我想应该是Edit在进程中的地址,我用句柄试了好象不行)
你这个链接我早就知道
是线程插入的三种方法
好象是用delphi写的吧,改写成C#很难,你写过吗,如果写过请给我代码行不?
谁来讲一讲内存分析的也行