⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cih.txt

📁 大家都很讨厌CIH 病毒
💻 TXT
📖 第 1 页 / 共 2 页
字号:
CIH 病毒原理的应用——物理内存的读写


 

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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -