摘 要:设计、勘察、水利、土地等单位一般多使用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 开发及其在工程中的应用 肖泽云 二〇一〇年四月
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。 返回电子论文列表