CIH病毒原理的应用——物理内存的读写

原创 2000年12月04日 10:05:00

大家都很讨厌CIH 病毒,可毛老人家教导我们:“要一分为二地看问题”,CIH
病毒很可怕,但是它使用的某些特殊技术还是可以借鉴的,这样可以做到变害
为利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
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程序
中写上函数原型说明,就可以调用了。

Linux读写物理内存的实践环节

一、基础知识 1.打开设备文件: mem是一个字符设备文件,是计算机主存的一个映像。通常只有root用户对其有读写权限。因此只有root用户能进行这些操作。 如果要打开设备文件/de...
  • liuer2004_82
  • liuer2004_82
  • 2016年02月19日 08:59
  • 973

Bootkit病毒技术简介

摘要:Bootkit病毒是指寄存于磁盘主引导区,通过系统启动来进行提权的病毒(本文称其为引导区病毒)。磁盘的主引导区(英文缩写MBR,下文以MBR代指引导区),是指计算机的被设为启动磁盘的第一个扇区。...
  • cosmoslife
  • cosmoslife
  • 2013年06月07日 01:05
  • 812

Android----病毒查杀原理及应用

今天看到一篇帖子,是关于病毒查杀的问题,那片帖子写的很详细,将原理都讲述出来了,后来根据帖子的代码自己实例验证了一下,发现是可行的,所以,现在就记录一下学习的过程。(此文有借鉴的地方,关键是大家能学到...
  • xuewater
  • xuewater
  • 2013年11月04日 10:33
  • 1132

WDM驱动程序开发之读写设备存储器:KMemoryRange类

KMemoryRange类: 一、Overview     KMemoryRange类将一系列特殊的外围总线的地址映射到CPU总线的地址空间。考虑到可移植性,所有对memory周期(memor...
  • kulala082
  • kulala082
  • 2017年03月15日 16:40
  • 460

勒索病毒工作原理

前些天借着Windows上的”永恒之蓝“漏洞,本来几乎快销声匿迹的加密勒索病毒又重新回到了公众视线里。由于电信等网络运营商早就封堵了可能导致中毒的445端口,所以外网影响不大,但是教育网里的同学就遭殃...
  • qmickecs
  • qmickecs
  • 2017年05月22日 13:48
  • 3041

Linux下直接读写物理地址内存

虚拟 转 物理地址  virt_to_phys( *addr ); 物理 转 虚拟地址  phys_to_virt( *addr ); --------------------------------...
  • fz835304205
  • fz835304205
  • 2013年11月26日 14:04
  • 5559

深入理解内存:原理简介

我们知道冯.诺伊曼体系结构中是把计算机划分为输入设备,输出设备,存储器,控制器,运算器. 输入设备主要是键盘,鼠标,输出设备主要是显示器,打印机 控制器与运算器我们一般全称为CPU. 存...
  • lujiandong1
  • lujiandong1
  • 2015年03月23日 20:49
  • 1830

磁盘和内存读写简单原理

当程序要读取的数据时传入内存地址(行地址+列地址),如果数据不在主存中时,会触发一个缺页异常,此时系统会向磁盘发出读盘信号,通过柱面号,磁头号,扇区号定位磁盘位置,找到数据的起始位置并向后连续读取一页...
  • zhanghongzheng3213
  • zhanghongzheng3213
  • 2017年01月06日 18:32
  • 3048

杀毒软件的查杀病毒的原理以及木马、病毒的免杀伎俩(论杀或者不杀 )

杀毒软件的查杀病毒的原理以及木马、病毒的免杀伎俩(论杀或者不杀 ) 无意中在网上看到的,描述通俗易懂,基本全是基础知识,权当了解吧。 =============...
  • leolewin
  • leolewin
  • 2015年08月21日 20:41
  • 2091

网页病毒挂马原理解析

所谓的挂马,就是黑客通过各种手段,包括SQL注入,网站敏感文件扫描,服务器漏洞,网站程序0day, 等各种方法获得网站管理员账号,然后登陆网站后台,通过数据库 备份/恢复 或者上传漏洞获得一个webs...
  • bing_JavaScript
  • bing_JavaScript
  • 2016年05月05日 14:30
  • 878
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CIH病毒原理的应用——物理内存的读写
举报原因:
原因补充:

(最多只允许输入30个字)