亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi實現木馬文件傳輸代碼實例

2020-01-31 20:51:01
字體:
來源:轉載
供稿:網友

本文以實例形式講述了Delphi下木馬的文件傳輸方法的實現過程,具體步驟如下:

服務器端代碼:

unit ServerFrm;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, ExtCtrls,WinSock;type TfrmMain = class(TForm)  Panel1: TPanel;  Label1: TLabel;  edtPort: TEdit;  Panel2: TPanel;  stabar: TStatusBar;  SaveDialog: TSaveDialog;  btnListen: TButton;  btnReceive: TButton;  btnStop: TButton;  btnExit: TButton;  procedure FormCreate(Sender: TObject);  procedure btnExitClick(Sender: TObject);  procedure FormClose(Sender: TObject; var Action: TCloseAction);  procedure btnListenClick(Sender: TObject);  procedure btnReceiveClick(Sender: TObject);  procedure btnStopClick(Sender: TObject); private  { Private declarations } public  { Public declarations }  StopTrans:Boolean; //是否停止傳送開關  InTrans:Boolean; //表示正在接收文件  Server:TSocket; //定義服務器端的socket句柄  //自定義過程接收文件  procedure RecvFile(FileName:String); end;var frmMain: TfrmMain;const BlockLen=1024*4;implementation{$R *.dfm}procedure tfrmmain.RecvFile(FileName:String);var Ftrans:file of Byte; Recelen:Integer; Blockbuf:array[0..BlockLen-1] of Byte; RecvSocket:TSocket; ra:Sockaddr_in; ra_len:integer;begin ra_len:=sizeof(ra); Recvsocket:=accept(server,@ra,@ra_len); assignFile(Ftrans,filename); rewrite(ftrans); stoptrans:=false; intrans:=true; recelen:=recv(recvsocket,Blockbuf,BlockLen,0); while (recelen>0) and (not StopTrans) do begin  BlockWrite(Ftrans,Blockbuf[0],BlockLen);  application.ProcessMessages;  recelen:=recv(recvsocket,Blockbuf,Blocklen,0);  if stoptrans then  begin   CloseFile(Ftrans);   CloseSocket(RecvSocket);   InTrans:=False;   MessageBox(Handle,'停止傳輸!','提示',MB_OK);   EXIT;  END; END; //關閉文件,接收的SOCKET CloseFile(Ftrans); Closesocket(recvsocket); InTrans:=False; if (Recelen=SOCKET_ERROR) then  messagebox(handle,'傳輸異常終止!','提示',MB_OK) ELSE  MESSAGEBOX(HANDLE,'客戶端已經關閉連接1,文件可能已經傳送完畢了!','提示',MB_OK);end; procedure TfrmMain.FormCreate(Sender: TObject);var aWSAData:TWSAData;begin if WSAStartup($0101,aWSAData)<>0 then  raise Exception.Create('不能啟動WinSock動態鏈接庫'); messageBox(Handle,aWSAdata.szDescription ,'WinSock動態鏈接庫版本',mb_ok);end;procedure TfrmMain.btnExitClick(Sender: TObject);begin Close;end;procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);begin if InTrans then  if MessageBox(handle,'正在接收文件,停止嗎?','提示',MB_YESNO)=IDNO then   abort; IF SERVER<>INVALID_SOCKET THEN   CLOSESOCKET(SERVER);  //釋放winsock動態鏈接庫所創建的資源 if WSACleanup<>0 then  messagebox(handle,'清除Winsock動態鏈接庫錯誤!','提示',MB_OK) ELSE  messagebox(handle,'清除Winsock動態鏈接庫成功!','提示',MB_OK);end;procedure TfrmMain.btnListenClick(Sender: TObject);var ca:SOCKADDR_IN;begin //創建服務器端SOCKET Server:=Socket(PF_INET,SOCK_STREAM,IPPROTO_IP); IF server=invalid_socket then begin  stabar.SimpleText :='創建接收SOCKET錯誤1';  exit; end; //綁定服務器端SOCKET ca.sin_family :=PF_INET; CA.sin_port :=htons(strtoint(trim(edtPort.Text ))); ca.sin_addr.S_addr :=INADDR_ANY; if bind(server,ca,sizeof(ca))=socket_error then begin  stabar.SimpleText :='綁定socket錯誤,請更改接收端口';  closeSocket(server);  exit; end else  stabar.SimpleText :='綁定接收端socket成功!'; //開始監聽 listen(server,5); btnlisten.Enabled :=False; btnstop.Enabled :=true;end;procedure TfrmMain.btnReceiveClick(Sender: TObject);begin if (server=INVALID_SOCKET) THEN BEGIN  MESSAGEBOX(HANDLE,'還沒有進行監聽,請先進行監聽!','提示',MB_OK);  EXIT; END; IF SaveDialog.Execute THEN  RECVFILE(SaveDialog.FileName );  end;procedure TfrmMain.btnStopClick(Sender: TObject);begin STOPTRANS:=TRUE; IF SERVER<>INVALID_SOCKET THEN cLOSESOCKET(SERVER); //此處需要說明 server:=INVALID_SOCKET; bTNSTOP.Enabled :=fALSE; BTNlISTEN.Enabled :=TRUE;end;end.

