个人产品
企业产品
安全信息
病毒专栏 | 漏洞专栏 | 木马专栏 | 防护专栏 | 安全业界 | 毒霸活动 | 热点专题 | 漫画安全 | 期刊订阅
302 Found

302 Found


nginx/1.0.5
告诉您的位置:首页 > 病毒专栏 > 病毒知识 > 正文
CIH 病毒原理的应用——物理内存的读写
2002年04月12日16:20:57 白云黄鹤BBS 
302 Found

302 Found


nginx/1.0.5
  Windows 95/98应用程序无法直接读写物理内存,如果使用VxD编程,可以调用VMM功能_MapPhysToLinear 将物理地址

  映射到线性地址再进行修改,但是这样就必须单独写一个VxD,比较麻烦,那么能不能在应用程序中直接调用VMM功能呢?

  一般不能,因为VMM功能要在Ring 0上调用,而一般的应用程序工作在Ring 3上,那么为什么CIH 病毒能够调用VMM功能呢,

  CIH病毒使用了一种技术,采用Intel处理器的中断从Ring 3转到Ring 0,我们完全可以借鉴这种技术来调用VMM功能, 下

  面的程序演示了如何修改物理内存——以在Windows 95加密程序中修改加密扇区大小(物理地址0000:0525H)为例:

  ;****************************************************************************

  ;* Windows 95加密软件核心模块之一--磁盘扇区大小修改程序 *

  ;* *

  ;* 本程序在Windows 95下修改内存物理地址0000:0525 处的磁盘扇区大小字节, *

  ;* 为了能够修改物理地址,本程序使用了VMM 功能_MapPhysToLinear将物理地址映射 *

  ;* 到线性地址进行修改。为了在应用程序中调用VMM 功能,本程序使用了CIH 病毒的 *

  ;* 原理,使用中断将系统由Ring 3转到Ring 0,然后调用VMM 功能。 *

  ;* 本程序中的过程ChangeSectorSize在VC中的原型可以写成: *

  ;* *

  ;* void _stdcall ChangeSectorSize(BYTE SectorSize); *

  ;****************************************************************************

  .386p

  .model flat,stdcall

  ;修改的中断号,如果本中断号改成3则可以防止Soft-ICE跟踪!

  HookExceptionNo EQU 05h

  .data

   IDTR_1 db 6 dup(0) ;保存中断描述符表寄存器

   OldExceptionHook dd 0 ;保存原先的中断入口地址

  .code

  ;修改扇区大小过程

  ChangeSectorSize PROC SectorSize:BYTE

   push eax

   ;获取修改的中断的中断描述符(中断门)地址

   sidt IDTR_1

   mov eax,dword ptr IDTR_1+02h

   add eax,HookExceptionNo*08h+04h

   cli

   ;保存原先的中断入口地址

   push ecx

   mov ecx,dword ptr [eax]

   mov cx,word ptr [eax-04h]

   mov dword ptr OldExceptionHook,ecx

  [iduba_page] pop ecx

   ;设置修改的中断入口地址为新的中断处理程序入口地址

   push ebx

   lea ebx,NewExceptionHook

   mov word ptr [eax-04h],bx

   shr ebx,10h

   mov word ptr [eax+02h],bx

   pop ebx

   ;执行中断,转到Ring 0(与CIH 病毒原理相似!)

   push ebx

   mov bl,byte ptr SectorSize ;扇区大小保存在bl寄存器中

   int HookExceptionNo

   pop ebx

   ;恢复原先的中断入口地址

   push ecx

   mov ecx,dword ptr OldExceptionHook

   mov word ptr [eax-04h],cx

   shr ecx,10h

   mov word ptr [eax+02h],cx

   pop ecx

   ;修改扇区大小过程结束

   sti

   pop eax

   ret

  ChangeSectorSize ENDP

  ;新的中断处理程序

  NewExceptionHook PROC

   push eax

   push ebx

   push ecx

   push edx

   push esi

   ;修改扇区大小

   push dword ptr 00000000h ;必须为0

   push dword ptr 00000001h ;字节数

   push dword ptr 00000525h ;物理地址0000:0525

   int 20h

   dd 0001006ch ;以上两条指令相当于 VMMCall _MapPhysToLinear

   pop esi

   pop esi

   pop esi

   mov byte ptr [eax],bl ;修改扇区大小

   ;中断处理程序结束

   pop esi

   pop edx

   pop ecx

   pop ebx

   pop eax

   iretd

  NewExceptionHook ENDP

  end

   本过程可以被C语言调用,编译方法:ml /c /coff w95enc.asm。请用MASM 6.11以上版本编译,不需要DDK。将编译

  生成的OBJ文件插入VC的工程中,并在VC程序中写上函数原型说明,就可以调用了。
