当前位置:首页 » 编程软件 » 杀毒软件为什么都喜欢编译

杀毒软件为什么都喜欢编译

发布时间: 2023-06-27 13:48:16

‘壹’ 易语言编写的程序为什么容易被报毒

编译:直接将代码转换为程序,程序运行时要求系统或该软件运行目录里有该程序运行时所需要的库文件!静态编译:将代码编译为程序,再将软件运行所需要的压进程序里,当程序运行时释放库文件,再从指定位置读取调用库文件,使程序运行! “静态编译”的程序就很类似于捆绑木马:1.程序运行,2.释放文件,3.调用文件!几乎都差不多把!只是最后一步有点差别! “静态编译”的程序里面含有程序运行所需要的库文件,运行程序后就像是捆绑了东西的文件,释放文件爱你,并调用!使杀毒软件误以为程序是被捆绑后的的软件,所以报毒!而现在大多数人都应该用的是静态编译,所以就有了网上闹得沸沸扬扬的“易语言误报门”了! “编译”出来的程序,直接调用库文件,类似于C++,而静态编译则需要先将库文件释放出来在加以调用,就类似于“winrar自解压”,使得杀毒软件检测到程序里包含了其他文件,而且程序里也含有将文件释放出来的命令,触动杀毒神经,所导致杀毒误认为是捆绑了木马的程序,故杀毒软件认为“静态编译”出来的程序是病毒!

‘贰’ 杀毒软件的原理是什么

工作原理是部分杀毒软件是在内存里划分一部分空间,将计算机中流过内存的数据与杀毒软件自身所带的病毒库(包含病毒定义)的特征码相比较,以判断是否为病毒;另一部分杀毒软件在所划分到的内存空间里,虚拟执行系统或用户提交的程序,根据其行为或结果作出判断。 杀毒软件会生成现有主机操作系统的全新虚拟镜像,该镜像具有真实操作系统完全一致的功能。桌面虚拟化技术具有独立分挡操作系统压力,通过该技术实现运行过程中垃圾文件为零的目标,同时生成的虚拟环境与主机操作系统完全隔离,保护主机不被病毒感染,减少了系统被破坏的概率。

一个杀毒软件的构造的复杂程度要远远高于木马或病毒,所以其原理也比较复杂。而且鉴于现在木马病毒越来越向系统底层发展,杀毒软件的编译技术也在不断向系统底层靠近。例如现在的“主动防御”技术,就是应用RING0层的编译技巧。这里我简单为大家介绍一下基本构成。 一个杀毒软件一般由扫描器、病毒库与虚拟机组成,并由主程序将他们结为一体,如图1。 扫描器是杀毒软件的核心,用于发现病毒,一个杀毒软件的杀毒效果好坏就直接取决于它的扫描器编译技术与算法是否先进,而且杀毒软件不同的功能往往对应着不同的扫描器,也就是说,大多数杀毒软件都是由多个扫描器组成的。而病毒库存储的特征码形式则取决于扫描器采用哪种扫描技术。它里面存储着很多病毒所具有的独一无二的特征字符,我们称之为“特征码”。特征码总的分来只有两个,文件特征码与内存特征码。文件特征码存在于一些未执行的文件里,例如EXE文件、RMVB文件、jpg文件甚至是txt文件中都有可能存在文件特征码,也都有可能被查杀。而内存特征码仅仅存在于内存中已运行的应用程序。而虚拟机则是最近引进的概念,它可以使病毒在一个由杀毒软件构建的虚拟环境中执行,与现实的CPU、硬盘等完全隔离,从而可以更加深入的检测文件的安全性。 简单的说,杀毒软件的原理就是匹配特征码。当扫描得到一个文件时,杀毒软件会检测这个文件里是否包含病毒库里所包含的特征码,如果有,则报毒病查杀,如果没有,纵然这个文件确实是一个病毒,它也会把它当作正常文件来看待。 我觉得腾讯电脑管家就是最好的杀毒软件了二、基于文件扫描的杀毒技术 基于文件的杀毒技术可以分为“第一代扫描技术”、“第二代扫描技术”与“算法扫描”这三种方法,对于免杀爱好者来说,要对每一种方法烂熟于心,才能成为高手!但做为一个初学者来说了解一下即可。这里我们就简单介绍一下其中两种种方法,详细的技术原理如果各位得这有兴趣的话可以自己研究。

‘叁’ 杀毒软件的杀毒原理是什么

现在有很多各种类型的杀毒软件,从以前收费的,到现在大部分免费的,但是大部分人不了解其内部杀毒原理。下面对杀毒软件的工作原理作详细介绍。

一、杀毒软件原理基础

一个杀毒软件的构造的复杂程度要远远高于木马或病毒,所以其原理也比较复杂。而且鉴于现在木马病毒越来越向系统底层发展,杀毒软件的编译技术也在不断向系统底层靠近。

