Untuk kegunaan lain, sila lihat Virus (nyahkekaburan).
**Virus komputer** merupakan program atau aturcara komputer yang berupaya menyalin dirinya sendiri dan menjangkiti komputer tanpa kebenaran ataupun pengetahuan pengguna sehingga mampu menyebabkan kerosakan atau perubahan kepada data atau laksanaan aturcara peranti rumah yang asal. Bagaimanapun perkataan virus biasanya digunakan bagi merujuk kepada pelbagai jenis perisian perosak yang berlainan. Virus yang asal mungkin mengubah suai salinannya atau salinan itu sendiri yang mengubah suai dirinya, seperti dalam virus metamorf. Virus hanya boleh tersebar apabila hosnya sampai ke komputer lain, contohnya melalui rangkaian atau perantara mudah alih seperti cakera liut, cakera padat atau pemacu kilat USB. Selain itu, virus juga boleh merebak dengan menjangkiti fail pada sistem fail rangkaian atau mana-mana sistem fail yang dicapai komputer lain.

Sesetengah virus direka untuk menjejaskan komputer dengan merosakkan atur cara, menghapuskan fail, atau memformat semula cakera keras, manakala virus-virus yang lain direka bukan untuk merosakkan apa-apa, tetapi hanya untuk menyalin diri dan mungkin untuk menonjolkan kewujudannya melalui pemaparan teks, video, atau pesanan audio. Walaupun virus yang kedua ini tidak berbahaya, ia juga boleh menimbulkan masalah kepada pengguna komputer kerana ia menelan ingatan komputer yang digunakan oleh atur cara yang sah. Oleh yang demikian, ia seringnya mengakibatkan tindakan yang tidak menentu dan boleh mengakibatkan kerosakan sistem. Selain itu, banyak virus juga mengandungi pepijat yang boleh mengakibatkan kerosakan sistem dan kehilangan data.

Virus komputer kekadangnya dikelirukan ciri dan peranannya dari "cecacing" dan "kuda Troia". Kedua-dua ini berbeza dari segi bahawa cecacing boleh merebak ke komputer yang lain tanpa memerlukannya dipindahkan sebagai sebahagian fail perumah, manakala "kuda Troia" adalah fail yang kelihatan tidak berbahaya sehingga ia dipakai dan dilaksanakan. "Kuda Troia" juga tidak memasukkan kodnya ke dalam fail-fail komputer yang lain berbanding dengan virus komputer biasa.

Banyak komputer peribadi kini dihubungkan dengan internet serta rangkaian kawasan setempat dan dengan itu, memudahkan perebakan virus. Ia mengambil kesempatan yang diberikan oleh perkhidmatan rangkaian seperti sistem-sistem Jaringan Sejagat, e-mel, dan pengongsian fail untuk merebak dan dengan itu, mengaburi perbezaan antara virus dengan cecacing komputer. Tambahan pula, sesetengah sumber menggunakan istilah alternatif yang mentakrifkan virus sebagai mana-mana bentuk perisian jahat penyalinan diri.

Etimologi
---------

Istilah "virus" komputer berasal daripada peluasan ungkapan "virus" dalam konteks biologi dan digunakan dalam erti kata yang sama. Istilah "virus" seringnya digunakan dalam bahasa biasa untuk menghuraikan semua jenis perisian hasad (*malware*), termasuk virus-virus yang wajar dikelaskan sebagai cecacing atau kuda Troia. Kebanyakan pakej perisian anti-virus yang popular melindungi komputer daripada semua jenis serangan ini. Dalam sesetengah komuniti teknik, istilah "virus" juga diperluas untuk merangkumi para pencipta perisian jahat dari segi erti kata yang menghina.

Istilah "virus" digunakan buat pertama kali dalam terbitan akademik oleh Fred Cohen pada tahun 1984 dalam kertas kerjanya, *Uji kajian dengan Virus Komputer*, yang menghargai Len Adleman kerana mencipta istilah itu. Bagaimanapun, sebuah novel fiksyen sains yang ditulis oleh David Gerrold pada tahun 1972 yang berjudul *"When H.A.R.L.I.E. Was One",* mengandungi sebuah huraian atur cara komputer fiksyen yang dipanggil "VIRUS" yang bertindak tepat sama dengan virus biologi (dan diatasi oleh sebuah atur cara yang dipanggil "VAKSIN"). Istilah "virus komputer" dengan pengertian terkini juga muncul dalam buku komik, *Uncanny X-Men* #158, yang ditulis oleh Chris Claremont dan diterbitkan pada tahun 1982. Oleh yang demikian, walaupun penggunaan istilah "virus" oleh Cohen mungkin merupakan penggunaan "ilmiah" yang pertama, istilah itu telah digunakan lebih dahulu.

Mengapa orang mencipta virus komputer
-------------------------------------

Berbeza dengan virus biologi, virus komputer:

