中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » DLL木马查杀工具--浪子出品-附源码!~
作者:
标题: DLL木马查杀工具--浪子出品-附源码!~ 上一主题 | 下一主题
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『楼 主』:  DLL木马查杀工具--浪子出品-附源码!~

本人作品,需要配合本人作品  进程分析工具 同时使用!~以下是源码,希望各位给予改正错误,完善代码功能!~


目前有几点没能实现:

1,无法区分被病毒感染的DLL或者EXE文件,需要手动比较原文件和现文件的大小

2,无法恢复被病毒感染的DLL文件,只能强制删除...一旦删除无法复原.....

3,由于懒,故没把它做的智能点,如检测到不是初次扫描就自动转到第2次扫描并分析等问题

4,可能存在未知的缺陷,希望大家帮忙提出,和完善!


:dllkill
@echo off
color A  
cls
title DLL木马查杀工具--by 逍遥@浪子@
@echo ************************************************************
@echo #                                                          #  
@echo #            欢迎使用DLL木马查杀工具                  #
@echo #                                                          #
@echo ************************************************************
@echo.
@echo 请输入以下选项前面的数字
@echo.
@echo 1:扫描并生成日志  2:生成第2次日志并列出不同   3:关于作者
@echo.
@echo 4:注销可疑的DLL文件  5:删除可疑的EXE文件    6:退出本程序
@echo.
@set /p UserSelection=输入您的选择(1、2、3、4、5、6 )
@if "%UserSelection%"=="1" goto scheng1  
@if "%UserSelection%"=="2" goto scheng2
@if "%UserSelection%"=="3" goto zuozhe
@if "%UserSelection%"=="4" goto zhuxiaodll  
@if "%UserSelection%"=="5" goto delexe
@if "%UserSelection%"=="6" goto here

:scheng1
cls
cd c:\windows\system32
dir *.exe>exeback1.txt
start exeback1.txt
dir *.dll>dllback1.txt
start dllback1.txt
@echo ************************************************************
@echo #                                                          #
@echo #             已经将扫描日志输出,请按任意键返回!          #   
@echo #                                                          #      
@echo ************************************************************
@pause>nul 2>nul
@GOTO dllkill

:scheng2
cls
cd c:\windows\system32
dir *.exe>exeback2.txt
start exeback2.txt
dir *.dll>dllback2.txt
start dllback2.txt
@echo ************************************************************
@echo #                                                          #
@echo #           已经将第2次日志输出,是否立刻分析不同?         #   
@echo #                                                          #      
@echo ************************************************************
@echo 请输入以下选项前面的数字
@echo.
@echo 1:是的,立刻分析下!    2:不了,返回吧!  
@echo.
@set /p UserSelection=输入您的选择(1、2 )
@if "%UserSelection%"=="1" goto bijiao3  
@if "%UserSelection%"=="2" goto dllkill
:bijiao3
cls
fc exeback1.txt exeback2.txt>diff.txt
start diff.txt
fc dllback1.txt dllback2.txt>dif.txt
start dif.txt
@echo ************************************************************
@echo #                                                          #
@echo #             已经将比较结果输出,请按任意键返回!          #   
@echo #                                                          #      
@echo ************************************************************
@pause>nul 2>nul
@GOTO dllkill

:zuozhe
@cls
@echo ************************************************************
@echo #                                                          #
@echo #         欢迎使用DLL木马查杀工具                 #
@echo #  功能:                                                  #
@echo #                                                          #
@echo #     自动记录系统SYSTEM32文件下面的DLL及EXE文件,并将多出 #
@echo #                                                          #
@echo # 的文件显示出来,用来区别病毒,方便新手手动删除病毒 。    #
@echo #                                                          #
@echo #   不要害怕病毒,矛与盾的较量永远不会终止,凡事靠自己!   #
@echo #                                                          #
@echo #       版本号   修订日期      修订人       修订内容       #
@echo #                                                          #
@echo #        1.0    2007-05-27   逍遥@浪子@    编写本脚本      #
@echo #                                                          #
@echo #      特别感谢DOS联盟,以及冰的原点,LEY等朋友的支持!    #
@echo #                                                          #
@echo #  本人网志:http://hi.baidu.com/逍遥问    QQ:422547345   #
@echo #                                                          #
@echo ************************************************************
@echo.
@echo 请输入以下选项前面的数字
@echo.
@echo 1:去浪子网志转转    2:立刻发消息给浪子  3:返回主程序  
@echo.
@set /p UserSelection=输入您的选择(1、2、3)
@if "%UserSelection%"=="1" goto boker  
@if "%UserSelection%"=="2" goto lianxi
@if "%UserSelection%"=="3" goto start
:boker
@start http://hi.baidu.com/逍遥问
@echo.
@echo  按任意键返回 
@pause>nul 2>nul  
@goto dllkill
:lianxi
@start tencent://Message/?Uin=%422547345%
@echo.
@echo  按任意键返回  
@pause>nul 2>nul  
@goto dllkill