例如现在的“主动防御”技术,就是应用RING0层的编译技巧。这里简单介绍一下基本构成。

一个杀毒软件一般由扫描器、病毒库与虚拟机组成,并由主程序将其结为一体,如图1

扫描器是杀毒软件的核心,用于发现病毒,一个杀毒软件的杀毒效果好坏就直接取决于它的扫描器编译技术与算法是否先进,而且杀毒软件不同的功能往往对应着不同的扫描器,也就是说,大多数杀毒软件都是由多个扫描器组成的。

而病毒库存储的特征码形式则取决于扫描器采用哪种扫描技术。它里面存储着很多病毒所具有的独一无二的特征字符,称之为“特征码”。特征码总的分来只有两个,文件特征码与内存特征码。文件特征码存在于一些未执行的文件里,例如EXE文件、RMVB文件、jpg文件甚至是txt文件中都有可能存在文件特征码,也都有可能被查杀。而内存特征码仅仅存在于内存中已运行的应用程序。而虚拟机则是最近引进的概念,它可以使病毒在一个由杀毒软件构建的虚拟环境中执行,与现实的CPU、硬盘等完全隔离,从而可以更加深入的检测文件的安全性。

简单的说,杀毒软件的原理就是匹配特征码。

当扫描得到一个文件时,杀毒软件会检测这个文件里是否包含病毒库里所包含的特征码,如果有,则报毒病查杀,如果没有,纵然这个文件确实是一个病毒,它也会把它当作正常文件来看待。

二、基于文件扫描的杀毒技术

基于文件的杀毒技术可以分为“第一代扫描技术”、“第二代扫描技术”与“算法扫描”这三种方法,对于免杀爱好者来说,要对每一种方法烂熟于心,才能成为高手!但做为一个初学者来说了解一下即可。

这里介绍一下其中两种种方法,详细的技术原理如果各位得这有兴趣的话可以自行研究。

1、通配符扫描技术

通配符扫描技术属于是第一代扫描技术的一个分支,对于“通配符”,可以理解为具有一定意义的符号,例如DOS命令里的*号就是任意长度的任意字符的意思,而且通配符在不同的领域也里可以代表不同的意思。

现在杀毒软件中简单的扫描器常常支持通配符,因为鉴于字符串扫描技术的执行速度与特征码长度限制等问题,使得其逐渐退出历史舞台,取而代之的是通配符扫描技术,通配符扫描技术以同样简单的原理与技术却实现了更为强大的功能。

扫描器中的通配符一般用于跳过某些字节或字节范围,以至于现在有些扫描器还支持正则表达式!

下面通过一个例子来讲解通配符扫描技术的原理。

例如病毒库中有这样一段特征码:0400
B801 020E 07BB ??02 %3 33C9 8BD1
419C上面的特征码可以解释为:

1、尝试匹配04,如果找到则继续,否则跳出。

2、尝试上一匹配目标后匹配00,如果找到则继续,否则跳出。

3、尝试上一匹配目标后匹配B8,如果找到则继续,否则跳出。

4、尝试上一匹配目标后匹配01,如果找到则继续,否则跳出。

5、尝试上一匹配目标后匹配02,如果找到则继续,否则跳出。

6、尝试上一匹配目标后匹配0E,如果找到则继续,否则跳出。

7、尝试上一匹配目标后匹配07,如果找到则继续,否则跳出。

8、尝试上一匹配目标后匹配BB,如果找到则继续,否则跳出。

9、忽略此字节。

10、尝试上一匹配目标后匹配02,如果找到则继续,否则跳出。

11、在接下来的3个位置(字节)中尝试匹配33,如果找到则继续,否则跳出。

12、尝试上一匹配目标后匹配C9,如果找到则继续,否则跳出。

13、尝试上一匹配目标后匹配8B,如果找到则继续,否则跳出。

14、尝试上一匹配目标后匹配D1,如果找到则继续,否则跳出。

15、尝试上一匹配目标后匹配41,如果找到则继续,否则跳出。

16、尝试上一匹配目标后匹配9C,如果找到则继续,否则跳出。

这种扫描技术通常支持半字节匹配,这样可以更精确地匹配特征码,一些早期的加密病毒用这种方法都比较容易检测出来。

其实现在的一些特征码仍然在使用类似此种方法的特征码表达技术,因此掌握这些知识会对以后的免杀有所帮助,同样可以使在定位特征码时更加了解自己正在做什么,以及做的是否正确等等,这非常重要。

2、智能扫描

智能扫描属于第二代扫描技术的一个分支,这种方法是在一种病毒变异工具包出现之后提出的。智能扫描法会忽略检测文件中象NOP这样的无意义指令。而对于文本格式的脚本病毒或宏病毒,则可以替换掉多余的例如空格、换行符或制表符等空白字符,这一切替换动作在扫描缓冲区就会执行,从而大大提高了扫描器的检测能力。

3、近似精确识别法