* tidak mengembangkan diri;
* tidak wujud secara spontan dan tidak dicipta oleh pepijat atur cara biasa; ia dicipta secara sengaja oleh para pengaturcara atau orang yang menggunakan perisian mencipta virus; dan
* hanya boleh membuat apa-apa yang ditetapkan oleh pengaturcara.

Para pencipta virus mempunyai berbagai-bagai alasan untuk mencipta dan menyebarkan perisian jahat. Virus-virus telah dicipta sebagai projek penyelidikan, usikan, dan laku musnah, serta juga untuk menyerang produk syarikat-syarikat tertentu, menyebarkan pesanan politik, dan memperoleh keuntungan daripada pencurian identiti, perisian pengintipan (*spyware*), dan pemerasan kriptovirus. 

Sesetengah penulis virus menganggap ciptaan mereka sebagai seni, dan melihat penulisan atur cara virus sebagai suatu hobi yang kreatif. Tambahan pula, banyak penulis virus menentang rutin-rutin yang ditulis semata-mata untuk melakukan pemusnahan. Selain itu, banyak penulis virus juga menganggap sistem-sistem yang diserang oleh mereka sebagai suatu cabaran intelektual atau satu masalah logik untuk diselesaikan. Ini berganda apabila permainan kucing dengan tikus itu terhadap perisian anti-virus dijangka. 

Sesetengah virus bertujuan untuk merupakan "virus baik". Ia menyebarkan perbaikan kepada atur-atur cara yang dijangkitinya, atau menghapuskan virus-virus yang lain. Walaupun demikian, virus-virus sebegini adalah agak jarang. Ia masih menelan sumber sistem, dan mungkin akan menjejaskan sistem yang dijangkitinya tanpa sengaja serta juga kekadangnya dijangkiti oleh virus yang lain dan bertindak pula sebagai vektor untuk virus jahat. Tanpa disengajakan, atur-atur cara "virus baik" yang tidak ditulis dengan teliti juga boleh menjadi virus yang mendatangkan keburukan pada dirinya (umpamanya, 'virus baik' yang sebegini boleh salah mengecam fail sasaran dan dengan itu, salah menghapuskan fail sistem). Tambahan pula, ia biasanya bertindak tanpa meminta sebarang kebenaran daripada pemilik komputer. Oleh sebab kod penyalinan diri menimbulkan banyak kerumitan, adakah sesuatu virus yang bertujuan baik boleh menyelesaikan masalah dengan cara yang lebih baik, berbanding dengan atur cara biasa yang tidak menyalin diri, boleh dipersoalkan. 

Dengan pendek kata, tidak adanya satu jawapan yang tunggal yang mungkin merangkumi seluruh demografi penulis virus yang begitu luas. Dalam kebanyakan bidang kuasa, pembebasan virus komputer (serta juga cecacing) merupakan suatu jenayah komputer. Sila lihat juga rencana Berita BBC: Mengapa orang mencipta virus komputer.

Strategi penyalinan
-------------------

Supaya dapat menyalin diri, virus harus dibenarkan untuk melaksanakan kodnya dan menulis pada ingatan. Atas alasan ini, banyak virus melekat pada fail boleh laku yang merupakan sebahagian atur cara yang sah. Jika seseorang pengguna mencuba melaksanakan atur cara yang terjangkit, kod virus akan dilaksanakan lebih dahulu. 

Virus-virus boleh dibahagikan kepada dua jenis, bersandarkan tindakannya apabila dilaksanakan:

* ***Virus bukan huni*** dengan serta-merta akan mencari-cari perumah yang lain yang boleh dijangkiti dan selepas menjangkitinya, akan memindahkan kawalan kepada atur-atur cara penggunaan yang terjangkit.
* ***Virus huni*** tidak mencari perumah apabila ia dilaksanakan tetapi sebaliknya, memuat diri ke dalam ingatan dan memindahkan kawalannya kepada atur cara perumah. Virus huni masih tetap aktif di latar belakang dan akan menjangkiti perumah-perumah yang baru apabila fail-fail itu dicapai oleh atur cara yang lain atau oleh sistem pengendalian pada dirinya.

### Virus bukan huni

Virus bukan huni boleh dianggap sebagai terdiri daripada dua modul, iaitu "modul pencarian" dan "modul penyalinan". Modul pencarian bertanggungjawab untuk mencari fail baru untuk dijangkiti. Bagi setiap fail boleh laku yang baru yang ditemukan, modul pencarian akan memanggil modul penyalinan untuk menjangkiti fail itu.

Untuk virus-virus yang mudah, tugas-tugas penyalin adalah seperti yang berikut:

1. Menyemak adakah fail boleh laku itu telah dijangkiti (jika ia, kembali ke modul pencarian);
2. Melampirkan kod virus pada fail boleh laku;
3. Simpan titik permulaan fail boleh laku;
4. Tukarkan titik permulaan fail boleh laku supaya ia menunjuk ke lokasi permulaan kod virus yang baru sahaja disalin;
5. Simpan lokasi permulaan yang lama supaya virus akan menyimpang ke lokasi itu selepas ia dilaksanakan;
6. Simpan perubahan dalam fail boleh laku;
7. Tutup fail yang terjangkit; dan
8. Kembali ke modul pencarian supaya ia boleh mencari fail yang baru untuk dijangkiti oleh penyalin.

