为什么用sendmessage(wnd,WM_GETTEXT,1024,integer(@buf));取不到有口令字符edit的内容?(100分)

  • 主题发起人 quantum99
  • 开始时间
http://www.delphibbs.com/delphibbs/rules.asp
 
/* 来自:Kingron, 时间:2001-9-9 12:08:00, ID:617329 <br>好像是在2000中,会判断发送消息者的身份ID,如果不是本程序的,那么就会拒绝访问,<br>本程序的可以得到。 */<br><br>kingron说:不是本程序,就拒绝访问,那么将一个dll插入目标程序,在这个dll里写:<br>sendmessage(wnd,WM_GETTEXT,1024,integer(@buf));<br>就可以了。<br>下面是我一年前写的代码,翻出来给你看,能在2000/xp下取得*密码。<br>http://www.tieren.org/shellapi/download/pass2k.rar<br><br>
 
shellapi: Good! 这个方法是最好吧。<br>还可以用mouse hook (鼠标钩子)。<br>两种方法都要做 dll injection(dll注射)。
 
其实没那么麻烦<br>大家试试把SendMessage改成PostMessage试试?<br>一切都OK了,至少我这里是这样。
 
xianjun 你那儿用什么操作系统?<br>win2k/xp不行。
 
奇怪,没人试我的代码么?<br>那是执行通过的(98,2000,XP)
 
kcahcn,我记得你说过xiao_min的方法也可以的,是不是?不过不能取级别高的密码
 
级别高的??<br>什么是级别高的?<br>我只是记得当时调试的时候,好像SQL里处理容器中的EDIT的密码取不到。。。
 
to shellapi:<br>&nbsp; &nbsp;我试了你的程序,能取2000下IE的密码,试过其他方法都不行。<br>我得好好研究一下源码,太感谢了!
 
有些高优先级的系统进程更本不理会你发送的那个清标志的消息<br>不信你试试<br>只有通过欺骗系统,认为是本进程读,才能彻底地解决问题。(不可能不给自己读<br>密码框的内容吧?是不?)<br><br>不过有个特例,xp下有些保存以前输入过的密码的那种密码框。事实上这里显示出来的<br>*号已经不是本来的内容了,只有你从键盘输入些字符,才能取到这些字符。不知道<br>我这样讲你明白不。
 
to shellapi:<br>我刚下载了你的程序,嘻嘻,不太明白,MOUSE一指向。。。比如TREEVIEW,TOOLBAR之类的,<br>那边就变空白了,成了你新创建的一个窗口,MOUSE移开就又恢复,。。。这能看密码?<br>我试了IE的不行,我的也不行,呵呵<br>(XP2600,英文版)<br>
 
TO SHELLAPI:<br>哇,你让其他进程调用你的DLL,然后你的程序退出,它仍然生效。。。不爽不爽。。。
 
用shellapi的方法没问题吧。<br>用鼠标钩子我试过对msn取密码,结果----------〉不行<br>TO xiao_min : 用c写dll就没问题。<br>---<br>要从IE取得密码这些方法好像不行。<br>看看vchelp.net那里有例子。IE里的edit好像不一样
 
我说的msn是指msn messenger。 呵呵<br>看看这个 :<br>http://www.vchelp.net/source/submit/get_html_password.htm
 
kcahcn,你说有没有人能解决这个问题,用delphi写的dll可以从内存中卸掉,不然xiao_min<br>用它来做病毒怎么办?这个问题困绕了我们两年了。
 
kcahcn: <br>&nbsp; 我的是Win2KAS,我这里是可以的,取Outlook Express,Word里的密码框的文本都可以<br>&nbsp; 当然,如果你碰到的是安全性做得比较好的程序,是取不到密码框里的密码的,因为那<br>&nbsp; 根本就是*号而已。<br>&nbsp; 从IE取密码你就不能用普通的WM_消息了,而应该用IE本身提供的接口来取得其中的文本<br>&nbsp; 这在另外一个贴子里讨论过,我就不再多说一遍了。<br>
 
to shellapi:<br>在MADEFORM里改:<br>&nbsp; WM_TIMER:<br>&nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp;if FindWindow('MainHostClass',nil)&lt;&gt;0 then<br>&nbsp; &nbsp; &nbsp; &nbsp;begin<br>&nbsp; &nbsp; GetCursorPos(hPoint);<br> hParent:=WindowFromPoint(hPoint);<br>&nbsp; &nbsp; &nbsp; &nbsp; hLong:=GetWindowLong(hParent,GWL_STYLE);<br>&nbsp; &nbsp; &nbsp; &nbsp; GetWindowText(hParent,str,100);<br>&nbsp; &nbsp; &nbsp; &nbsp; if &nbsp;((hLong and ES_PASSWORD)=ES_PASSWORD) then<br>&nbsp; &nbsp; &nbsp; &nbsp; begin //是密码<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;reshow;<br>&nbsp; &nbsp; &nbsp; &nbsp; end else //不是密码<br>&nbsp; &nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if hparent&lt;&gt;myedit then hide;<br>&nbsp; &nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; &nbsp; &nbsp; oldhandle:=hparent;<br>&nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp;end;<br>
 
xiao_min 亚亚,你想得太简单了.如果这样可以,我们也不用拖两年了,<br>我还至少是个是Member of CIO ( Computer Idiot Organization )吧,<br>不会连这个都考虑不到哦。<br>只有像kcahcn说的:用c写dll才能顺利地self free.
 
嘻嘻,我这样的简单加一句,至少让主程序退出后,那些语句不再起作用了<br>总比没有的好呀
 
谢谢 xiao_min亚亚 :)<br>(注:“亚亚” 就是对我对男生的赞许。)
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部