近似精确识别法同样是属于第二代扫描技术的一个分支,但是相比起来应用的更为广泛,这种扫描技术包含了两种方式与若干种方法,在这里不可能一一介绍,下面将主要介绍两种方法的代表。

方法一:多套特征码

该方法采用两个或更多个字符串集来检测每个病毒,如果扫描器检测到其中一个特征符合,那么就会警告发现变种,但并不会执行下一步操作(例如清除病毒体或删除文件)。如果多个特征码全部符合,则报警发现病毒,并执行下一步操作。

方法二:效验和

对于校验和,也许有些朋友会想到文件校验和比对的方法,这个方法的思路是将每一个无毒的文件生成一个校验和,等待下次扫描时在进行简单的校验和比对即可,如果校验和有所变化,在进行进一步的扫描,这样有利于提升扫描器的效率,但是严格地说,这并不算是扫描技术。

效验和扫描技术利用的最为到位的就是比较出名的KAV(卡巴斯基)了,它的第二代扫描器就采用了密码效验和技术,并且没有使用任何搜索字符串技术。关于效验和是一个复杂的概念,简单的说就是通过对病毒中的某一段代码的计算,从而得出一个值(例如123XY4),与MD5加密有些相似,当然这样说不完全正确。

但KAV采用的是一种由卡巴斯基发明的一种叫做密码效验和的特殊算法,这种算法通常会产生两个值。而且病毒库的查询采用了特征码分类思想,例如扫描EXE文件时只调用与EXE文件有关的病毒库,而根据EXE文件的位置不同(例如文件头、入口点)又分为不同的子库,这样有利于提高扫描速度。

三、由此得出的一些经验

首先应该明白第一个例子介绍的通配符“0400 B801 020E 07BB ??02 %3 33C9 8BD1
419C”代表的肯定不是一个字节。

也就是说,杀毒软件厂商定位的特征一般都是数十字节,所以定位特征码时就要避免定位过于精确,一般保证在10字节以内就足够了!因为如果特征码定位的过于精确,会为以后的修改操作带来很大不必要的麻烦。可以简单的想一下,是修改一个字节的方法多,还是修改10字节的方法多?

而由智能扫描也可以得出一个结论,就是不要将杀毒软件想的太傻,例如属于智能扫描的一个分支——启发式扫描,它会将一些异常改动计算到可能性的“权值”里,如果一个文件的可疑改动过多,就会导致报毒,这样之前所做的一些工作就起到了相反的作用,是典型的画蛇添足。

所以,修改木马文件时也要掌握一个度的问题,不要修改的过多,但还要保证自己的木马免杀时间够长,这就要明白那些更改会被归为可疑修改,而那些则不会。

‘肆’ 为什么用易语言编辑软件会报毒啊

1、对于“病毒误报”,我们认为,易语言编译生成的EXE在运行时,绝大多数情况下CPU指令运行在支持库领空(仅少数在EXE领空,这与其它编译器生成的EXE的行为有很大不同),给杀毒软件查杀和机器分析造成了较大阻力,而且由于易语言影响力远不如JAVA/C/C++,很难吸引杀软厂商重视,从而导致误报时有发生。如果以上观点成立,则静态编译可以有效解决误报,因为静态编译后所有有效代码都在EXE内。

2、对于“静态编译”,是指在编译时,把支持库中被程序使用的有效代码按实际需要链接到EXE中,未被用到的则不链接。以后将不存在“即使仅仅使用一条命令也必须多带一个1M多的支持库文件”的现象。

3、对于所谓“脱库”,我们指的是“运行时不再必须依赖支持库文件”,而不是简单粗暴的“放弃使用支持库”。现有支持库内容丰富功能强大又易学易用,是易语言一大宝贵财富,是易语言核心价值的突出体现,绝对不会轻言放弃。

4、对于所谓“秒脱”,是指目前易语言编译出的EXE,由于有“易格式体”的存在,在被加壳保护之后,会被某些特定软件很容易的脱壳,因而不利于软件自我保护。新版易语言静态编译后,将取消“易格式体”,从而不会再有被“秒脱”的现象

热点内容
什么安卓手机可以用个两三年 发布:2025-02-08 11:02:37 浏览:966
安卓收银软件哪个好用 发布:2025-02-08 11:01:44 浏览:171
实现秘闻存储的方法 发布:2025-02-08 10:23:33 浏览:168
怎么在微信发文件夹 发布:2025-02-08 10:09:45 浏览:795
cryengine源码 发布:2025-02-08 09:50:58 浏览:394
aardio可以反编译吗 发布:2025-02-08 09:50:53 浏览:484
公司营业执照密码是什么 发布:2025-02-08 09:47:56 浏览:855
体验脚本 发布:2025-02-08 09:46:15 浏览:691
医学生需要什么配置的笔记本 发布:2025-02-08 09:45:34 浏览:772
骚扰电话数据库 发布:2025-02-08 09:45:34 浏览:180