### Virus huni

Virus huni mengandungi modul penyalinan yang serupa dengan modul yang digunakan oleh virus bukan huni, tetapi ia tidak digelar sebagai *modul pencarian*. Sebaliknya, virus ini memuat modul penyalinan ke dalam ingatan apabila ia dilaksanakan dan memastikan bahawa modul ini akan dilaksanakan setiap kali sistem pengendalian dipanggil untuk melakukan tugas-tugas yang tertentu, umpamanya apabila sistem pengendalian itu melaksanakan sesuatu fail. Dalam kes ini, virus itu akan menjangkiti setiap atur cara yang sesuai yang dilaksanakan oleh komputer.

Virus-virus huni kekadang dibahagikan kepada dua kategori, iaitu *penjangkit cepat* dan *penjangkit lambat*. Penjangkit cepat direka untuk menjangkiti sebanyak fail yang mungkin, umpamanya ia boleh menjangkiti setiap fail perumah yang dicapai. Ini akan menimbulkan masalah yang khusus untuk perisian anti-virus kerana pengimbas virus akan mencapai setiap fail perumah yang berpotensi di dalam komputer apabila ia mengimbas seluruh sistem. Jika pengimbas virus gagal mengesan virus sebegitu yang wujud di dalam ingatan, virus itu boleh "menggendong" pengimbas virus dan dengan itu, menjangkiti semua fail yang diimbas. Penjangkit cepat bergantung kepada kadar penjangkitannya yang cepat untuk merebak. Kelemahan kaedah ini adalah bahawa penjangkitan banyak fail akan menyebabkannya mudah dikesan kerana virus itu akan memperlahankan komputer atau melakukan banyak tindakan yang menimbulkan kesangsian yang boleh dikesan oleh perisian anti-virus. 

Penjangkit lambat sebaliknya direka untuk menjangkiti perumahnya sekali sekala. Umpamanya, sesetengah penjangkit lambat hanya menjangkiti fail apabila fail itu disalin. Penjangkit lambat direka semata-mata untuk mengelakkan pengesanan dengan membatasi tindakannya. Ia tidak banyak memperlahankan komputer dan jarang mencetuskan perisian anti-virus yang mengesan tindakan atur cara yang menimbulkan kesangsian. Walaupun demikian, pendekatan penjangkit lambat kelihatan tidak begitu berjaya.

Vektor dan perumah
------------------

Virus-virus telah menyasarkan berbagai-bagai jenis medium penghantaran atau perumah. Senarai yang berikut adalah tidak lengkap:

* Fail boleh laku perduaan, seperti fail COM dan fail EXE untuk MS-DOS, fail Boleh Laku Mudah Alih untuk Microsoft Windows, dan fail ELF untuk Linux;
* Rekod But Jilid untuk cakera liut dan petak cakera keras;
* Rekod but induk (MBR) untuk cakera keras;
* Fail skrip serba guna, seperti fail kelompok untuk MS-DOS dan Microsoft Windows, fail VBSkrip, serta juga skrip cangkerang untuk pelantar bak Unix;
* Fail skrip khusus atur cara penggunaan, seperti skrip Telix;
* Dokumen yang boleh mengandungi makro, seperti dokumen Microsoft Word, hamparan Microsoft Excel, dokumen AmiPro, dan fail pangkalan data Microsoft Access; dan
* Kerentanan penskripan tapak silang untuk penggunaan web.

### Vektor-vektor yang tidak sesuai dihuni

Adalah susah, walaupun bukan tidak mungkin, bagi virus-virus mengekori fail sumber kerana bahasa-bahasa komputer dicipta juga untuk mata manusia dan operator-operator yang berpengalaman. Walaupun demikian, virus-virus amat tidak mungkin dapat mengekori fail data seperti fail-fail MP3, MPG, OGG, JPG, GIF, PNG, MNG, PDF, dan DVI (senarai jenis fail yang umumnya boleh dipercayai ini adalah tidak lengkap). 

Walau jika sesuatu virus dapat 'menjangkiti' fail sebegini, ia tidak akan dapat dilaksanakan kerana tidak adanya sebarang cara untuk kod virus berbuat demikian. Bagaimanapun, suatu kaveat harus disebut tentang fail PDF yang, serupa dengan fail HTML, boleh *berpaut* dengan kod jahat. Tambahan pula, limpah atas penimbal dalam sesebuah atur cara yang membaca fail data boleh dieksploitasikan dan dipergunakan untuk mencetuskan pelaksanaan kod yang tersembunyi di dalam fail data. Walaupun demikian, kesan serangan ini dapat dikurangkan dengan ketara oleh seni bina komputer yang mempunyai bit tak boleh laksana.

