易语言5.0解决病毒误报情况分析测试报告

2012-07-05 10:55:52 作者:liigo 来源:易语言 浏览次数:0

长期以来,易语言4.x版本编译生成的可执行程序(EXE)和动态链接库(DLL),经常被国内外多家杀毒软件“误报为病毒或木马”,给使用易语言开发软件产品的广大开发者及其用户带来无尽烦恼,进而严重影响了易语言的发展

  根据易语言公司开发人员liigo的爆料,长期以来,易语言4.x版本编译生成的可执行程序(EXE)和动态链接库(DLL),经常被国内外多家杀毒软件“误报为病毒或木马”,给使用易语言开发软件产品的广大开发者及其用户带来无尽烦恼,进而严重影响了易语言的发展;另一方面,易语言5.0(静态编译版本)也已全新推出,其中一个重要目标就是“解决病毒误报”本文将就此进行相关分析和测试。

一、易语言简介

易语言(eyuyan.com)是一门编程语言,是一款编译器(compiler),也是一集成开发环境(IDE)。综合来说,易语言是一个自成体系的软件开发平台其中包含了用于开发软件产品的几乎所有重要部件:编程语言,编译器,调试器,类库(支持库/模块),集成开发环境(IDE)以及周边工具。

易语言以其易学、易用、功能强大著称。