[1] [2]     【】
【我要发表评论】【内容指正】【论坛】【推荐给好友】·【 】【打印】·【顶部】【关闭窗口
【相关文章】 【去论坛】
· 金山陈飞舟论述:三大因素注定CIH 不再可怕 2003-04-30 19:49
· 今年的4月26日比较平稳 但是防范之心不可少 2003-04-29 11:40
· 今天严防CIH变种等病毒 改计算机日期仍有效 2003-04-26 19:23
· 金山毒霸技术总监陈飞舟:三因素说CIH不可怕 2003-04-26 19:04
· 明天严防`CIH病毒变种` 改变日期是有效办法 2003-04-25 12:59
· 跳出4.26的CIH 误区 金山毒霸V测试强势推出 2003-04-24 20:23
· 4月26临近 面对“非典”CIH等病毒不必惊慌 2003-04-24 15:09
· 金山毒霸更新“CIH”专杀工具提供免费下载 2003-04-23 15:23
· 国家病毒应急处理中心:谨防CIH 4月26日发作 2003-04-22 15:56
· 三大恶性电脑病毒可能会在04月26日集体发作 2003-04-21 22:04
·金山毒霸单机版讨论区
·毒霸6测试专区
·金山网镖讨论区
·金山毒霸网络版讨论区
·毒霸在线业务专题讨论区
·安全软件讨论区
·病毒救援
【相关专题】
· 2003年病毒疫情调查专题 2003-04-27 13:48
· 再警惕CIH病毒专题 2003-04-18 15:22
· 警惕CIH再次爆发专题 2002-04-12 17:22
302 Found

302 Found


nginx/1.0.5
302 Found

302 Found


nginx/1.0.5
·全民围剿 新春无毒 
·
毒霸、网镖新功能体验版 
·
毒霸网络版2.0 sp1发布 
·
毒霸6新禧礼包惊喜登场
·
毒霸网络版 人人有礼
·毒霸网络版“租用服务”
·
金山毒霸网络版大事件
·第三次缉毒万里行专题
·JPEG图片病毒专题
·金山引爆“双响炮”计划
·金山毒霸6增强版介绍
·
十面埋伏围剿木马发布会
·
6.12北京用户产品座谈会
·
金山"网游防火墙"产品
·
反电子垃圾新功略专题
·“金山毒霸再获桂冠”
·金山“安全体验风暴”
·“冲击波”病毒之罪?
·全球黑客攻击专题
·金山毒霸V金山网镖V介绍
·金山V攻略详解专题
·金山毒霸&智冠捆绑销售
·金山软件爱心服务活动
·2003年病毒疫情调查专题
更多...
302 Found

302 Found


nginx/1.0.5
·病毒短信 ·在线杀毒
·病毒上报 ·专杀工具
·产品答疑 ·
媒体合作
金山简介 | 业务合作 | 广告服务 | 招聘信息 | 客服中心 | 网页报错 | 添加毒霸到QQ上
© 2007 Kingsoft Corp. 增值电信业务经营许可证B2-20040288号