Adalah memadai untuk memperhatikan bahawa sesetengah pencipta virus telah menulis sambungan fail .EXE pada hujung .PNG (misalnya), dengan harapan bahawa para pengguna akan berhenti pada jenis fail yang dipercayai tanpa perasan bahawa komputer akan memulakan pelaksanaannya dengan jenis fail yang terakhir. Sila lihat kuda Troia.

Kaedah untuk mengelakkan pengesanan
-----------------------------------

Untuk mengelakkan pengesanan oleh pengguna, sesetengah virus menggunakan berbagai-bagai jenis penipuan. Sesetengah virus yang lama, khususnya untuk pelantar MS-DOS, memastikan bahawa tarikh "pengubahsuaian terakhir" untuk fail perumah dikekalkan apabila fail itu dijangkiti oleh virus. Bagaimanapun, pendekatan ini tidak dapat menipu perisian anti-virus, khususnya perisian anti-virus yang mengekalkan dan mentarikhkan Kod Lewahan Sekitar apabila fail diubah. 

Sesetengah virus juga boleh menjangkiti fail tanpa menambah saiz fail atau merosakkannya. Virus ini yang digelar "virus rongga" dapat mencapai perbuatan tersebut dengan menulis ganti kawasan-kawasan fail boleh laku yang tidak digunakan. Misalnya, virus CIH atau Virus Chernobyl boleh menjangkiti fail Boleh Laku Mudah Alih. Oleh sebab fail-fail itu mempunyai banyak sela, virus yang 1 KB panjangnya tidak akan menambah saiz fail yang dijangkiti. Sesetengah virus mencuba mengelakkan pengesanan dengan menghapuskan tugas-tugas yang dikaitkan dengan perisian anti-virus sebelum ia dapat mengesannya.

Ketika komputer-komputer dan sistem-sistem pengendalian berkembang menjadi lebih besar dan lebih rumit, teknik-teknik penyembunyian yang lebih lama perlu dikemas kini dan digantikan. Melindungi komputer anda daripada virus mungkin memerlukan sistem fail anda untuk berhijrah kepada kebenaran yang terperinci dan eksplisit bagi setiap jenis capaian fail.

### Mengelakkan fail umpan dan lain-lain

Virus perlu menjangkiti perumah untuk merebak. Dalam sesetengah kes, penjangkitan atur cara perumah bukannya suatu cara yang baik kerana banyak atur cara anti-virus menyemak kewibawaan kod sendiri. Oleh itu, menjangkiti atur cara sedemikian akan menaikkan kemungkinannya untuk dikesan. Atas alasan ini, sesetengah virus diprogramkan supaya tidak akan menjangkiti atur cara yang merupakan sebahagian perisian anti-virus. 

Lagi sejenis perumah yang virus kekadang akan mengelakkan ialah *fail umpan* (atau *fail kambing*). Fail umpan ialah fail yang dicipta khusus oleh perisian anti-virus atau oleh pencipta perisian anti-virus semata-mata untuk dijangkiti oleh virus. Fail-fail ini dicipta atas berbagai-bagai alasan, dengan kesemuanya berkait dengan pengesanan virus. Para pencipta perisian anti-virus boleh menggunakan fail umpan untuk:

* Mengambil sampel virus, iaitu salinan fail atur cara yang dijangkiti oleh virus. Menukarkan sebuah fail umpan terjangkit yang kecil adalah lebih praktik, berbanding dengan menukarkan sebuah atur cara penggunaan terjangkit yang besar.
* Mengkaji tindakan virus dan menilai kaedah-kaedah pengesanan. Ini adalah amat berguna apabila virus itu bersifat polimorf. Dalam kes ini, perisian anti-virus boleh membuat virus itu menjangkiti sebilangan besar fail umpan. Fail-fail yang terjangkit boleh digunakan untuk menguji tentang adakah pengimbas virus berkesan terhadap semua versi virus itu.
* Mencetuskan perisian anti-virus supaya memberikan amaran kepada pengguna bahawa sistem komputernya mungkin dijangkiti oleh virus apabila fail-fail umpan diubah.

Oleh sebab fail-fail umpan digunakan untuk mengesan virus atau untuk memungkinkan pengesanan, sesebuah virus boleh memanfaatkan diri jika ia tidak menjangkiti fail-fail tersebut. Virus biasanya berbuat sedemikian dengan mengelakkan atur-atur cara yang menimbulkan kesangsian, seperti fail atur cara yang kecil atau atur cara yang mengandungi pola 'arahan sampah' yang tertentu.

Salah satu strategi yang digunakan oleh virus komputer untuk menjadikan fail umpan tidak berkesan ialah *penjangkitan jarang*. Penjangkit jarang kekadang tidak menjangkiti fail perumah yang merupakan calon yang sesuai dalam keadaan-keadaan yang lain. Umpamanya, virus boleh memutuskan secara rawak tentang adakah ia hendak menjangkiti sesuatu fail atau tidak. Sebaliknya, sesetengah virus hanya boleh menjangkiti fail perumah pada hari-hari yang tertentu dalam setiap minggu.

### Cara sembunyi-sembunyi

