Để khảo sát trên file bị lây nhiễm, chúng ta có trong tay file format.com bị lây nhiễm và file format.ok là file không bị lây nhiễm. File format.com bị lây nhiễm có kích thớc lớn hơn ban đầu DD8h (3544) byte. Kích thớc của file format.ok là 22916 byte (5984h), còn kích thớc của format.com là 26460 byte (675Ch).
Chúng ta sẽ so sánh đối chiếu hai file, kết hợp dịch ngợc để dò theo vết hoạt động của virus One Half.
Nh truyền thống, hai file khác nhau ở 3 byte đầu tiên, ở file bị nhiễm, đó là một lệnh nhảy: E9 EA 53 (jmp $+53EDh). Vị trí này không phải là phần đầu của mã virus ghép thêm vào file, mà đó là vị trí một đoạn mã ch- ơng trình đã bị nó thay thế. Đoạn mã đó bắt đầu từ 53EDh:
F9 FB 50 F5 F5 F9 F9 E9 F0 03 Dịch ngợc: stc sti push ax cmc cmc stc jmp $+03F3h ; (57E6h)
Đoạn thứ hai bị thay thế (bắt đầu tại offset 57E6h): FC F8 2E 16 F5 E9 03 FE
Dịch ngợc: cld clc
cs:
push ss
cmc
jmp $+FE06h ; (55F1h) Đoạn thứ ba bị thay thế (bắt đầu tại offset 55F1h): F9 2E F5 F8 36 1F E9 2B FC Dịch ngợc: stc cs: cmc clc ss: pop ds jmp $+FC2Eh ; (5225h) Đoạn thứ t bị thay thế (bắt đầu tại offset 5225h): 36 BF 84 5A F5 F5 E9 AD 03 Dịch ngợc: ss: mov di,5A84h cmc cmc jmp $+03B0h ; (55DBh)
Đoạn thứ năm bị thay thế (bắt đầu tại offset 55DBh): F8 B9 8C 58 3E FC 2E EB 5B Dịch ngợc: clc mov cx,588Ch ds: cld cs: jmp $+5Dh ; (563Fh)
Đoạn thứ sáu bị thay thế (bắt đầu tại offset 563Fh): 31 0D 3E 36 FB E9 85 02
xor [di],cx ds:
ss: sti
jmp $+0288h ; (58CCh)
Đoạn thứ bảy bị thay thế (bắt đầu tại offset 58CCh): 81 C1 01 B2 E9 48 FC
Dịch ngợc:
add cx,0201h
jmp $+FC48h ; (551Bh)
Đoạn thứ tám bị thay thế (bắt đầu tại offset 551Bh): 47 FB FD 2E 36 F8 E9 83 03 Dịch ngợc: inc di sti std cs: ss: clc jmp $+0383h ; (58A7h)
Đoạn thứ chín bị thay thế (bắt đầu tại offset 58A7h): F9 2E F5 F8 36 1F E9 2B FC
Dịch ngợc:
cmp di,685Ch
jmp $+FDAFh ; (565Dh)
Đoạn thứ mời bị thay thế (bắt đầu tại offset 565Dh): 75 E0 E9 71 06
Dịch ngợc:
jnz 563Fh ; nhảy trở lại đoạn thứ sáu jmp $+0671h ; (5CD3h)
Nh vậy virus One Half đã thay thế 10 đoạn mã trong file ban đầu bằng 10 đoạn mã của mình, tập hợp lại, chúng ta thấy nó làm các công việc nh sau:
Đoạn 1 push ax
Đoạn 4 mov di,5A84h
; Là kích thớc file ban đầu, cũng là offset 0 của virus Đoạn 5 mov cx,588Ch
Đoạn 6 xor [di],cx Đoạn 7 add cx,0B201h Đoạn 8 inc di
Đoạn 9 cmp di,685Ch ; Là kích thớc của file bị nhiễm Đoạn 10 jnz Đoạn 6
jmp 5CD3h
Nh vậy, chúng ta thấy phần cài trong thân của file nguyên thể giúp virus One Half giải mã toàn bộ phần mã của mình rồi mới nhảy tới vị trí hoạt động thực sự. Sau khi giải mã, phần ghép thêm của virus One Half của file nguyên thể chính là toàn bộ phần thân của One Half.
Lệnh tại địa chỉ offset 5CD3h của file tơng ứng với offset 034Fh trong phần thân của virus One Half. Chúng ta khảo sát chúng.
5DD3 call 5DD6h
5DD6 pop si ; si=5DD6h sub si,352h ; si=5A84h
mov [si+02B8],si ;Ghi si=5A84h vào off 2B8h của mã VR.
push es push si
cld
inc word ptr [si+0DD6h] mov byte ptr [si+0BABh],74h xor ax,ax
mov es,ax
mov ax,es:[046Ch] ; ax=đếm thời gian 18.2lần/s mov [si+56Ah],ax
mov [si+0D71h],ax mov ax,4B53h
cmp ax,454Bh ; Đã nhiễm trong bộ nhớ trong jz 5E67h
... ; Install virus vào bộ nhớ và đĩa cứng. 5E67 jmp 5F1Fh
...
5F1F pop bx ; bx=offset 0 của virus push cs
pop ds push cs pop es
lea si,[bx+40h] ; si=offset 40h của thân virus add bx,2Ah ; bx=offset 2Ah của virus mov cx,0Ah loc_loop_1: mov di,[bx] push cx mov cx,0Ah repz movsb pop cx inc bx inc bx loop loc_loop_1 ...
mov si,bx ; bx=5A94h mov di,100h mov cx,3 repz movb pop ax jmp 5F9Dh ... 5F9D jmp far cs:[bx+14h] ; jmp cs:100
Đoạn mã từ 5F1Fh đã thể hiện cách thay thế trở lại các đoạn mã ch- ơng trình nguồn sau khi virus hoạt động xong. Chúng tiến hành thay thế 0Ah (10) đoạn, mỗi đoạn 0Ah (10) byte, các đoạn liên tiếp nhau bắt đầu từ địa chỉ offset 40h trong phần thân của virus, còn địa chỉ offset trong chơng trình nguồn đợc thay thế là 0Ah (10) word liên tiếp, bắt đầu từ địa chỉ
offset 2Ah trong phần thân của virus. Còn 3 byte đầu tiên đợc cất tại offset 10h trong phần thân của virus.
Các kết quả trên đã đợc kiểm tra lại trên một số file dạng .COM bị nhiễm One Half khác nh COMMAND.COM, SK.COM.