:zhuxiaodll
cls
cd c:\windows\system32
set /p UserSelection=请输入要注销的DLL文件
regsvr32 /u  "%UserSelection%"
@echo.
@echo               已经成功注销了该DLL文件!
@echo.
@echo 请输入以下选项前面的数字
@echo.
@echo 1:接着注销DLL文件    2:删除可疑DLL文件    3:返回主程序
@echo.
@set /p UserSelection=输入您的选择(1、2、3 )
@if "%UserSelection%"=="1" goto zhuxiaodll  
@if "%UserSelection%"=="2" goto deldll
@if "%UserSelection%"=="3" goto dllkill

:deldll
cls
cd c:\windows\system32
set /p UserSelection=请输入要删除的DLL文件
attrib -h -s -r  "%UserSelection%"
del  "%UserSelection%"
@echo.
@echo               已经成功删除了该DLL文件!
@echo.
@echo 请输入以下选项前面的数字
@echo.
@echo 1:接着删除DLL文件    2:返回主程序
@echo.
@set /p UserSelection=输入您的选择(1、2 )
@if "%UserSelection%"=="1" goto deldll  
@if "%UserSelection%"=="2" goto dllkill

:delexe
cls
cd c:\windows\system32
set /p UserSelection=请输入要删除的EXE文件
attrib -h -s -r  "%UserSelection%"
del  "%UserSelection%"
@echo.
@echo               已经成功删除了该EXE文件!
@echo.
@echo 请输入以下选项前面的数字
@echo.
@echo 1:接着删除EXE文件    2:返回主程序
@echo.
@set /p UserSelection=输入您的选择(1、2 )
@if "%UserSelection%"=="1" goto delexe  
@if "%UserSelection%"=="2" goto dllkill  

:here
@cls
@echo.
@echo                             \\\^|///
@echo                           \\ .-.- //
@echo                            ( .@.@ )
@echo                    +-------oOOo-----(_)-----oOOo----------+   
@echo                    ^|                       ^|
@echo                    ^|    感谢使用!是否确定退出本程序?      ^|
@echo                    ^|                      ^|     
@echo                    +----------oooO-------Oooo-------------+  
@echo 请输入以下选项前面的数字
@echo.
@echo 1:是的,立即退出    2:不,返回主程序   
@echo.
@set /p UserSelection=输入您的选择(1、2)
@if "%UserSelection%"=="1" goto END
@if "%UserSelection%"=="2" goto dllkill
:END
cd c:\windows\system32
del exeback2.txt
del dllback2.txt
del dif.txt
del diff.txt
@GOTO QUIT

[ Last edited by luckboy45 on 2007-5-30 at 06:57 PM ]



逍遥@浪子@反病毒
2007-5-30 18:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  



  Quote:
目前有几点没能实现:

1,无法区分被病毒感染的DLL或者EXE文件,需要手动比较原文件和现文件的大小

2,无法恢复被病毒感染的DLL文件,只能强制删除...一旦删除无法复原.....

3,由于懒,故没把它做的智能点,如检测到不是初次扫描就自动转到第2次扫描并分析等问题

4,可能存在未知的缺陷,希望大家帮忙提出,和完善!

1、如果根据大小来判断是否被感染病毒的话,可以先生成一个含有文件大小信息的比较文件,比如(compexe.txt),再用扫描后的新文件和它比较(fc 、findstr、find)。

2、如果有备份的话,就可以直接覆盖过去,当然要排除一些顽固病毒。就目前来讲,批处理还没有杀毒的能力(也可能有牛人结合汇编+bat实现了也说不定),所以这个比较棘手。

3、检测是否进行过第一次扫描,可以利用if命令来判断第一次扫描的文件是否存在,在根据是否存在来做相应的处理。

4、大略的看了一下原代码,提出了一些小建议,如下:

  Quote:
