通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 红客教程 >> 网络编程 >> 文章正文
自己利用BCB写病毒专杀
责任编辑:酷酷の鱼   更新日期:2007-12-12
 

来源:灰狐's Blog

注:本文已发表在2007年《黑客防线》第11期,转载请注明出处!

话说某天晚上,小菜我写代码写的煞是心烦,刚想放松一会儿,任务栏里的企鹅图标就不停地叫了起来,MM求救:电脑中毒了。
她的卡巴已经查到了病毒,但没有杀掉。根据扫描提示,很快在百度上找到了答案,司机报警的文件名为algsrvs.exe,经查得知是fun.xls.exe病毒,tel.xls.exe的变种之一。网上给出了一个比较完整的查杀方法,主要症状如下:
1、在“我的电脑”中双击任意驱动器时,会在新窗口中打开此驱动器;
2、不能显示隐藏文件;
3、右击任一驱动器时,在快捷菜单中的第一项显有“Auto”命令;
查杀方法:
第一步:在“任务管理器”中结束“Excel”程序(也就是algsrvs.exe进程);
第二步:删除如下四个文件:
C:\Windows\ufdata2000.log
C:\Windows\System32\algsrvs.exe
C:\Windows\System32\msfun80.exe
C:\Windows\System32\msime82.exe
第三步:在注册表在搜索“fun.xls.exe”项值,然后一一删除;
第四步:打开注册表,找到如下项
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
Explorer\Advanced\Folder\Hidden\SHOWALL,将“CheckedValue”项删除,然后新建 一个同名的DWORD值项,设其值为“1”;
第五步:在“文件夹选项”在中选择“显示所有文件和文件夹”,取消“隐藏受保护的操作系统 文件(推荐)”的选择;
第六步:打开“我的电脑”,逐一删除各驱动器下名为“AUTORUN.EXE”和“fun.xls.exe”的这两个文件(注意,一定不能用双击打开,右击各驱动器选择“打开”命令来打开);最后重新启动计算机就大功告成了!
上面的方法讲的很详细,我根据这些提示一步步地很快就搞定了,也没什么麻烦的。不过最后她说了句:“这是实验室的电脑,我U盘上的病毒估计还在,回去把自己电脑感染下自己学习学习。”
当即晕倒,万一没搞定我岂不得累死?因为根据她的说法:她寝室同学都在用她的U盘......这可不是开玩笑的,跟女生讲电脑真的累死人......。
二话不说,立马拖出咱的RAD利器:C++ Builder 6.0,弄一个简单的专杀工具。
界面就没必要做那么复杂了,先放一个RadioGroup控件,将其Items属性改为:快速查杀、深度扫描、仅扫描U盘,Name属性改为 ConfigRadioGroup;然后添加一个Button控件,Caption属性改为:查杀;最后再加上一个Memo控件,Name属性改为 StateMemo,用来显示扫描的状态进度。
双击Button控件,进入代码编辑:
StateMemo->Clear();
if(ConfigRadioGroup->ItemIndex==2) //仅扫描U盘,因为这个比较简单
{
char filepath[MAX_PATH];
char USB='A'; //保存U盘盘符
char szDriveName[4]={0};
wsprintf(szDriveName,"C:\0");
for(szDriveName[0]='C';szDriveName[0]<'Z';szDriveName[0]++)
{ //从C到Z遍历硬盘
//使用GetDriveType判断是否为可移动磁盘
if(GetDriveType(szDriveName)==DRIVE_REMOVABLE)
{
USB=szDriveName[0]; //将U盘盘符赋给变量USB
StateMemo->Lines->Add("找到U盘"+AnsiString(USB));
sprintf(filepath,"%c:\\autorun.inf",USB); //构造完整文件名
//其实这里可以不用这么麻烦的,因为这个文件只会存在于U盘的根目录下
WIN32_FIND_DATA wfd;
HANDLE hFind = FindFirstFile(filepath, &wfd);
if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{ //此路径是个文件夹
StateMemo->Lines->Add("该U盘已经经过免疫,无需查杀!");
}
else
{ //此文件存在,通常可能为不正常文件
StateMemo->Lines->Add("发现可疑文件autorun.inf");
FileSetAttr(filepath,~faReadOnly); //去掉其只读属性
DeleteFile(filepath); //删除
StateMemo->Lines->Add("已删除可疑文件autorun.inf");
}
FindClose(hFind);
}
}
if(USB=='A') //如果此值没改变说明没有发现U盘
{
StateMemo->Lines->Add("没有发现可移动磁盘!");
}
return;
}
扫描U盘的代码就算完工了,下面我们开始写扫描硬盘的代码,首先当然是要查杀病毒进程,见以下代码:
int count=0; //可疑进程数量
//创建当前进程快照
HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
StateMemo->Lines->Add("创建进程快照失败!");
}
PROCESSENTRY32 processEntry={0};
processEntry dwSize=sizeof(PROCESSENTRY32);
//开始遍历进程快照
bool bRet=Process32First(hProcessSnap,&processEntry);
while(bRet) //如果返回不为空就继续执行循环
{ //ExtraceFileName是提取出纯文件名,去掉路径
if(ExtractFileName(processEntry.szExeFile)=="algsrvs.exe")
{
StateMemo->Lines->Add("发现可疑进程algsrvs.exe!");
//根据进程PID以完全权限打开此进程,然后强制终止
HANDLE hVirus = OpenProcess(PROCESS_ALL_ACCESS,false,processEntry.th32ProcessID);
TerminateProcess(hVirus,0);
CloseHandle(hVirus);
StateMemo->Lines->Add("可疑进程已经被结束!");
count++; //可疑进程数量加1
}
bRet=Process32Next(hProcessSnap,&processEntry);
}
CloseHandle(hProcessSnap);
if(count==0) //没找到可疑进程
{
StateMemo->Lines->Add("没有发现可疑进程!");
}
上面这段是非常经典的遍历进程的代码,大家务必要理解哦,以后想查找其他进程的话只要把其中的进程名改一下就OK了,hoho~~~。
下面开始查杀系统中存在的病毒文件,通常情况下病毒文件的分布都是有规律的,一般在系统文件夹和各个分区的根目录下,所以我们不需要进行全盘扫描,因为如果你的硬盘中的文件很多的话这可是一件相当痛苦的事情。但我们根据文件名来打开文件,通过其返回值判断文件是否存在,而没有做杀毒软件通常的查找特征码的操作,所以速度会提升不少。

