- 帖子
- 336
- 精华
- 0
- 积分
- 684
- 智慧
- 336
- V 币
- 0
- 贡献
- 0
- 金豆
- 1008
- MV号码
- 1777777
- 注册时间
- 2010-4-29
- 最后登录
- 2011-2-17
|
楼主
发表于 2010-5-6 20:22
| 只看该作者
启发式引擎的目标是自动化地区分正常程序与非正常程序,因此就要“尽一切可能”利用两者的不同点,哪怕这不同点很无赖,但是只要它是有效的,就是正确的
早期的启发式引擎主要是用来针对感染文件的病毒,不过这和熊猫烧香之辈有天壤之别。首先以前的文件感染病毒一般都是用汇编写的。其次,感染方法上,以前的文件感染病毒是把自己插入感染目标作为其一部分,而不像熊猫烧香那样把感染目标捆绑为自己的一部分。针对 以前的文件感染病毒,启发式引擎一般采用查找重定位指令、反EPO(对抗入口点模糊)、虚拟机(对抗多态)等方法,不过谈这个未免太枯燥,大家有兴趣自己 查查吧,更何况现在真正意义上的文件感染病毒少之又少。
到最近,恶意程序发生的最大变化就是,它们一般都是用高级语言(VC++、VB、Delphi...)写成,而且一般都是独立一个文件(不再插入别人感染),以往的启发式引擎面临变革。
API(Application Programming Interface),微软提供给编程者的接口,给编程者提供了极大的方便。举个例子,我要写一个读硬盘文件的程序,如果我要直接操作硬盘,那么意味着我 要了解硬盘的基本架构、我要了解不同的分区方式,以及FAT、FAT32、NTFS...,一个小小的程序足以把我累死,而且万一我的程序出问题了,整个 硬盘数据可能就报销了。有了API以后,我只要调用ReadFile等API函数,剩余的工作就可以交给Windows做了,而Windows的代码一般 可以确保其高效性和可靠性。 换句话说,探知程序调用了哪些API就可以大致了解它要干什么了。
PE(Portable Executables)的格式,每个EXE文件都有自己的格式,并不是从第一个字节开始就是代码。引入表其中告诉系统这个EXE要调用哪些API。当系统加载EXE的时候,会根据引入表中的信息,把正确的API函数的位置填入引入表,这样EXE就能正常调用API了。除了用于存放代码的代码段,EXE文件中还有用于存放字符串等数据的数据段。对于更复杂、体积更大的数据,比如图像、运行中要释放的子文件、窗口的布局等则会作为资源存放。 |
|