Sesetengah virus mencuba menipu perisian anti-virus dengan menyekat permintaannya kepada sistem pengendalian. Virus tersebut boleh menyembunyikan diri dengan menyekat permintaan perisian anti-virus untuk membaca fail dan mengalihkan permintaan yang sepatutnya diterima oleh sistem pengendalian kepada virus. Virus itu kemudian akan mengembalikan versi fail yang tidak terjangkit kepada perisian anti-virus supaya fail itu kelihatan "bersih". Perisian anti-virus yang moden menggunakan berbagai-bagai teknik untuk mengatasi mekanisme virus yang sembunyi-sembunyi. Kaedah tunggal yang boleh dipercayai sepenuhnya untuk mengelakkan mekanisme sembunyi-sembunyi itu adalah untuk membut daripada medium yang kebersihannya diketahui.

### Pengubahsuaian diri

Kebanyakan atur cara anti-virus yang moden mencuba mengesan pola-pola virus dalam atur cara biasa dengan mengimbasnya untuk mencari apa yang dipanggil *tandatangan virus*. Tandatangan virus ialah pola bait tipikal yang merupakan sebahagian virus atau keluarga virus yang tertentu. Jika sesuatu pengimbas virus menemukan pola sedemikian dalam sesuatu fail, ia akan memberitahu pengguna. Pengguna itu kemudian boleh menghapuskan, atau dalam sebilangan kes, "membersihkan" atau "menyembuhkan" fail yang terjangkit. Sesetengah virus menggunakan teknik-teknik yang menyebabkan pengesanan melalui tandatangan amat sukar tetapi bukan tidak mungkin. Virus-virus itu akan mengubah suai kodnya pada setiap penjangkitan, iaitu setiap fail yang terjangkit akan mengandungi kelainan virus yang berbeza.

#### Pengekodan dengan petunjuk berubah-ubah

Kaedah untuk mencipta virus yang lebih maju ialah penggunaan penyulitan untuk mengensifer sesuatu virus. Dalam kes ini, virus akan terdiri daripada dua bahagian, iaitu sebuah modul penyahsulitan yang kecil dan sebuah salinan penyulitan kod virus. Jika virus itu disulitkan dengan satu kunci yang tidak sama bagi setiap fail yang terjangkit, bahagian tunggal yang masih dikekalkan di dalam virus ialah modul penyahsulitan yang misalnya, akan dilampirkan pada hujung fail virus itu. Dalam kes sedemikian, pengimbas virus tidak dapat mengesan virus secara langsung melalui tandatangan, tetapi ia masih boleh mengesan modul penyahsulitan yang memungkinkan pengesanan virus secara tidak langsung. Oleh sebab ini merupakan kunci-kunci bersimetri yang disimpan dalam perumah yang terjangkit, virus terakhir sebenarnya masih boleh dinyahsulitkan tetapi perbuatan ini mungkin tidak diperlukan kerana kod mengubah suai diri adalah amat jarang sehingga pengimbas virus hanya diperlukan menandai fail itu sebagai menimbulkan kesangsian.

Salah satu penyulitan yang lama tetapi padat melibatkan penXORan setiap bait dalam virus dengan sesuatu pemalar, dengan a XOR b = c, dan c XOR b = a, supaya eksklusif atau operasi itu hanya perlu diulangi untuk penyahsulitan. Oleh sebab hanya kod yang menimbulkan kesangsian akan mengubah suai diri, kod itu tetap merupakan sebahagian tandatangan dalam banyak takrif virus dan dengan itu, dapat dikesan oleh perisian anti-virus dengan mudah.

#### Kod polimorf

Kod polimorf merupakan teknik pertama yang menimbulkan ancaman yang dahsyat kepada pengimbas virus. Serupa dengan virus tersulit yang biasa, virus polimorf akan menjangkiti fail-fail dengan sebuah salinan tersulit diri yang dinyahkod oleh modul penyahsulitan. Bagaimanapun, dalam kes-kes virus polimorf, modul penyahsulitan ini juga akan diubah suai setiap kali ia menjangkiti fail. Justera itu, sebuah virus polimorf yang ditulis dengan teliti tidak mempunyai sebarang bahagian yang tepat sama selepas setiap penjangkitan dan oleh itu, menyebabkannya amat sukar dikesan secara langsung dengan menggunakan tandatangan. 

Perisian anti-virus boleh mengesan virus dengan menyahsulitkannya melalui penggunaan pelagak atau melalui analisis pola statistik tentang bahagian virus yang tersulit. Untuk membolehkan kod polimorf, virus harus mempunyai enjin polimorf (juga dikenali sebagai "enjin memutat" atau "enjin mutasi") di dalam bahagian tersulitnya. Sila lihat kod polimorf untuk perincian teknik tentang bagaimana enjin sedemikian berjalan.

