欢迎来到学术参考网

针对.vlx和.lsp的CAD病毒防护

发布时间:2015-08-04 09:22

摘 要:设计、勘察、水利、土地等单位一般多使用CAD进行设计和应用,并利用CAD软件的接口语言进行二次开发,编写本行业应用的二次开发程序以加快生产速度、提高生产力。CAD病毒的出现给工作生产带来了诸多不便和影响。本文针对和两种CAD病毒利用C# 语言进行编程防护和查杀。

关键词:C# 、遍历、AutoCAD、、
AutoCAD 是由美国Autodesk 公司于二十世纪80年代为微机上应用CAD 技术而开发的绘图程序软件包,经过不断的完善,以其优异的绘图功能、易学易用等特点,现已成为国际上广为流行的绘图工具。特别是其通用性强、具有多种工业标准和开放的体系结构,使得它在土木、水利、机械、电子、测绘等领域得到了极为广泛的应用。
  从事测绘行业的单位,CAD是每台计算机必须安装的软件之一。但不久前单位作业计算机上发现,运行CAD加载曹卫国老师的二次开发Cmap程序时失败,提示缺陷的错误,同时每个CAD作业的文件夹下都产生两个多余的文件:和,CAD启动和运行速度明显变慢。连接局域网的作业机器都发现类似情况。查阅和分析两个文件和CAD相关配置文件的内容,判断CAD被病毒感染了。
  尝试多款杀毒软件,多数杀毒软件都不能发现病毒或发现无法处理。查阅相关资料后,决定利用C#编写程序对和两种病毒进行防治和查杀。
  
1.查杀病毒整体思路:
    查找病毒源文件删除,同时删除病毒滋生衍生的若干文件。查找CAD一些配置文件,删除其中病毒加载的病毒语句,将这些文件改变为只读属性,防止再次被改写。根据CAD官网提供的防杀病毒代码,给写相关配置文件(受CAD版本限制)。下面是具体操作及程部分序代码。
1.1查找病毒孳生的文件删除
   感染病毒的计算机,在每个CAD工程文件夹下都会产生两个病毒滋生的文件:和,全盘查找并删除这两个文件。
        public void FindFile(string dir)
        {
            oryInfo Dir = new oryInfo(dir);
            try
            {
                foreach (oryInfo d in ectories()) 
                {
                    FindFile(Dir + ng() + """");
                }
                foreach (fo f in es(""*.*"")) 
                {
                    if (ng() == """")
                    {
                        ();
                    }
                    if (ng() == """")
                    {
                        ();

1.2 搜索病毒源文件
  通过查找资料,结合感染病毒计算机的具体情况,一般病毒的源文件为: 。代码如下:
        public void gifdel(string gifdelpath)
        {
            if ((gifdelpath))
            {
                (gifdelpath);
 
1.3 CAD配置文件的修改和加强
  查找病毒修改的CAD加载文件,把加载病毒的语句删除。如:文件等,删除以下的语句:
(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)))
  在Support文件夹的文件,根据CAD官网提供的资料,编写自动清除病毒加载语句(2007以上版本适用)。部分代码如下:

        public void txtadd(string txtaddpath)
        {
            if ((txtaddpath))
            {
                (txtaddpath + ""存在!"");
          StreamReader TxtReader = new StreamReader(txtaddpath,t);
                string FileContent = End();
                ();
              if (f(@""  (setq lspfiles '("""""""" """"""""))"") == -1)
                {
                    Writer sw = new Writer(txtaddpath, true, t);
                    ine(""(defun cleanvirus( / lspfiles lspfile x)"");
                    ine(@""  (setq lspfiles '("""""""" """"""""))"");
                    ine(""  (foreach lspfile lspfiles"");
                    ine(""    (while (setq x (findfile lspfile))"");
                    ine(""      (progn"");
                    ine(""        (vl-file-delete x)"");
                    ine(@""        (princ """"  nDeleted file """")"");
                    ine(""        (princ x)"");
                    ine(""    );progn"");
                    ine(""  );while"");
                    ine("" );foreach"");
                    ine("")"");
                    ine(""(cleanvirus)"");
                    ();

1.4预防措施
    将几个经常被病毒修改的文件设置为只读属性,避免文件被再次感染。

        private void SetFileAttributes(string aFilePath)
        {
            if (ributes(aFilePath).ToString().IndexOf(""Normal"") != -1)
            {
                ributes(aFilePath, ly);
2.写在最后:
    至此,病毒得到一定的控制。软件使用VS2008编写,在WindowsXP下调试通过。当然病毒可能变异,或感染更多范围,相应的控制程序也要不断的升级。本文不足之处望指出。

参考文献
http://oCAD 开发及其在工程中的应用 肖泽云 二〇一〇年四月

上一篇:沙堤机场净空评定GIS系统研究开发

下一篇:虚拟计算机在计算机培训教育中的应用讨论