:dllkill
@echo off
color A  
cls
title DLL木马查杀工具--by 逍遥@浪子@
@echo ************************************************************
@echo #                                                          #  
@echo #            欢迎使用DLL木马查杀工具                  #
@echo #                                                          #
@echo ************************************************************
@echo.
@echo 请输入以下选项前面的数字
@echo.
@echo 1:扫描并生成日志  2:生成第2次日志并列出不同   3:关于作者
@echo.
@echo 4:注销可疑的DLL文件  5:删除可疑的EXE文件    6:退出本程序
@echo.
@set /p UserSelection=输入您的选择(1、2、3、4、5、6 )
@if "%UserSelection%"=="1" goto scheng1  
@if "%UserSelection%"=="2" goto scheng2
@if "%UserSelection%"=="3" goto zuozhe
@if "%UserSelection%"=="4" goto zhuxiaodll  
@if "%UserSelection%"=="5" goto delexe
@if "%UserSelection%"=="6" goto here
rem (建议这里加一个goto :dllkill之类的语句跳转到开始,因为如果用户不是选择的1-6的数字,那么程序会自动的运行标签:scheng1下面的内容,下同)

:scheng1
cls
cd c:\windows\system32
dir *.exe>exeback1.txt
rem (这里的cd和dir建议直接用dir /b/a-d c:\windows\sysmte32\*.exe>exeback1.txt,下同)
start exeback1.txt
dir *.dll>dllback1.txt
start dllback1.txt
@echo ************************************************************
@echo #                                                          #
@echo #             已经将扫描日志输出,请按任意键返回!          #   
@echo #                                                          #      
@echo ************************************************************
@pause>nul 2>nul
@GOTO dllkill

:scheng2
cls
cd c:\windows\system32
dir *.exe>exeback2.txt
start exeback2.txt
dir *.dll>dllback2.txt
start dllback2.txt
@echo ************************************************************
@echo #                                                          #
@echo #           已经将第2次日志输出,是否立刻分析不同?         #   
@echo #                                                          #      
@echo ************************************************************
@echo 请输入以下选项前面的数字
@echo.
@echo 1:是的,立刻分析下!    2:不了,返回吧!  
@echo.
@set /p UserSelection=输入您的选择(1、2 )
@if "%UserSelection%"=="1" goto bijiao3  
@if "%UserSelection%"=="2" goto dllkill
:bijiao3
cls
fc exeback1.txt exeback2.txt>diff.txt
start diff.txt
fc dllback1.txt dllback2.txt>dif.txt
start dif.txt
@echo ************************************************************
@echo #                                                          #
@echo #             已经将比较结果输出,请按任意键返回!          #   
@echo #                                                          #      
@echo ************************************************************
@pause>nul 2>nul
@GOTO dllkill

:zuozhe
@cls
@echo ************************************************************
@echo #                                                          #
@echo #         欢迎使用DLL木马查杀工具                 #
@echo #  功能:                                                  #
@echo #                                                          #
@echo #     自动记录系统SYSTEM32文件下面的DLL及EXE文件,并将多出 #
@echo #                                                          #
@echo # 的文件显示出来,用来区别病毒,方便新手手动删除病毒 。    #
@echo #                                                          #
@echo #   不要害怕病毒,矛与盾的较量永远不会终止,凡事靠自己!   #
@echo #                                                          #
@echo #       版本号   修订日期      修订人       修订内容       #
@echo #                                                          #
@echo #        1.0    2007-05-27   逍遥@浪子@    编写本脚本      #
@echo #                                                          #
@echo #      特别感谢DOS联盟,以及冰的原点,LEY等朋友的支持!    #
@echo #                                                          #
@echo #  本人网志:http://hi.baidu.com/逍遥问    QQ:422547345   #
@echo #                                                          #
@echo ************************************************************
@echo.
@echo 请输入以下选项前面的数字
@echo.
@echo 1:去浪子网志转转    2:立刻发消息给浪子  3:返回主程序  
@echo.
@set /p UserSelection=输入您的选择(1、2、3)
@if "%UserSelection%"=="1" goto boker  
@if "%UserSelection%"=="2" goto lianxi
@if "%UserSelection%"=="3" goto start
:boker
@start http://hi.baidu.com/逍遥问
@echo.
@echo  按任意键返回 
@pause>nul 2>nul  
@goto dllkill
:lianxi
@start tencent://Message/?Uin=%422547345%
rem (这里的%422547245%中的%符号不用了吧?)
@echo.
@echo  按任意键返回  
@pause>nul 2>nul  
@goto dllkill