Sesetengah virus menggunakan kod polimorf dengan cara yang menyekat kadar mutasi virus dengan nyata sekali. Umpamanya, virus boleh diatur cara supaya tidak banyak memutat atau langsung tidak memutat apabila ia menjangkiti fail-fail di dalam komputer yang telah mengandungi salinan-salinan virus. Kelebihan untuk menggunakan kod *polimorf lambat* adalah bahawa ia menyebabkan ahli profesional anti-virus lebih sukar untuk memperoleh sampel-sampel yang mewakili virus kerana fail-fail umpan yang terjangkit dalam setiap jalanan biasanya akan mengandungi sampel-sampel virus yang sama atau serupa. Ini akan mengakibatkan pengesan pengimbas virus lebih mungkin tidak boleh dipercayai, dengan virus-virus itu kekadangnya dapat mengelakkan pengesanan.

#### Kod metamorf

Untuk mengelakkan pengesanan melalui perlagakan, sesetengah virus menulis semula keseluruhan diri setiap kali sejurus sebelum menjangkiti fail boleh laku yang baru. Virus-virus yang menggunakan teknik ini dikatakan bersifat metamorf. Untuk membolehkan metamorfisme, sebuah *enjin metamorf* diperlukan. Virus metamorf biasanya amat besar dan rumit. Sebagai contoh, W32/Simile terdiri daripada melebihi 14 ribu garis kod bahasa himpunan, dengan 90% daripadanya merupakan bahagian enjin metamorf.

Kerentanan sistem pengendalian
------------------------------

Lagi satu perbandingan antara virus komputer dengan virus biologi adalah bahawa kepelbagaian genetik dalam sesuatu populasi akan mengurangkan kemungkinan seluruh populasinya dihapuskan oleh satu penyakit yang tunggal. Serupa juga, kepelbagaian sistem perisian dalam rangkaian membatasi potensi virus untuk menghapuskannya. Bagaimanapun, ini kemudian menjadi suatu kebimbangan pada dekad 1990-an apabila Microsoft menguasai pasaran sistem pengendalian komputer meja dan suit pejabat, dengan para pengguna perisian Microsoft (khususnya perisian perangkaian seperti Microsoft Outlook dan Internet Explorer) amat mudah terdedah pada bahaya perebakan virus. 

Perisian Microsoft telah disasarkan oleh para pencipta virus kerana penguasaan komputer mejanya, dengan perisian-perisiannya sering dikritik kerana mengandungi banyak kesilapan dan peluang untuk para penulis virus mengeksploitasikan. Perisian-perisian penggunaan, baik yang bersepadu mahupun yang menggunakan bahasa penskripan dengan kemudahan untuk mencapai sistem fail (umpamanya Skrip Visual Basic (VBS) dan perisian penggunaan dengan ciri-ciri perangkaian), juga amat mudah terdedah pada bahaya perebakan virus.

Walaupun Windows merupakan sasaran serangan sistem pengendalian yang popular kepada para pencipta virus, sesetengah virus juga wujud untuk pelantar-pelantar yang lain. Sebenarnya, mana-mana sistem pengendalian yang membenarkan atur-atur cara pihak ketiga untuk dilaksanakan secara teori juga boleh melaksanakan atur cara virus. Sesetengah sistem pengendalian adalah lebih selamat berbanding dengan lain. Sebagai contoh, sistem pengendalian berasaskan Unix (dan perisian NTFS untuk pelantar-pelantar berasaskan Windows NT) hanya membenarkan penggunanya melaksanakan fail boleh laku di dalam ruang terlindung yang terletak di dalam direktori masing-masing.

Sehingga tahun 2006, tidak terdapat banyak kejadian keselamatan  yang menyasarkan Mac OS X (dengan sistem fail berasaskan Unix). Kerentanan-kerentanannya yang diketahui terangkum dalam pengelasan cecacing dan kuda Troia. Anggaran bilangan virus untuk Mac OS Klasik, sistem pengendalian Apple yang lebih lama, amat berbeza dari sumber ke sumber, dengan Apple menyatakan bahawa terdapat hanya empat virus yang diketahui, dan sumber-sumber bebas memberikan bilangan sebanyak 63. Walaupun demikian, adalah selamat untuk mengatakan bahawa komputer Mac kurang mungkin dieksploitasikan kerana tapak Unix yang selamat, serta juga kerana virus khusus Mac hanya berupaya menjangkiti sebahagian yang kecil daripada komputer-komputer Apple dan oleh itu, menyebabkan usaha itu tidak begitu mengghairahkan.

Kerentanan terhadap virus antara Mac dan Window merupakan tumpuan jualan utama yang dipergunakan oleh Apple Computers untuk memujuk para pengguna komputer Microsoft supaya beralih kepada komputer Apple (Dapatlah Mac). Secara ironi, jika terjadinya peralihan tapak pengguna daripada komputer peribadi kepada Mac, maka pelantar Mac OS X kemudian akan menjadi sasaran yang lebih mengghairahkan kepada para pencipta virus. Oleh sebab tidak adanya banyak penyelesaian anti-virus untuk pelantar OS X pada masa ini, terdapat kemungkinan bahawa ini dengan amat cepatnya akan menjadi suatu masalah yang besar kepada para pengguna Mac, dengan syarikat Apple Computers betul-betul menjadi mangsa kepada kejayaan sendiri.