客戶端代碼:

unit ClientFrm;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls,WinSock;type TfrmMain = class(TForm)  opendfile: TOpenDialog;  Label1: TLabel;  edtIP: TEdit;  Label2: TLabel;  edtPort: TEdit;  StatusBar: TStatusBar;  btnConnect: TButton;  btnSend: TButton;  btnStop: TButton;  btnExit: TButton;  ProgressBar: TProgressBar;  procedure FormCreate(Sender: TObject);  procedure btnExitClick(Sender: TObject);  procedure FormClose(Sender: TObject; var Action: TCloseAction);  procedure btnConnectClick(Sender: TObject);  procedure btnSendClick(Sender: TObject);  procedure btnStopClick(Sender: TObject); private  { Private declarations }   Client:TSocket; public  { Public declarations }  StopTrans:Boolean; //是否停止發送的開發  InTrans:Boolean;  //表示是否正在傳送文件  procedure TransFile(FileName:String); //傳遞文件的過程 end; const BlockLen=1024*4; //每次發送的最大數據量var frmMain: TfrmMain;implementation{$R *.dfm}procedure TfrmMain.TransFile(FileName:String); //傳遞文件的過程var Ftrans:file of Byte; Flen:integer; BlockNum,RemainLen:integer; BlockBuf:array[0..BlockLen-1] of Byte; i:integer; SendLen:Integer;begin assignFile(Ftrans,filename); reset(Ftrans); Flen:=FileSize(Ftrans); BlockNum:=Flen div BlockLen; progressBar.Max :=1+BlockNum; RemainLen:=Flen mod BlockLen; StopTrans:=False; InTrans:=True; SendLen:=1; for i:=0 to BlockNum-1 do begin  if (StopTrans) or (SendLen<=0) then Break;  BlockRead(Ftrans,Blockbuf[0],BlockLen);  SendLen:=Send(Client,Blockbuf,BlockLen,0);  ProgressBar.Position :=i;  Application.processMessages; end; if StopTrans then begin  CloseFile(Ftrans);  InTrans:=False;  StatusBar.SimpleText :='';  MessageBox(Handle,'停止傳輸!','提示',mb_ok);  progressbar.Position :=0;  exit; end; if (SendLen<=0) then begin  CloseFile(Ftrans);  InTrans:=False;  StatusBar.SimpleText :='';  messagebox(handle,'傳出異常終止!','提示',MB_OK);  progressBar.Position :=0;  exit; end; if remainLen>0 then begin  BlockRead(Ftrans,BlockBuf[0],RemainLen);  SendLen:=send(client,BlockBuf,Remainlen,0);  if (sendLen<=0) then  begin   closeFile(Ftrans);   InTrans:=False;   StatusBar.SimpleText :='';   messagebox(handle,'傳輸異常終止!','提示',mb_ok);   progressBar.Position :=0;   exit;  end; end; progressBar.Position :=ProgressBar.Max ; CloseFile(Ftrans); InTrans:=False; StatusBar.SimpleText :=''; messagebox(handle,'傳輸完成!','提示',mb_ok); progressbar.Position :=0;end;procedure TfrmMain.FormCreate(Sender: TObject);var aWSAData:TWSAData;begin if WSAStartup($0101,aWSAData)<>0 then  raise Exception.Create('不能啟動WinSock動態鏈接庫'); messageBox(Handle,aWSAdata.szDescription ,'WinSock動態鏈接庫版本',mb_ok);end;procedure TfrmMain.btnExitClick(Sender: TObject);begin Close;end;procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);begin if InTrans then  if MessageBox(handle,'正在傳輸文件,停止嗎?','提示',MB_YESNO)=IDNO then   abort;  //釋放winsock動態鏈接庫所創建的資源  if WSACleanup<>0 then   messagebox(handle,'清除Winsock動態鏈接庫錯誤!','提示',MB_OK)  ELSE   messagebox(handle,'清除Winsock動態鏈接庫成功!','提示',MB_OK);  CloseSocket(Client);end;procedure TfrmMain.btnConnectClick(Sender: TObject);var ca:SOCKADDR_IN; hostaddr:u_long;begin Client:=Socket(PF_INET,SOCK_STREAM,IPPROTO_IP); IF CLIENT=INVALID_SOCKET THEN BEGIN  StatusBar.SimpleText :='為連接遠程服務器端創建COSKET錯誤!';  exit; end; ca.sin_family :=PF_INET; CA.sin_port :=HTONS(STRTOINT(TRIM(EDTpORT.Text ))); HOSTADDR:=INET_ADDR(PCHAR(TRIM(EDTIP.Text ))); //判斷IP是否合法 if (hostaddr= -1) then begin  StatusBar.SimpleText :='主機IP地址:'+trim(edtip.Text )+'錯誤';  exit; end else  ca.sin_addr.S_addr :=hostaddr; //連接服務器 if connect(Client,ca,sizeof(ca))<>0 then begin  StatusBar.SimpleText :='連接服務器端SOCKET錯誤!';  exit; end else  StatusBar.SimpleText :='連接遠程SOCKET成功!';end;procedure TfrmMain.btnSendClick(Sender: TObject);begin if (opendfile.Execute ) and (FileExists(opendfile.FileName )) then  transFile(opendfile.FileName );end;procedure TfrmMain.btnStopClick(Sender: TObject);begin Stoptrans:=True;end;end. 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人在线网站| 久久999免费视频| 久久成人免费视频| 九九九热精品免费视频观看网站| 亚洲美腿欧美激情另类| 日韩视频免费观看| 92国产精品久久久久首页| 久久人人爽人人爽爽久久| 成人欧美一区二区三区在线湿哒哒| 国产精品最新在线观看| 欧美成人一二三| 欧美日韩午夜激情| 久久噜噜噜精品国产亚洲综合| 亚洲第一精品福利| 岛国视频午夜一区免费在线观看| 亚洲人成77777在线观看网| 欧美午夜美女看片| 中文字幕日韩在线观看| 国产精品高潮在线| 欧美激情视频一区| 日韩亚洲欧美成人| 欧美成人免费视频| 日韩视频在线免费| 欧美极度另类性三渗透| 欧美激情在线观看| 91网站在线看| 这里只有精品视频| 性视频1819p久久| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲精品欧美极品| 欧美日韩中文字幕在线视频| 欧美激情亚洲自拍| 欧美激情亚洲精品| 国产欧美日韩最新| 国产ts人妖一区二区三区| 韩剧1988免费观看全集| 98视频在线噜噜噜国产| 一区二区日韩精品| 91精品国产91久久久久久最新| 91精品国产高清自在线| 色综合老司机第九色激情| 亚洲专区中文字幕| 97热在线精品视频在线观看| 97不卡在线视频| 欧美精品一区在线播放| 久久成人在线视频| 日韩最新av在线| 日韩av免费看| 久热爱精品视频线路一| 欧美资源在线观看| 欧美激情国产精品| 亚洲国产精品久久久久| 亚洲国产成人一区| 欧美精品一区三区| 2019中文字幕在线免费观看| 日本在线观看天堂男亚洲| 欧美日韩成人网| 色噜噜久久综合伊人一本| 日韩欧美中文第一页| 高清视频欧美一级| 欧美日韩亚洲国产一区| 国产综合视频在线观看| 免费成人高清视频| 尤物精品国产第一福利三区| 久久精品国产清自在天天线| 亚洲日韩中文字幕在线播放| 国产精品爱啪在线线免费观看| 亚洲加勒比久久88色综合| 亚洲在线观看视频| 久久这里只有精品99| 亚洲精品一区在线观看香蕉| 国产主播喷水一区二区| 色婷婷久久av| 在线亚洲国产精品网| 午夜精品久久久久久久男人的天堂| 91精品国产99| 777精品视频| 日韩一区二区av| 欧美性猛交xxxx富婆| 久久精品一区中文字幕| 日韩av免费一区| yw.139尤物在线精品视频| 懂色av中文一区二区三区天美| 欧美日韩中文字幕日韩欧美| 亚洲欧洲在线播放| 亚洲欧美激情视频| 亚洲第一精品夜夜躁人人爽| 日韩人体视频一二区| 国产精品免费久久久| 欧洲精品毛片网站| 欧美成人在线影院| 国产亚洲欧美日韩精品| 91精品国产精品| 中文字幕精品一区二区精品| 久久久久久欧美| 日韩精品福利在线| 亚洲国产精品免费| 久久久久久国产精品久久| 亚洲精品99久久久久中文字幕| 国产成人福利夜色影视| 亚洲日韩欧美视频一区| 久久精品中文字幕| 中文字幕在线国产精品| 777精品视频| 成人国产在线视频| 欧美亚洲国产视频| 精品人伦一区二区三区蜜桃免费| 免费97视频在线精品国自产拍| 国产精品香蕉国产| 欧美另类精品xxxx孕妇| 亚洲最新在线视频| 午夜精品久久久久久久男人的天堂| 91精品在线观看视频| 国产亚洲在线播放| 亚洲伊人久久大香线蕉av| 国产精品草莓在线免费观看| 国产精品黄色影片导航在线观看| 免费不卡欧美自拍视频| 欧美激情va永久在线播放| 精品一区二区三区三区| 在线精品国产成人综合| 国产综合在线观看视频| 久久久久久久久久国产| 日韩av在线网站| 亚洲欧美成人一区二区在线电影| 亚洲精品日韩av| 91精品国产网站| 日韩久久免费视频| 成人妇女淫片aaaa视频| 久热爱精品视频线路一| 亚洲在线一区二区| 国产精品美女主播在线观看纯欲| 欧美亚洲免费电影| 亚洲free嫩bbb| 亚洲精品电影久久久| 国产亚洲人成a一在线v站| 国产一区二区三区欧美| 亚洲一区二区在线| 亚洲国产另类 国产精品国产免费| 亚洲国产精品va| 欧美www在线| 91精品久久久久久| 国产精品丝袜久久久久久高清| 亚洲国产精品久久久久久| 久久久天堂国产精品女人| 国内精品久久久久久影视8| 精品国产乱码久久久久久天美| 亚洲高清久久久久久| 久久精品国产综合| 欧美中文在线观看国产| 91欧美激情另类亚洲| 欧美日韩一二三四五区| 成人av在线天堂| 91在线观看免费高清完整版在线观看| 日韩欧美国产成人| 国产精品久久久久久久久男| 日韩中文字幕网站| 亚洲精品国产综合久久| 久久久亚洲影院你懂的| 久久精品国产一区二区三区| 成人av在线天堂| 久久视频精品在线| 久久天天躁夜夜躁狠狠躁2022| 在线看片第一页欧美|