Win32 下病毒设计入门详细说明(2)



  病毒名称:Hacktool 
  文件名:c:\winnt\system32\ntservice.exe 
  操作:删除失败,隔离失败,访问被拒绝 

  如何才能彻底 删除呢? 

  因为c:\winnt\system32\ntservice.exe已经在运行了,直接删除显然是不可能的。于是我运行Windows任务管理器,在进程选 项卡中选择结束ntservice.exe进程,结果系统显示“无法中止进程,拒绝访问”。 

  我突然想到在Win 2000(XP)的控制台状态下是可 以用DOS命令的。 

  什么是控制台 

  控制台是Windows的一种简易运行模式,它可以不启动图形界面而在命令行状态下有限制地访问 FAT和NTFS分区,并对系统进行一些设置和操作。通过控制台,我们可以更换系统文件、关闭或者禁用某个系统服务、禁用或卸载硬件 设备、修复引导扇区、新建分区以及格式化硬盘分区等。 

  启动控制台 

  对于Windows 2000,我们可以用光盘启动电脑,然后在安 装程序的选单中按R键选择“修复Windows 2000安装”,再从修复选单中按C键选择“故障恢复控制台修复Windows2000”。对于 WindowsXP,同样是用光盘启动电脑,然后按R选择修复,就能直接进入控制台。 

  直接把控制台的相关选项安装到启动菜单中的方 法:把光盘放入光驱,然后直接在运行中输入“d:\i386\winnt32/cmdcons”之后回车(这里假设你的光驱是D),再点击“是”,就可以把控 制台选项安装到高级启动菜单中,这样以后直接从硬盘就可以进入控制台中。这个方法适用于Windows 2000和Windows XP。 

  在控制台的 命令提示符下,为安全起见,我首先对ntservice.exe进行备份,然后直接运行:del c:\winnt\system32\ntservice.exe就OK了。 

  二、主要是要截留文件I/O操作 

  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的值 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/1472.html