Windows dan Unix mempunyai keupayaan penskripan yang serupa, tetapi sedangkan Unix menyekat semua pengguna biasanya daripada membuat perubahan kepada sekitaran sistem pengendalian, Windows tidak berbuat begitu. Pada tahun 1997, ketika suatu virus untuk Linux dibebaskan (dikenali sebagai "Bliss"), para penjual perisian anti-virus yang utama memberikan amaran bahawa sistem-sistem bak Unix akan menjadi mangsa kepada virus-virus seperti dengan Windows.

Virus Bliss boleh dianggap sebagai virus yang tipikal – bertentangan dengan cecacing – untuk sistem-sistem Unix. Ia memerlukan pengguna melaksanakannya secara eksplisit (dan dengan itu, menyebabkannya merupakan salah satu "kuda Troia"), dan hanya berupaya menjangkiti atur-atur cara yang dicapai oleh pengguna untuk membuat perubahan. Berbeza dengan para pengguna Windows, kebanyakan pengguna Unix tidak log masuk sebagai pentadbir kecuali untuk memasang atau menatarajahkan perisian. Oleh itu, walau jika pengguna dapat melaksanakan atur cara virus, perbuatannya tidak akan menjejaskan sistem pengendalian. Virus Bliss tidak pernah merebak, dan hanya merupakan suatu keanehan penyelidikan. Penciptanya kemudian memaparkan kod sumber virus itu di tapak web Usenet dan dengan itu, membenarkan para penyelidik melihat bagaimana ia berjalan.

Langkah balas
-------------

### Peranan pembangunan perisian

Oleh sebab perisian sering direka bentuk dengan ciri-ciri keselamatan untuk mencegah penggunaan sumber sistem tanpa kebenaran, banyak virus harus mengeksploitasikan pepijat perisian di dalam sesebuah sistem atau perisian penggunaan supaya dapat merebak. Strategi-strategi pembangunan perisian yang menghasilkan banyak pepijat umumnya juga menggalakkan serangan virus.

### Perisian anti-virus dan langkah balas pencegahan

Terdapat dua kaedah yang biasa digunakan oleh perisian anti-virus untuk mengesan virus. Yang pertama dan yang merupakan kaedah pengesanan virus yang jauh lebih biasa adalah dengan menggunakan sebuah senarai takrif tandatangan virus. Kelemahan kaedah pengesanan ini adalah bahawa para pengguna hanya dilindungi daripada virus-virus yang tersenarai pada kemas kini takrif virus yang terakhir. Kaedah yang kedua menggunakan algoritma heuristik untuk mencari virus berdasarkan tindakan-tindakannya yang serupa. Kaedah ini berupaya untuk mengesan virus yang firma-firma keselamatan anti-virus masih belum dapat mencipta tandatangannya.

Banyak pengguna memasang perisian anti-virus yang boleh mengesan dan menghapuskan virus-virus yang diketahui selepas komputernya telah memuat turun atau melaksanakan fail boleh laku. Ia berjalan dengan memeriksa heuristik kandungan ingatan komputer (RAM dan sektor but) serta fail-fail yang disimpan di dalam pemacu tetap atau boleh alih (pemacu cakera keras, pemacu cakera liut), lalu membandingkan fail-fail itu dengan sebuah pangkalan data yang mengandungi "tandatangan" virus. Sesetengah atur cara anti-virus berupaya mengimbas fail-fail yang terbuka, selain daripada e-mel yang dikirimkan dan diterima secara tergesa-gesa dengan cara yang sama. Amalan ini dikenali sebagai "pengimbasan pada capaian". Perisian anti-virus tidak mengubah keupayaan dasar perisian perumah untuk menghantar virus. Para pengguna harus mengemaskinikan perisian anti-virus mereka dengan tetap untuk menampung lubang-lubang keselamatan serta juga untuk perisian anti-virus mereka memperoleh pengetahuan tentang ancaman-ancaman yang terkini.

Seseorang juga boleh mencegah kerosakan yang dilakukan oleh virus dengan mencipta data (dan sistem pengendalian) sandar secara tetap pada medium yang berlainan, baik disimpan secara berasingan daripada sistem (bagi kebanyakan masanya), atau secara baca sahaja, ataupun secara tidak boleh dicapai atas alasan-alasan yang lain, seperti menggunakan sistem fail yang berlainan. Dengan cara ini, jika data hilang kerana virus, seseorang masih dapat memulakan semula dengan menggunakan fail-fail sandar (yang seelok-eloknya merupakan fail sandar baru-baru ini). Jika sidang sandar pada medium optik seperti CD dan DVD ditutup, ia menjadi baca sahaja dan tidak boleh lagi terjejas oleh virus. Serupa juga, sebuah sistem pengendalian yang disimpan dalam cakera boleh but boleh digunakan untuk memulakan komputer jika sistem pengendalian yang dipasang dalam komputer tidak boleh digunakan. 