:zhuxiaodll
cls
cd c:\windows\system32
set /p UserSelection=请输入要注销的DLL文件
regsvr32 /u  "%UserSelection%"
@echo.
@echo               已经成功注销了该DLL文件!
@echo.
@echo 请输入以下选项前面的数字
@echo.
@echo 1:接着注销DLL文件    2:删除可疑DLL文件    3:返回主程序
@echo.
@set /p UserSelection=输入您的选择(1、2、3 )
@if "%UserSelection%"=="1" goto zhuxiaodll  
@if "%UserSelection%"=="2" goto deldll
@if "%UserSelection%"=="3" goto dllkill
rem (这里应该加一个跳转,下同)

:deldll
cls
cd c:\windows\system32
set /p UserSelection=请输入要删除的DLL文件
attrib -h -s -r  "%UserSelection%"
del  "%UserSelection%"
@echo.
@echo               已经成功删除了该DLL文件!
@echo.
@echo 请输入以下选项前面的数字
@echo.
@echo 1:接着删除DLL文件    2:返回主程序
@echo.
@set /p UserSelection=输入您的选择(1、2 )
@if "%UserSelection%"=="1" goto deldll  
@if "%UserSelection%"=="2" goto dllkill

:delexe
cls
cd c:\windows\system32
set /p UserSelection=请输入要删除的EXE文件
attrib -h -s -r  "%UserSelection%"
del  "%UserSelection%"
@echo.
@echo               已经成功删除了该EXE文件!
@echo.
@echo 请输入以下选项前面的数字
@echo.
@echo 1:接着删除EXE文件    2:返回主程序
@echo.
@set /p UserSelection=输入您的选择(1、2 )
@if "%UserSelection%"=="1" goto delexe  
@if "%UserSelection%"=="2" goto dllkill  

:here
@cls
@echo.
@echo                             \\\^|///
@echo                           \\ .-.- //
@echo                            ( .@.@ )
@echo                    +-------oOOo-----(_)-----oOOo----------+   
@echo                    ^|                       ^|
@echo                    ^|    感谢使用!是否确定退出本程序?      ^|
@echo                    ^|                      ^|     
@echo                    +----------oooO-------Oooo-------------+  
@echo 请输入以下选项前面的数字
@echo.
@echo 1:是的,立即退出    2:不,返回主程序   
@echo.
@set /p UserSelection=输入您的选择(1、2)
@if "%UserSelection%"=="1" goto END
@if "%UserSelection%"=="2" goto dllkill
:END
cd c:\windows\system32
rem (这里的cd建议加上/d参数)
del exeback2.txt
del dllback2.txt
del dif.txt
del diff.txt
rem (这里的几个del可以连写,比如del exeback2.txt dllback2.txt diff.txt dif.txt)
@GOTO QUIT
rem (这里的Quit标签哪里来的?建议用goto :EOF或者直接exit)



2007-5-30 20:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『第 3 楼』:  

呵呵,感谢楼主的完善,呵呵,学习了,十分感谢!~



逍遥@浪子@反病毒
2007-5-30 20:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 4 楼』:  

太小看病毒了吧?

文件的大小可以做到一样,时间也是可以修改的……regsvr32 /u是……dll文件自身提供了DllUnregisterServer的dll可用。

有没有发现一些DLL会提示:
已加载xxxx.dll,但没有找到DllUnregisterServer输入点。
无法注册这个文件。


P上有什么问题我就不清楚了,第一太长懒的看,2,P我很烂

2007-5-31 13:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Tooom
新手上路





积分 1
发帖 1
注册 2007-5-31
状态 离线
『第 5 楼』:  

支持:-)

2007-5-31 16:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
luckboy45
中级用户




积分 487
发帖 212
注册 2007-4-1
状态 离线
『第 6 楼』:  

呵呵,4楼的朋友说的问题确实存在,但有什么方法可以做到尽量避免呢?麻烦帮忙完善下!~



逍遥@浪子@反病毒
2007-5-31 18:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
my3439955
中级用户




积分 272
发帖 99
注册 2006-6-2
状态 离线
『第 7 楼』:  

大多数的DLL文件被加载了之后用regsvr32根本没用



X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
2007-5-31 22:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: