mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2026-06-16 15:59:24 +00:00
re-organize
push
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
;This is a disassembly of Thunderbyte's anti-viral partition code.
|
||||
;An org statement was not used because it appears that all offsets used
|
||||
;herein are either relative or absolute, i.e. it just doesn't matter.
|
||||
;This should be compiled as a binary image file, it *WILL NOT* create
|
||||
;an executable file. This code is exactly 512 bytes long and should be
|
||||
;implanted into the hard drive at physical sector 1, cylinder 0, head 0
|
||||
;using the BIOS direct write to disk function. *DO NOT* use DOS write to
|
||||
;disk functions or DEBUG because these functions can't access hidden sectors
|
||||
;and you'll probably just overwrite the disk drive.
|
||||
|
||||
;have fun, folks!
|
||||
|
||||
code_start:
|
||||
|
||||
cli ;no interrupts
|
||||
xor cx, cx
|
||||
mov ss, cx
|
||||
mov sp, 7c00h
|
||||
mov si, sp
|
||||
sti
|
||||
cld
|
||||
|
||||
mov es, cx ;cs already equals 0
|
||||
mov ds, cx
|
||||
|
||||
mov di, 0600h ;
|
||||
|
||||
mov ch, 01 ;cx = 100h
|
||||
repz movsw ;mov 200h bytes from 0000:7c00h to 0000:0600h
|
||||
;to make room for boot sector
|
||||
|
||||
jump_pt db 0e9h, 00, 8ah ;this will act like far jmp to first_pt label
|
||||
;i.e. 0000:061ah, wraps around segment
|
||||
first_pt: ;when execution continues, this will be offset
|
||||
;061ah here
|
||||
mov si, 06ddh
|
||||
call routine_1
|
||||
mov si, 07eeh
|
||||
call routine_2
|
||||
mov bp, si
|
||||
mov si, 0733h
|
||||
jb second_pt
|
||||
|
||||
mov bx, sp ;buffer at stack pointer (7c00h?)
|
||||
mov ax, 0201h ;func 2, 1 sector - possibily boot sector?
|
||||
int 13h ;BIOS read sector
|
||||
|
||||
mov si, 0725h
|
||||
second_pt:
|
||||
jb sixth_pt
|
||||
|
||||
mov si, 745h
|
||||
call routine_1
|
||||
call routine_1
|
||||
|
||||
mov si, 7c40h
|
||||
mov cx, 01c0h
|
||||
loop_1:
|
||||
xchg ax, bx
|
||||
shl bx, 1
|
||||
lodsb ;from 0000:7c40h
|
||||
add ax, bx
|
||||
mov ah, bh
|
||||
test ah, ah
|
||||
jns third_pt
|
||||
xor ax, 0a097h
|
||||
third_pt:
|
||||
loop loop_1
|
||||
|
||||
cmp ax, 7805h
|
||||
jnz fourth_pt
|
||||
mov si, 0740h
|
||||
call routine_1
|
||||
|
||||
mov si, 0762h
|
||||
call 01cdh
|
||||
mov dx, [si + 0fc9fh]
|
||||
cmp dx, 27eh
|
||||
jb fourth_pt
|
||||
|
||||
mov si, 740h
|
||||
call routine_1
|
||||
mov si, 774h
|
||||
call routine_1
|
||||
|
||||
les ax, [004c]
|
||||
mov bx, es
|
||||
mov cl, 04
|
||||
shr ax, cl
|
||||
add ax, bx
|
||||
inc cx
|
||||
inc cx
|
||||
shl dx, cl
|
||||
cmp ax, dx
|
||||
jnb fifth_pt
|
||||
|
||||
fourth_pt:
|
||||
mov si, 0787h
|
||||
call routine_1
|
||||
int 16h
|
||||
mov si, 783h
|
||||
or al, 20h
|
||||
cmp al, 79h
|
||||
jnz seventh_pt
|
||||
|
||||
fifth_pt:
|
||||
call routine_1
|
||||
mov si, bp
|
||||
mov dx, [si]
|
||||
jmp sp ;control goes to boot sector
|
||||
|
||||
sixth_pt:
|
||||
call routine_1
|
||||
int 16h
|
||||
|
||||
seventh_pt:
|
||||
int 18h ;rom BASIC!
|
||||
|
||||
eighth_pt:
|
||||
jmp eighth_pt ;infinite loop Lock Up!
|
||||
|
||||
|
||||
routine_2:
|
||||
lea di, [si - 30h]
|
||||
boot_chk:
|
||||
cmp byte ptr [si], 80h ;looks like check for bootable parttn
|
||||
jz bootable
|
||||
sub si, 10h
|
||||
cmp si, di
|
||||
jnb boot_chk
|
||||
ret
|
||||
bootable:
|
||||
mov dx, [si]
|
||||
mov cx, [si + 2]
|
||||
return_pt:
|
||||
ret
|
||||
|
||||
routine_1:
|
||||
lodsb
|
||||
cbw ;convert to word
|
||||
test ax, ax ;huh?
|
||||
jz return_pt ;like ret to original caller
|
||||
|
||||
mov ah, 0eh
|
||||
xor bx, bx
|
||||
push si
|
||||
int 10h
|
||||
pop si
|
||||
jmp routine_1
|
||||
|
||||
code_end:
|
||||
|
||||
msg1 db 13, 10, "Thunderbyte anti-virus partition "
|
||||
db "v6.24 (C) 1993-94 Thunderbyte BV.", 13, 10, 10, 0
|
||||
msg2 db "Disk error!", 13, 10, 00
|
||||
msg3 db "No system!", 13, 10, 00
|
||||
msg4 db "OK!", 13, 10,"Checking ",0
|
||||
msg5 db "bootsector CRC -> ",0
|
||||
msg6 db "available RAM -> ",0
|
||||
msg7 db "INT 13h -> ",0
|
||||
msg8 db "OK!",13, 10, 10, 0
|
||||
msg9 db "Failed!", 13, 10, "System might be infected. Continue? (N/Y)", 07, 0
|
||||
|
||||
misc db 0, 0, 0, 80h, 01h, 01, 0, 06, 0dh, 0feh, 0f8h
|
||||
db 03eh, 0, 0, 0, 06h, 78h, 0dh, 0, 0, 0
|
||||
db 10h dup(0)
|
||||
db 10h dup(0)
|
||||
db 0eh dup(0)
|
||||
|
||||
id_sig db 55h, 0aah
|
||||
|
||||
Reference in New Issue
Block a user