Lagi satu kaedah adalah untuk menggunakan sistem pengendalian yang berbeza daripada sistem fail. Sesuatu virus tidak begitu mungkin akan menjejaskan kedua-dua sistem itu. Sokongan data juga boleh menggunakan sistem-sistem fail yang berbeza, umpamanya Linux memerlukan perisian yang khusus untuk menulis pada petak NTFS dan oleh itu, jika seseorang tidak memasang perisian tersebut dan sebaliknya menggunakan pemasangan MS Windows yang berlainan untuk mencipta fail sandar pada petak NTFS (dan seelok-eloknya hanya untuk alasan ini), fail-fail sandar itu harus selamat daripada sebarang virus Linux. Serupa juga, MS Windows tidak boleh membaca sistem-sistem fail seperti ext3 dan oleh itu, jika seseorang biasanya menggunakan MS Windows, fail-fail sandar boleh dicipta pada petak ext3 dengan menggunakan pemasangan Linux.

### Kaedah pemulihan

Sebaik sahaja sebuah komputer terjejas oleh virus, komputer itu biasanya tidak selamat untuk diteruskan penggunaannya, tanpa memasang semula sistem pengendalian komputer itu. Bagaimanapun, terdapat sebilangan cara pemulihan yang sedia ada selepas sesuatu komputer terjejas oleh virus. Tindakan-tindakan yang boleh diambil bergantung kepada teruknya jenis virus yang terlibat.

#### Pemulihan data

Rencana utama: Pemulihan data
#### Penghapusan virus

Satu langkah yang mungkin untuk menghapuskan virus yang wujud dalam Windows XP ialah penggunaan alat yang dikenali sebagai Pemulihan Sistem (*System Restore*). Alat ini memulihkan registri dan fail-fail sistem yang genting kepada titik semak yang dahulu.

Seringnya, sesebuah virus akan mengakibatkan sistem komputer tergantung, dengan pembutan semula keras akan merosakkan titik pemulihan sistem daripada hari yang sama. Titik pemulihan daripada hari-hari sebelumnya harus masih berkesan, asalkan virus itu tidak direka untuk merosakkan fail-fail pemulihan. Bagaimanapun, sesetengah virus, misalnya virus CiaDoor, akan mematikan pemulihan sistem serta alat-alat lain yang penting seperti Pengurus Tugas (*Task Manager*) dan penggesa. Virus mengubah suai registri dengan cara yang tepat sama dengan para pentadbir mematikan alat-alat tersebut atas berbagai-bagai alasan daripada pengguna-pengguna terhad, kecuali bahawa virus menyekat *semua* pengguna, termasuk juga pentadbir. Apabila sesuatu alat terjangkit diaktifkan, virus itu akan memaparkan pesanan, "Pengurus Tugas telah dimatikan oleh pentadbir anda", walaupun jika pengguna yang mencuba memulakan atur cara adalah pentadbir pada dirinya.

#### Pemasangan semula sistem pengendalian

Sebagai usaha langkah terakhir, jika sistem anda mempunyai virus dan perisian anti-virus tidak dapat membersihkannya, pemasangan semula sistem pengendalian mungkin diperlukan. Untuk berbuat demikian dengan betul, cakera keras harus dipadamkan sama sekali (dengan pemetakannya dipadamkan dan diformat) dan sistem pengendalian dipasang daripada medium yang diketahui tidak dijangkiti. Fail-fail sandar harus dicipta untuk fail-fail yang penting, jika mungkin, dan diimbas secara berasingan untuk mengesan jangkitan sebelum cakera keras yang asal dipadamkan dan sistem pengendalian dipasang semula.

Lihat juga
----------

* Perisian antivirus
* Cecacing komputer
* Kuda Troia (komputer)
* Virus 666

Rujukan
-------

1. ↑  G. S. Rao, A. K. Rao, Ng Chee Aun & Cheng Yok San (1991). "virus". *Kamus Komputer Sekolah Menengah*. Penerbit Fajar Bakti Sdn Bhd. m/s. 86. ISBN 967-65-1306-7.CS1 maint: uses authors parameter (link)
2. ↑  "Perkembangan Perisian Jahat: Kerentanan MacOS X 2005 - 2006". Makmal Kaspersky. 24 Julai 2006. Dicapai pada 19 Ogos. Unknown parameter `|accessyear=` ignored (`|access-date=` suggested) (bantuan); Check date values in: `|accessdate=` (bantuan)
3. ↑  John Leyden. "McAfee memberikan amaran tentang risiko virus Apple". *Rencana berita*.
4. ↑  McAfee. "McAfee menemui virus Linux yang pertama". *Rencana berita*.
5. ↑  Axel Boldt. "Bliss, suatu "virus" Linux". *Rencana berita*.

Pautan luar
-----------

* (Melayu) Ensiklokamus Teknologi Maklumat: Virus komputer secara ringkas
* Virus di Curlie
* US Govt CERT (Computer Emergency Readiness Team) site