网络通信 频道

教你如何编制Win9X下的病毒

 看本文你对dos下的病毒和386PM必须有一定的了解。
  1、感染
   任何一个病毒都需要有寄主,把病毒代码加入寄主程序中(伴侣病毒除外)。

以下说明如何将病毒代码嵌入PE文件中,有关PE文件的结构请自己查看资料。
   PE文件的典型结构:
   MZ Header
   DOS STUB CODE
   PE HEADER
   OPTIONAL HEADER
   SECTION TABLE
   SECTION 1
   SECTION 2
   ...
   IMPORT TABLE
   EXPORT TABLE
   和DOS的可执行文件类似,PE的代码映象分为几个SECTION,在文件中会对齐页边界(4K)。一般来说,文件会加载在400000h开始的空间,而第一个SECTION在401000h处,同时入口地址也是401000h。由高级语言编写的程序,每个SECTIO-N的长度不可能刚好是4K的倍数,因此在SECTION的末尾将会存在一段未用的空间,大小可由Section的PHYSICAL SIZE-VIRTUAL SIZE得到,在文件中起始位置可由
PHYSICAL OFFSET得到,这段空间可以用来存放病毒代码。此外一般来说, MZ Header+DOS STUD+PE HEADER+OPTIONAL HEADER+SECTION TABLE不过1K左右,而SECTION 1由4K开始,空出来的地方足够存放一个设计精良的病毒。CIH就是将代码存放在这些空闲空间里。
   2、分配驻留所需内存
   对于驻留形的病毒,分配驻留所需内存是必需的。在DOS下使用由于所有的应用程序都映射在相同的线性地址空间里,使用一般的内存分配调用就足够了。而在WIN32下,每个应用程序都有自己的线性地址空间,必须使用特殊的函数分配2GB以上的系统地址。典型的如:VXD服务_PageAllocate,和kernel32的VxDCALL_PageReserve。_PageAllocate请参看win98ddk中的说明,VxDCall _PageReserve
请参看HPS源码中的注释。
   3、截留FILE I/O操作
   驻留型的病毒通过截留FILE I/O来激活,可以通过使用VXD服务IFSMgr_Install-FileSystemAPIHook(如CIH)或截留VxDCall中的DOS Services callback(如HPS)。
   Windows下截留文件I/O操作有几种方法,在病毒中使用的主要有两种。
   1、使用VxDCallIFSMgr_InstallFileSystemHook
   2、截留Kernel32.dll中导出的第一个函数VxDCall对DOS
INT 21的呼叫(EAX=2A0010)。
   VxDCall的代码如下:
   mov eax,dword ptr [esp+04]
   pop dword ptr [esp]
   call fword ptr cs:[xxxxxxxx]
            ^^^^^^^^只要将这个地址指向的地址改为自己的过程入口,
   就捕获了所有的VxDCall。
   进入这个过程时:
    eax=service number,如果是DOS INT 21将是2A0010
    esp[2c]调用Int 21时eax的值
     ~~~~ 算漏了个pushad,应该是10h

   esp[30] 调用int 21时ecx的值
     ~~~~14h

   其他寄存器为调用时所需的值。(段寄存器无用) 以后的就和在DOS下写病毒没什么差别了

文章转载地址:http://www.cnpaf.net/Class/Virus/05122020353938798875.htm

0
相关文章