标题：folder.htt
病毒简介
如果你发现你的硬盘里存在大量的Desktop.ini和Folder.htt，那么，祝贺你，你的机器已经感染了欢乐时光病毒了！
别名：VBS/Redlof.A, HTML.Redlof.A 
传播范围：低 
破坏性：低 
蔓延性：中 
该病毒还进入了2002年度十大流行病毒排行榜。破坏性不大。根据网络提供的杀毒信息，下载金山毒霸专杀工具，大小为56KB，问题可解决。
病毒感染过程
VBS.KJ是一个感染html/htm、jsp、vbs、php、asp的脚本类病毒。和欢乐时光“VBS.HappyTime”一样，该病毒采用VBScript语言编写，在互联网上通过电子邮件进行传播，也可以通过文件感染；感染后的机器系统资源被大量消耗，速度变慢；利用Windows系统的“资源管理器”进行寄生与感染。 然而，与欢乐时光相比，VBS.KJ 病毒显然经过改进。首先，每次感染都会进行一次变形，可以逃过普通的特征码匹配查找方法；其次，该病毒不会主动发送电子邮件！而是修改系统中 Microsoft Outlook Express、Microsoft Outlook 2000/XP 的设置，采用html格式的信纸来撰写邮件，病毒感染全部信纸！当发送邮件时病毒会附在邮件中，隐蔽性更强！第三，会感染 html/htm、jsp、vbs、php、asp等格式的文件，不会删除系统文件。
病毒生成和修改的文件
1、在每个检查到的文件夹下生成desktop.ini和folder.htt文件(这两个文件控制了文件夹在资源管理器中的显示视力)。 
2、在%Windows%\web和%Windows%System32中生成kjwall.gif。 
3、在Windows 9X系统中，生成%Windows%\System\Kernel.dll文件；在Windows 2000/XP中生成%Windows%\System\Kernel32.dll 文件。 
4、感染htt文件，将病毒附加在其中；感染html/htm、jsp、vbs、php、asp，用病毒替换其内容。
病毒对注册表的修改
1、在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\下增加 Kernel32 键值，使病毒随系统启动； 
2、修改HKEY_CLASSES_ROOT\dllFile\，改变dll文件的打开方式； 
3、修改HKEY_CURRENT_USER\Identities\"&UserID&"\Software\Microsoft\Outlook Express\" & OEVersion&"\Mail\Compose Use Stationery"为1，即采用信纸；修改 HKEY_CURRENT_USER\Identities\"&UserId&"\Software\Microsoft\Outlook Express\"&OEVersion&"\Mail\Stationery Name"指向信纸文件； 
4、修改HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Outlook\Options\Mail相关内容，使Outlook 2000采用信纸来撰写邮件； 
5、修改HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Outlook\Options\Mail相关内容，使Outlook XP采用信纸撰写邮件；
病毒感染的标志
1、在注册表HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\下存在Kernel32键值，并指向Kernel.dll或者Kernel32.dll文件； 
2、系统中大量存在desktop.ini和folder.htt； 
3、在system目录下存在kjwall.gif文件； 
病毒清除方法
手工清除（难度较大，建议采用杀毒软件杀毒） 
1、打开注册表，删除 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\Kernel32键值；参照其他机器，恢复HKEY_CLASSES_ROOT\dllFile\下键值；参照其他机器，恢复HKEY_CURRENT_USER\Identities\"&UserID&"\Software\Microsoft\Outlook Express\"&OEVersion&"\Mail\下相关键值；参照其他机器，恢复HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Outlook\Options\Mail\下相关键值；参照其他机器，恢复HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Outlook\Options\Mail\下相关键值； 
2、删除文件（建议在DOS状态下或者使用第三方文件管理系统，如Win Commander等）参照其他机器，恢复%Windows%\web目录下folder.htt 文件； 
删除Kernel32.dll或者Kernel.dll文件；删除kjwall.gif； 
查找所有存在KJ_start字符串的文件，删除文件尾部的病毒代码；
folder.htt病毒代码(VBS/KJ)
病毒源代码比较长，请参考新欢乐时光病毒源码
刚装好的windows只有一个folder.htt，在\windows\web\里面，如果使用web浏览方式，那么打开一个文件夹浏览，folder.htt就从\windows\web\里复制到当前文件夹，并根据当前文件夹的具体设置相应更改，这样每个文件夹都可以保持自己的web风格了。有人报告他的电脑中有很多folder.htt文件，这是正常的，你浏览过多少个文件夹，就会生成多少新的folder.htt，不必恐慌！
folder.htt是一个超文本模板文件，用”记事本”打开可以看到满篇的都是HTML标签，不懂HTML就不要改了：）既然是就超文本模板文件支持所有HTML格式和语法，也支持各类VBscript、javascript和java applet，攻击folder.htt的病毒，比如欢乐时光就是利用Vbscript来达到目的的。成也萧何，败也萧何，HTML可以被坏人利用也可以为我们自己所用。下面将几个例子，每个例子有适用windows版本，其他版本没试过，不保证适用：（
1、日历（WIN98SE下成功）：
在个人网页中经常能看到精彩的日历，其实在”我的电脑”或”资源管理器”中也可看到。一步一步照此做：
（1）在“我的电脑”中点击“查看”菜单，然后将其中的“按Web页（W）”勾选上；
（2）再次点击“我的电脑”中的”查看”菜单，然后点击“文件夹选项”，在弹出的对话框中选择“查看”标签，在“高级设置”中选“显示所有文件”；
（3）记事本打开C:\WINDOWS\WEB\Folder.htt，找到HERE'S A GOOD PLACE TO ADD A FEW LINKS OF YOUR OWN。
（4）加入如下代码：
<script LANGUAGE="JavaScript">
<!--
setCal()
function getTime() {
var now = new Date()
var hour = now.getHours()
var minute = now.getMinutes()
now = null
var ampm = "" 
if (hour >= 12) {
hour -= 12
ampm = "下午"
} else
ampm = "上午"
hour = (hour == 0) ? 12 : hour
if (minute < 10)
minute = "0" + minute
return hour + ":" + minute + " " + ampm
}
function leapYear(year) {
if (year % 4 == 0) 
return true 
return false
}
function getDays(month, year) {
var ar = new Array(12)
ar[0] = 31 
ar[1] = (leapYear(year)) ? 29 : 28
ar[2] = 31 
ar[3] = 30 
ar[4] = 31 
ar[5] = 30 
ar[6] = 31 
ar[7] = 31 
ar[8] = 30 
ar[9] = 31 
ar[10] = 30
ar[11] = 31
return ar[month]
}
function getMonthName(month) {
var ar = new Array(12)
ar[0] = "1月"
ar[1] = "2月"
ar[2] = "3月"
ar[3] = "4月"
ar[4] = "5月"
ar[5] = "6月"
ar[6] = "7月"
ar[7] = "8月"
ar[8] = "9月"
ar[9] = "10月"
ar[10] = "11月"
ar[11] = "12月"
return ar[month]
}
function setCal() {
var now = new Date()
var year = now.getYear()
if (year<2000)
year=1900+year;
var month = now.getMonth()
var monthName = getMonthName(month)
var date = now.getDate()
now = null
var firstDayInstance = new Date(year, month, 1)
var firstDay = firstDayInstance.getDay()
firstDayInstance = null
var days = getDays(month, year)
drawCal(firstDay + 1, days, date, monthName, year)
}
function drawCal(firstDay, lastDate, date, monthName, year) {
var headerHeight = 50 
var border = 2 
var cellspacing = 4 
var headerColor = "midnightblue" 
var headerSize = "-1" 
var colWidth = 50
var dayCellHeight = 10
var dayColor = "darkblue"
var cellHeight = 20
var todayColor = "red"
var timeColor = "purple"
var text = "" 
text += '<CENTER>'
text += '<TABLE BORDER=1' + ' CELLSPACING=0' + 'style="font-size: 9pt">'
text += '<TH COLSPAN=7 HEIGHT=' + headerHeight + '>' 
text += '' 
text += year+'年'+ monthName + '日历' 
text += '' 
text += '</TH>'
var openCol = '<TD WIDTH=' + colWidth + ' HEIGHT=' + dayCellHeight + '>'
openCol += '<FONT COLOR="' + dayColor + '">'
var closeCol = '</FONT></TD>'
var weekDay = new Array(7)
weekDay[0] = "星期天"
weekDay[1] = "星期一"
weekDay[2] = "星期二"
weekDay[3] = "星期三"
weekDay[4] = "星期四"
weekDay[5] = "星期五"
weekDay[6] = "星期六"
text += '<TR ALIGN="center" VALIGN="center" style="font-size: 9pt">'
for (var dayNum = 0; dayNum < 7; ++dayNum) {
text += openCol + weekDay[dayNum] + closeCol 
}
text += '</TR>'
var digit = 1
var curCell = 1
for (var row = 1; row <= Math.ceil((lastDate + firstDay - 1) / 7); ++row) {
text += '<TR ALIGN="right" VALIGN="top" style="font-size: 9pt">'
for (var col = 1; col <= 7; ++col) {
if (digit > lastDate)
break
if (curCell < firstDay) {
text += '<TD></TD>';
curCell++
} else {
if (digit == date) { 
text += '<TD HEIGHT=1>'
text += '<FONT COLOR="' + todayColor + '">'
text += digit
text += '</FONT><BR>'
text += '<FONT COLOR="' + timeColor + '" SIZE=2 style="font-size: 9pt">'
text += '<CENTER>' + getTime() + '</CENTER>'
text += '</FONT>'
text += '</TD>'
} else
text += '<TD HEIGHT=' + cellHeight + '>' + digit + '</TD>'
digit++
}
}
text += '</TR>'
}
text += '</TABLE>'
text += '</CENTER>'
document.write(text) 
}
//-->
</script>
（4）好了，大功告成！这一切都是你自己动手做的哦，尽情的陶醉吧！（9）把刚才改过的Folder.htt拷贝一份到C盘根目录下，这就可以一劳永逸了，打开“资源管理器”看看，哈哈，也有你的劳动成果！赶快试试吧！
2、自己的照片（winme成功）
在你的Folder.htt找到URL（wvleft.gif），wvleft.gif（就是上面那张图）更换成你所要的路径和文件名即可，比如美女的照片，例如：d:\PubWeb\Photo\01.bmp改为file://d:/ PubWeb/Photo/01.bmp即可。还有就是src="wvline.gif"，同理修改wvline.gif（下面那根线）。天天看她，呵呵，口水流了一键盘。
其他你在网页上看到的效果都可以在Folder.htt上实现，只要你耐心修改代码。