关于PE病毒编写的学习(五)——病毒如何做标记和记录信息

1.做标记和记录信息的区别

   做标记:它是为了其它病毒识别自己,而在固定或符合一定规则的位置上记录的符号信息。

 

   记录信息:它是为了病毒本身正确运行,而存储的某些信息,甚至是部分代码,比如解密程序的随机密匙、所感染宿主文件的某些信息

 

2.那些地方可以做标记和记录信息

   (1)可标记的位置

       1/程序的入口区域和尾部区域;并非一定是开头和结尾,比如

              VirusStart:

                    ...

                    jmp $+3                          ;这里是示例代码,实际编写时,有时不可以用$+xx的方法,需要重定位的方法

                    WORD VirusSymbol 'VS'   ;用WinHex查出这里的位置,以后这个位置做检查就可以了

                    ...

 

        2/覆盖或改写PE结构上不使用或很少使用的位置:

                 这类方法很多,例如:(1)DOS stub的”This program must run in win32“字符串

                                               (2)PE结构上某些保留位置

                                               (3)PE结构上某些可以修改但不影响程序运行的值,比如代码节默认为.text或.code,但也可以改为.Virus

 

        3/针对编译器的固定习惯:比如,同一版本的编译器生成文件都有一样的启动代码,可以进行等价替换为其它代码,

                                                     或缩减代码留出位置做标记

                                                  

    (2)可记录信息的位置

        1/凡是上述可以做标记的位置都可以记录信息,如果空间足够

 

        2/注册表

 

        3/约定的位置文件创建文件用于记录信息

 

        4/偷偷混进常用软件的文档里,比如说明文件,帮助文件它们都很少被使用

 

 3. 做标记和记录信息的方法

     (1)做标记:

 

       1/ 固定标记:很多病毒病毒都直接留下有趣的标记

      

       2/ 规则标记: 标记并不一定是固定值,可以是校验和、规则数列...

 

       3/ 赌博:采用一些不确定行的方法,从宿主程序抽取某些数据或代码,然后备份到某处,

                    病毒识别时只要比较这两处就可以了,而正常程序也可能有重复的可能,杀毒软件

                    一定不敢和你赌。

    

     (2)记录信息:

       1/ 直接记录: 这样做也没什么大不了的,很多信息并不是病毒特有的

 

       2/ 加密:

 

很少有资料直接谈这个问题,我收集的这些恐怕远远不够,如您有好的想法,希望不吝赐教                                  

你可能感兴趣的:(win32病毒,编译器,杀毒软件,dos,解密,加密,文档)