[1] [2] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 爱国者安全网2007年度优秀版主评选
    普通文章 瑞星公司01月11日发布 每日计算机病毒及木马播报
    普通文章 破解博彩神助(专注彩票) V2.8.01
    推荐文章 推荐:跨站脚本执行漏洞代码的六点思路
    普通文章 Windows系统下的远程堆栈溢出 实战篇
    普通文章 Windows系统下的远程堆栈溢出 原理篇
    普通文章 MsSQLServer是如何加密口令的
    普通文章 浅谈国内的渗透评估过程
    普通文章 Dvbbs8.1 0DAY(通杀Access和mssql版本)
    普通文章 微软:我们的代码比赛门铁克更安全
    热门文章
    普通文章REAL蛀虫利用播放器漏洞下载恶意程序
    普通文章李彦宏:中国要在互联网领域逐渐超越美国
    普通文章马云:阿里巴巴的成功是一个生态链的成功
    普通文章Ingres用户认证非授权访问漏洞
    普通文章TCPreen FD_SET()函数远程栈溢出漏洞
    普通文章Winace UUE文件解压堆溢出漏洞
    普通文章Pclxav木马猎手第一代特征码引擎源代码
    普通文章IE收藏夹管理小精灵算法分析
    普通文章Extra Drive Pro算法分析历程
    普通文章雨过天晴自我注册
    精彩专题