易语言是一个开放性产品,它可以很好地跟其它开发工具协作,例如:易语言可以调用其它编程语言开发的支持库(借助易语言支持库开发包)、COMOCXDLL等,易语言开发的标准DLL也可供其它语言调用,易语言可以使用几乎所有大中小型数据库,易语言甚至允许在代码中直接嵌入X86机器指令代码以期实现比汇编语言更底层的应用,5.1版本以后还将支持与其它编程语言共享静态库文件(.lib, .obj

易语言面向的主要用户群,一部分是对编程感兴趣的初、中级电脑用户,解决他们工作中遇到的软件方面的难题,一部分是非职业的、第三方的软件开发者,满足他们自行开发商业软件的需求。

易语言诞生于2000年,发展至今已有足足十年历史,2004起成立易语言公司开始商业运作。目前最新版本是易语言5.0(静态编译版本)。

二、易语言长期以来深受“病毒误报”危害

长期以来,易语言4.x版本编译生成的“正常的”可执行程序(EXE)和动态链接库(DLL),经常被国内外多家杀毒软件“误报为病毒或木马”,给使用易语言开发软件产品的广大开发者及其用户带来无尽烦恼,进而严重影响了易语言的发展。

以一个简单的示例说明,易语言5.0正式版“关于”对话框程序,这是一个易语言编译的EXE文件(非独立编译模式),其界面和功能非常简单,只有几个标签、按钮、图片框等基本UI元素,几乎没有什么代码,它怎么可能是威胁用户电脑安全的病毒木马呢,可通过在线病毒扫描发现竟然有五六个“误报”:。这只是易语言程序被较大范围误报的一个缩影。

 

易语言是软件开发工具,处于产业链的上层,其数十万直接用户(软件开发者)开发的各类软件产品,可能又各自拥有不止上百万用户(软件使用者),一旦出现病毒误报误杀情况,影响范围极大。

三、易语言4.x版本被“病毒误报”的技术分析

首先声明,本人对杀毒软件的实现原理没有多少了解,本文以下分析可能并无理论依据,也许仅仅只是推测甚至猜测。

 

(liigo)个人分析认为,易程序程序被“误报”的原在于

1.确实有人用易语言开发病毒、木马、外挂等非法恶意程序;

2.易语言程序自身的编译、运行模式比较“非主流”,存在被“大范围误报”可能;

3.易语言公司是个小公司,易语言也只是个小众产品,没有强势的市场地位;

4.杀毒软件公司不作为,其病毒查杀技术有待改进。

  以上四个条件只要有一个不满足,就不会造成今日这样的结果。试想:如果从来没有人用易语言编写恶意程序,即所有易程序都是合法的安全的,当然不会引起杀毒软件注意;如果易程序自身编译、运行模式更加合理,那么既使杀毒软件查杀个别真正的病毒木马,也不会大范围“误杀”其它的易程序;如果易语言或易语言公司足够强势,也不会面对大范围“误杀”“误报”无可奈何(据传当年delphi刚出山时也遇到过类似的较大范围误报情况,后由于Borland公司的市场强势而很快解决);如果杀毒软件查杀技术更先进,能准确识别病毒木马与普通程序的区别,同样不会出现大范围“误杀”“误报”的情况。

偏偏四个条件都满足了。第一条是既成事实无法改变,第三第四条是现状且受外界所控短期内难以改变,只有第二条是突破口,易语言公司有动力也有能力予以改变,虽然困难也非常大。易语言5.0也恰恰是抓住了这个突破口,痛下决心变革了自身编译、运行模式,这是后话了。

 

我说易语言程序自身的编译、运行模式比较“非主流”,主要体现在:

1非独立编译的易语言程序,运行时必须依赖一个或多个支持库文件(DLL),而这些个DLL可能被以前某个被证实为病毒或木马的易语言程序使用过,株连,导致误杀误报;

2独立编译的易语言程序,运行时会释放一个或多个支持库文件(DLL)到系统临时目录,然后再把释放出去的DLL加载(LoadLibrary)进来,这种行为(EXE携带PE数据文件运行时释放出去然后加载进来)与某些病毒木马类似,导致被错误识别;

3、易语言程序中的“易格式体”很特殊:易语言编译器编译生成的可执行代码(标准X86指令集合),并不像普通EXE那样位于PE文件的.text段中,反而位于一个不具名的(以前是.ecode,后来因杀软杀就不具名了)没有可执行属性的数据段中(其内容即是著名的“易格式体”数据),更要命的是,EXE还要把这段没有可执行属性的数据交给另外一个DLL(易语言核心库)去执行,而且执行过程中又非常频繁的在多个DLL之间来回跳转(易语言程序调用支持库命令,同时需要核心库中转/协调),看看吧,几乎所有代码都是在各个DLL领空执行的,几乎没有EXE什么事,就这么折腾来折腾去,把杀毒软件及其人工分析员搞得晕头转向,以为是病毒或木马有意玩弄,很生气,一杀了之,偏偏又说不清楚哪里是马哪里是毒,提取特征码时不知何处下手,索性简化处理把易语言程序集体坑杀,绝不肯冒风险漏杀一个,“查杀率”可是衡量杀毒软件质量的重要参数哦。

据我接触和了解的情况,各家杀毒软件公司也是非常重视针对易语言的误杀误报情况的,也经常积极配合临时解除误报。毕竟出现误杀误报情况,对他们也有负面影响。但是要彻底解决误杀误报易语言程序,杀毒软件可能要花费很大的代价和很高的成本,似乎还没有人肯下决心去做这么一件看上去得不偿失的工作。易语言公司也曾试图小范围技术调整,例如去除编译器生成的代码中的明显特征,甚至有意加入扰乱代码,避免杀毒软件找到易语言程序的统一特征码,结果并不理想。

 

(liigo)把易语言程序被“误报”误杀的根源,最终归结为两点:易语言“非主流”,杀毒软件“躲猫猫”。 

四、“误杀”“误报”责任在谁

杀毒软件该不该“误报”“误杀”易语言程序呢?

有这个“误”字存在,显然是不应该的,否则就是杀的对杀的好了。杀毒软件报错了、杀错了,当然占主要责任当然他们也有理由说“偶尔误杀误报在所难免”“误杀你的不止我一家哦,有多家”,而且会反问“为什么总误杀你(易语言)不误杀别人(C/C++/JAVA)”

被误杀误报的易语言程序有没有责任?它是“长的奇怪”了点(非主流,不河蟹),但“长的奇怪”也罪不至杀头吧?所以易语言即使有责任也是次要责任。

然而在现在的中国软件产业国情下,追究是谁的责任是一件没有意义的事情。易语言公司两次赢了与卡巴斯基的官司,也只得到小额赔款而已,并不改变“易语言程序经常被集体误杀误报”的现状。对于目前“误杀”“误报”的现状,“主流的”杀毒软件感到不痛不痒,而“非主流的”易语言却体会到生存的压力,所以后者有更大的责任努力改变现状。 

相关文章

[错误报告] [收藏] [打印] [关闭] [返回顶部]

最新图片文章

最新文章