tu tao cong cu phong chong virus

Transcription

tu tao cong cu phong chong virus
VIETBOOK
Tûå taåo cöng cuå phoâng chöëng File Virus
àöëi vúái nïìn tin hoåc hiïån nay úã nûúác ta, coá leä virus maáy tñnh khöng coân laâ àiïìu múái laå. Coá thïí vaâo möåt
buöìi saáng àeåp trúâi naâo àoá trïn maân hònh chiïëc maáy tñnh thên yïu cuãa baån xuêët hiïån nhûäng cêu thöng baáo kyâ
laå cuãa "keã khuãng böë" cuâng vúái viïåc àôa cûáng böîng trúã nïn "saåch seä", vêåy laâ bao nhiïu cöng lao vaâ haâng
thaáng trúâi laâm viïåc phuát chöëc tan thaâ nh mêy khoái. Thûúâng gùåp nhêët coá leä laâ caác File Virus, àêy laâ loaåi virus
lêy vaâo caác têåp tin chûúng trònh (com, exe, sys...). Möåt söë thûúâng àem laåi nhiïìu phiïìn toaái, xoaá hoùåc phaá
hoãng têåp tin, format àôa cûáng... nhû Datalock, Little girl, White rose, Mario... Àïí giuáp caác baån coá thïí yïn
têm hún khi laâm viïåc, chuáng ta seä cuâng xêy dûång möåt chûúng trònh coá khaã nùng phaát hiïån sûå lêy nhiïîm cuãa
caác File virus vaâo möåt têåp tin khi chuáng àûúåc thi haânh. Chûúng trònh coá khaã nùng naây dûåa vaâo àùåc àiïím
nïëu virus lêy vaâo têåp tin naâo thò kñch thûúác cuãa têåp tin àoá seä tùng lïn. Caách hoaåt àöång nhû sau: Chûúng
trònh seä lûu laåi kñch thûúác cuãa têåp tin vaâ lûu vaâo cuöëi möåt àoaån maä, möîi lêìn chûúng trònh cuãa baån thi haânh,
àoaån maä seä àûúåc goåi trûúác vaâ tûå àöång tòm laåi têåp tin àang thi haânh àïí kiïím tra kñch thûúác cuãa noá, nïëu phaát
hiïån chïnh lïåch giaá trõ giûäa kñch thûúác cuä vaâ múái seä àûa ra thöng baáo cho ngûúâi sûã duång. Nhû vêåy chûúng
trònh seä chia ra laâm hai phêìn: phêìn caâi àùåt vaâ àoaån maä cheân thïm.
Phêìn caâi àùåt:
Phêìn naây coá nhiïåm vuå gùæn thïm möåt àoaån maä vaâo cuöëi têåp tin àûúåc chó àõnh trïn doâng lïånh. Àêy laâ phêìn
phûác taåp nhêët àöëi vúái möåt chûúng trònh thuöåc loaåi naây, noá phaãi laâm caác cöng viïåc sau:
- Múã têåp tin àûúåc chó àõnh vaâ kiïím tra, nïëu têåp tin àaä àûúåc baão vïå thò dûâng chûúng trònh. Chûúng trònh
nhêån biïët àûúåc àiïìu naây bùçng caách so saánh möåt chuöîi kyá tûå úã cuöëi têåp tin àöëi tûúång vúái chuöîi kyá tûå úã cuöëi
àoaån maä caâi thïm, àêy cuäng laâ caách maâ nhiïìu virus sûã duång.
- Lêëy kñch thûúác cuãa têåp tin cöång vúái kñch thûúác àoaån maä vaâ lûu laåi, giaá trõ naây vïì sau seä àûúåc duâng àïí
kiïím tra möîi lêìn chûúng trònh thi haânh.
- Gùæn àoaån maä thïm vaâo cuöëi têåp tin àöëi tûúång, tuyâ thuöåc vaâo loaåi chûúng trònh àïí coá caác caách khaác
nhau. Àöëi vúái têåp tin daång COM, chûúng trònh seä thay thïë 3 bytes àêìu bùçng möåt lïånh nhaãy àïën àoaån maä,
ngûúåc laåi nïëu têåp tin daång EXE, caác giaá trõ CS vaâ IP trong EXE Header seä àûúåc àiïìu chónh phuâ húåp àïí
àiïím vaâo cuãa chûúng trònh cuäng chñnh laâ àêìu vaâo àoaån maä thïm. Hai loaåi chûúng trònh naây àûúåc phên biïåt
búãi 2 bytes nhêå n diïån 'MZ' taåi àêìu têåp tin, kiïíu cuãa chûúng trònh cuäng àûúåc lûu laåi vò ûáng vúái möîi loaåi cuäng
seä coá caác caách traã àiïìu khiïín khaác nhau.
Àoaån maä caâi thïm:
Àoaån maä naây àûúåc nöëi thïm vaâo cuöëi têåp tin àöëi tûúång vaâ àûúåc giao quyïìn àiïìu khiïín möîi khi chûúng
trònh thi haânh. Noá coá nhiïåm vuå kiïím tra kñch thûúác chûúng trònh àöëi tûúång vaâ baáo löîi nïëu thêëy khöng phuâ
húåp. Cuå thïí laâ caác bûúác sau:
- Tòm tïn têåp tin àang thi haânh: Bùæt àêìu tûâ DOS 3. 0, tïn chûúng trònh àang thi haânh seä àûúåc lûu cuöëi
khöëi möi trûúâng. Àöëi vúái caác ngön ngûä lêåp trònh bêåc cao nhû Pascal,C/C++... baån coá thïí truy xuêët bùçng haâm
ParamStr hoùåc àöëi söë argv cuãa haâm main(). Sau caác chuöîi möi trûúâng hònh thûác laâ àïën möåt word bùçng 0 vaâ
möåt word bùçng 1, cuöëi cuâng laâ chuöîi ASCII chûáa tïn chûúng trònh kïët thuác bùçng byte 0.
- Kiïím tra kñch thûúác: Sau khi àaä tòm thêëy tïn chûúng trònh, àoaån maä seä thûåc hiïån kiïím tra kñch thûúác vaâ
baáo löîi nïëu thêëy khöng phuâ húåp. Seä coá 3 lûåa choån daânh cho baån: Abort - Dûâng ngay chûúng trònh, Continue
- Tiïëp tuåc thûåc hiïån vaâ Reboot àïí khúãi àöång laåi maáy.
Lûu yá rùçng nïëu têåp tin cuãa baån àaä nhiïîm virus trûúác khi baån baão vïå noá thò chñnh baån àaä tiïëp tay cho virus
traánh khoãi cùåp mùæt nhoâm ngoá cuãa caác chûúng trònh Antivirus. Ngoaâi ra, nïëu baån sûã duång àuáng, nhûng sau
àoá têåp tin àoá laåi bõ nhiïîm virus thò khi chaåy, virus laåi àûúåc goåi trûúác àoaån maä thïm vaâ nhû vêåy coá nghôa laâ
virus rêët coá thïí àaä nhiïîm vaâo böå nhúá trûúác khi baån phaát hiïån ra noá. Nhû vêåy, nïëu nhêån àûúåc thöng baáo, baån
nïn thoaát khoãi chûúng trònh vaâ lûu laåi nhûäng gò quan troång vaâo núi an toaân, sau àoá khúãi àöång laåi maáy vaâ
chaåy caác chûúng trònh anti virus àïí tiïu diïåt virus àoá. Sau àêy laâ nöåi dung chûúng trònh, baån coá thïí duâng
caác chûúng trònh dõch húåp ngûä nhû Turbo Assembler, Microsoft Assembler, A86... àïí dõch noá ra daång
COM. Sûã duång vúái cuá phaáp sau:
FPROTECT filename
filename laâ tïn chûúng trònh cêìn baão vïå, àïí coá thïí baão vïå têët caã caác têåp tin trong möåt thû muåc, baån coá thïí
sûã duång lïånh FOR cuãa DOS nhû sau (giaã sûã caác têåp tin àang úã thû muåc hiïån haânh):
Trang 1
VIETBOOK
FOR %I IN (*.COM) DO FPROTECT %I
FOR %I IN (*.EXE) DO FPROTECT %I
Sau àêy laâ nöåi dung chûúng trònh:
(Xem chûúng trònh Fprotect.asm)
Àïí kiïím tra khaã nùng laâm viïåc cuãa chûúng trònh, baån coá thïí thûã caâi vaâo möåt chûúng trònh nhoã, chùèng haån
nhû Format.com:Fprotect Format.com
Sau àoá taåo möåt têåp tin khaác coá nöåi dung tuyâ yá vaâ gheáp chuáng laåi vúái nhau:
COPY CON TEMP.TXT
...^Z
COPY/B FORMAT.COM TEMP.TXT
Bêy giúâ möîi khi chaåy Format.com baån seä nhêån àûúåc thöng baáo: Warning: Size was changed! Continue,
Abort or Reboot(C, A, R)? Goä C àïí tiïëp tuåc, A kïët thuác chûúng trònh vaâ R àïí khúãi àöång laåi maáy.
Chûúng trònh baão vïå file FPROTECT.ASM
WriteSize = offset Write_End - offset Write_Begin
COMType = 'C'
EXEType = 'E'
HeaderSize= 1Ch
Code Segment
Assume Cs:Code, Ds:Code, Es:Code, SS:Code
Org 80h
ParamLength Db ?
ParamStr Db ?
Org 100h
Start:
Jmp Real_Start
Write_Begin:
Call GetAddress
GetAddress:
Pop Bx
Sub Bx, 3;Lay dia chi Write_Begin vao Bx
Cli
Mov Cs: [Bx + Begin_Ss - Write_Begin], Ss
Mov Cs: [Bx + Begin_Sp - Write_Begin], Sp
Mov Ax, Cs
Mov Ss, Ax
Mov Sp, offset File_Stack
Add Sp, Bx
Sti
Push Ds
Mov Ds, Word ptr Ds: [2Ch]
Xor Si, Si
Mov Cx, 7FFFh
Cld
Search: ;Tim ten tap tin trong khoi moi truong
Lodsb
Cmp Al, 0
Jne Search
LodSb
Cmp Al, 0
Loopne Search
Add Si, 2
Mov Ax, 3D00h
Mov Dx, Si
Int 21h
Pop Ds
Push Bx
Mov Bx, Ax
Mov Ax, 4202h;Lay kich thuoc tap tin
Xor Cx, Cx
Xor Dx, Dx
Trang 2
VIETBOOK
Int 21h
Push Ax;Dong tap tin
Mov Ah, 3Eh
Int 21h
Pop Ax
Pop Bx
Cmp Dx, Cs: [Bx + SaveSizeDx - Write_Begin]
Jne Warning
Cmp Ax, Cs: [Bx + SaveSizeAx - Write_Begin]
Jne Warning
Return:
Mov Si, offset FileType - offset Write_Begin
Add Si, Bx
Cmp Byte ptr Cs: [Si], EXEType
Je EXE_Return
COM_Return:
Cli
Mov Sp, Word Ptr [Bx+Offset Begin_Sp-offset Write_Begin]
Mov Ss, Word Ptr [Bx+Offset Begin_Ss-offset Write_Begin]
Sti
Mov Di, 100h
Push Di
Mov Si, Offset Old_Data - offset Write_Begin
Add Si, Bx
Mov Ax, Cs
Mov Es, Ax
Mov Ds, Ax
Cld
Mov Cx, 3
Rep MovSb
Ret
EXE_Return:
Cli ;Tra loi ngan xep
Mov Sp, Word Ptr Cs: [Bx+Offset Old_Sp-offset Write_Begin]
Mov Ss, Word Ptr Cs: [Bx+Offset Old_Ss-offset Write_Begin]
Sti
Mov Ax, Ds;Dat dia chi tro vao ve
Add Ax, 10h;ngan xep
Add Ax, Word Ptr Cs: [Bx+Offset Old_Cs-offset Write_Begin]
Push Ax
Mov Ax, Word Ptr Cs: [Bx+Offset Old_Ip-offset Write_Begin]
Push Ax
Retf ;Tro ve
Warning:
Mov Ah, 9;Ghi thong bao
Push Ds
Push Cs
Pop Ds
Mov Dx, offset WarningMsg - offset Write_Begin
Add Dx, Bx
Int 21h
Pop Ds
ReadKey:
Xor Ah, Ah;Doc phim
Int 16h
Push Ax
Mov Ah, 2
Mov Dx, 0A0Dh
Int 21h
Xchg Dh, Dl
Int 21h
Pop Ax
Cmp Al, 'C'
Je Return
Cmp Al, 'c'
Je Return
Cmp Al, 'A'
Je Abort
Cmp Al, 'a'
Je Abort
Cmp Al, 'R'
Trang 3
VIETBOOK
Je LReboot
Cmp Al, 'r'
Je LReboot
Jmp short ReadKey
Abort:
Mov Ax, 4CFFh ;Ket thuc chuong trinh
Int 21h;tro ve ma loi 255
LReboot:
Mov Ax, 0FFFFh;Khoi dong lai may
Push Ax
Inc Ax
Push Ax
Retf
Old_Data Db 0,0,0
Old_Sp Dw 0
Old_Ss Dw 0
Old_Ip Dw 0
Old_Cs Dw 0
Begin_Ss Dw 0
Begin_Sp Dw 0
FileType Db 0
SaveSizeDx Dw 0
SaveSizeAx Dw 0
Warningmsg Db 13,10
Db 'Warning: Size was changed! Continue, Abort or Reboot'
Db ' (C,A,R)? $'
ProgramID Db 13,10,'FPROTECT - Dao Hai Nam - K.95'
ID_Length equ $ - offset ProgramID
Write_End:
Db 100h dup (0)
File_Stack:
Real_Start:
Cmp ParamLength, 0
Jz NoParam
Mov Dx, offset Message
Mov Ah, 9
Int 21h
Mov Bl, ParamLength
Xor Bh, Bh
Mov Byte ptr [Bx + 80h], 0
Mov Dx, 82h
Call InstalltoFile
Int 20h
NoParam:
Mov Dx, offset NoParam_Msg
Mov Ah, 9
Int 21h
Int 20
InstalltoFile proc near
Jmp short Install_to_File
Unable:
Mov Dx, offset Unable_Msg
Mov Ah, 9
Int 21
Error:
Pop Dx
Pop Cx
Pop Bx
Pop Ax
Ret
Install_to_File:;Ds:Dx chua ten tap tin
Push Ax
Push Bx
Push Cx
Push Dx
Mov Ax, 4300h;Lay thuoc tinh
Int 21h
Jc Error
Mov FileAttr, Cx
Mov Ax, 4301h;Dat thuoc tinh
Mov Cx, 0
Trang 4
VIETBOOK
Int 21h
Mov Ax, 6C00h
Mov Bx, 0010000001000010b
Mov Si, Dx;Ds:Si chua ten tap tin
Push Dx
Mov Dx, 1
Int 21h
Jc Unable
Mov Bx, Ax;Bx chua File Handle
Mov FileHandle, Bx
Mov Ax, 5700h;Lay ngay gio tao tap tin
Int 21h
Jc Error
Mov FileTime, Cx
Mov FileDate, Dx
Mov Ah, 3Fh;Doc Header
Mov Dx, offset Header
Mov Cx, HeaderSize
Int 21h
Jc Close
Mov Ax, Word Ptr Header
Mov Word Ptr Old_Data, Ax
Mov Ax, Word Ptr [Header+2]
Mov Word Ptr [Old_Data+2], Ax
Mov Ax, 4202h;Di chuyen toi cuoi
Xor Cx, Cx;tap tin
Xor Dx, Dx;Dx:Ax chua kich thuoc
Int 21h;tap tin
Push Ax
Push Dx
Add Ax, WriteSize;Luu lai kich thuoc tap tin
Adc Dx, 0
Mov SaveSizeDx, Dx
Mov SaveSizeAx, Ax
Pop Dx
Pop Ax
Call Installed
Jc Close
Cmp Word Ptr [Header], 'ZM';Neu la EXE file thi goi
Je CallEXE;AppendEXEfile
Mov FileType, COMType
Call AppendCOMFile
Jmp Short Close
CallEXE:
Mov FileType, EXEType
Call AppendEXEFile
Close:
Mov Dx, FileDate;Tra lai ngay gio
Mov Cx, FileTime
Mov Ax, 5701h
Mov Bx, FileHandle
Int 21h
Mov Ah,3Eh;Dong tap tin
Int 21h
Mov Ax, 4301h;Dat lai thuoc tinh
Mov Cx, FileAttr
Pop Dx
Int 21h
Jmp Error;Tro ve ngat cu
InstalltoFile endp
Installed proc near
Sub Ax, ID_Length
Sbb Dx, 0
Jc Close
Mov Cx, Dx
Mov Dx, Ax
Mov Ax, 4200h
Int 21h
Mov Ah, 3Fh
Mov Cx, ID_Length
Mov Dx, offset Buffer
Trang 5
VIETBOOK
Int 21h
Jc WasIns
Push Si
Push Di
Mov Si, offset Buffer
Mov Di, offset ProgramID
Mov Cx, ID_Length
Cld
Repe CmpSb
Pop Di
Pop Si
Jcxz WasIns
Clc
Ret
WasIns:
Stc
Ret
Installed endp
AppendEXEfile proc near
Jmp Short EXEFile_Begin
EXEfile_Return:
Pop Dx
Pop Cx
Pop Bx
Pop Ax
Ret
EXEFile_Begin:
Push Ax
Pus Bx
Pus Cx
Pus Dx
Mov Ax, Word Ptr [Header+14h];Luu lai Cs va Ip
Mov Old_Ip, Ax
Mov Ax, Word Ptr [Header+16h]
Mov Old_Cs, Ax
Mov Ax, Word Ptr [Header+0Eh];Luu lai Sp va Ss
Mov Old_Ss, Ax
Mov Ax, Word Ptr [Header+10h]
Mov Old_Sp, Ax
Mov Ax, 4202h;Di chuyen toi cuoi
Xor Cx, Cx;tap tin
Xor Dx, Dx;Dx:Ax chua kich thuoc
Int 21h;tap tin
Mov Si, Offset Header;Tinh do doi cho doan
Mov Cx, 200h;ma them
Div Cx
Mov Bx, Ax
Mov Cl, 5
Shl Ax, Cl
Sub Ax, [Si+8]
Mov Word Ptr [Si+16h], Ax
Mov Word Ptr [Si+14h], Dx
Mov Ax, Dx;Tim chieu dai theo cac
Add Ax, WriteSize
Xor Dx, Dx;trang 512 byte,ke ca
Mov Cx, 200h;Header
Div Cx
Add Bx, Ax
Or Dx, Dx
Jz No_Inc
Inc Bx
No_Inc:
Mov [Si+4], Bx;Luu chieu dai tim duoc
Mov [Si+2], Dx;vao Header
Mov Ax, 4202h;Xuong cuoi tap tin
Xor Cx, Cx
Xor Dx, Dx
Int 21h
Mov Bx, FileHandle
Mov Ah, 40h;Them phan duoi
Mov Dx, Offset Write_Begin
Trang 6
VIETBOOK
Mov Cx, WriteSize
Int 21h
Mov Ax, 4200h;Ve dau tap tin
Mov Bx, FileHandle
Xor Cx, Cx
Xor Dx, Dx
Int 21h
Mov Ah, 40h;Ghi Header da dieu
Mov Cx, HeaderSize;chinh vao lai tap tin
Mov Dx, Offset Header
Int 21h
Jmp EXEFile_Return
AppendEXEfile endp
AppendCOMfile proc near
Push Ax
Push Bx
Push Cx
Push Dx
Mov Bx, Filehandle;Toi cuoi tap tin
Mov Ax, 4202h
Xor Cx, Cx
Mov Dx, Cx
Int 21h
Sub Ax,3
Mov Addr, Ax
Mov Ah, 40h;Ghi ban than vao cuoi tap tin
Mov Bx, FileHandle
Mov Dx, offset Write_Begin
Mov Cx, WriteSize
Int 21h
Jc COMFile_Return
Mov Ax, 4200h;Ve dau tap tin
Xor Cx, Cx
Mov Dx, Cx
Int 21h
Jc COMFile_Return
Mov Ah, 40h;Ghi lenh nhay
Mov Dx, offset Jmp_Cmd
Mov Cx, 3
Int 21h
COMFile_Return:
Pop Dx
Pop Cx
Pop Bx
Pop Ax
Ret
AppendCOMfile endp
Jmp_Cmd Db 0E9h
Addr Dw 0
Message Db 13,10
Db 'FPROTECT-Written by Dao Hai Nam-Da Lat Univerity K95.'
Db 13,10,'$'
NoParam_Msg Db 'Required parammeters missing -',13,10,'$'
Unable_Msg Db 'Unable to open file -',13,10,'$'
Header Db HeaderSize dup (0)
FileAttr Dw 0
FileDate Dw 0
FileTime Dw 0
FileHandle Dw 0
Buffer Db 8 dup (0)
Code ends
End Start
Trang 7

Documents pareils