分享
 
 
 

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

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

大家都很讨厌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程序

中写上函数原型说明,就可以调用了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有