Kod polimorf: Perbezaan antara semakan

Daripada Wikipedia, ensiklopedia bebas.
Kandungan dihapus Kandungan ditambah
Yosri (bincang | sumb.)
Kearah membentuk masyarakat yang cemerlang, berilmu, dan bermoral.
Yosri (bincang | sumb.)
Kearah membina masyarakat yang cermerlang, gemilang lagi terbilang
Baris 60: Baris 60:
Kod dalam "enkripsi" ("banyak kod dienkrip") kemudian boleh mencari kod antara Decryption_Code dan CryptoKey dan menyingkir kesemua kod yang menukar pemboleh ubah C. Sebelum enjin pengenkrip digunakan sekali lagi, ia boleh meletakkan kod baru yang tidak dieprlukan yang menukar C, malah menukar kod dalam algorithm dengan kod baru yang melakukan perkara yang sama. Biasanya penulis kod menggunakan kunci sifar (sebagai contoh; A [[xor]] 0 = A) bagi virus generasi pertama, menjadikannya mudah baginya kerana dengan kunci ini kod tidak dienkrip. Dia kemudiannya melaksanakan algorithm kunci meningkat atau secara rawak.
Kod dalam "enkripsi" ("banyak kod dienkrip") kemudian boleh mencari kod antara Decryption_Code dan CryptoKey dan menyingkir kesemua kod yang menukar pemboleh ubah C. Sebelum enjin pengenkrip digunakan sekali lagi, ia boleh meletakkan kod baru yang tidak dieprlukan yang menukar C, malah menukar kod dalam algorithm dengan kod baru yang melakukan perkara yang sama. Biasanya penulis kod menggunakan kunci sifar (sebagai contoh; A [[xor]] 0 = A) bagi virus generasi pertama, menjadikannya mudah baginya kerana dengan kunci ini kod tidak dienkrip. Dia kemudiannya melaksanakan algorithm kunci meningkat atau secara rawak.



Teknik polimorf lain adalah dengan memasukkan secara automatik [[NOP]] (No Operation) atau kod operasi (''opcodes'') lain yang tidak menukar algorithm asas.


== Lihat juga ==
== Lihat juga ==

Semakan pada 09:56, 3 April 2008

Dalam terminologi komputer, kod polimorf merupakan kod yang mutasi tetapi mengekalkan algorithm asal. Teknik ini kadang-kala digunakan oleh virus komputer, kod kerangka (shellcode) dan cecacing komputer bagi menyembunyikan kehadiran mereka.

Kebanyakan perisian anti-virus dan sistem pengesanan pencerobohan (intrusion detection system cuba untuk mengesan kod jahat dengan menapis fail komputer dan paket data yang dihantar menerusi jaringan komputer. Sekiranya perisian keselamatan menjumpai pola yang sama dengan virus komputer atau cecacing yang dikenali, ia mengambil langkah sewajarnya bagi menangani ancaman tersebut. Algorithm polimorf menjadikannya sukar bagi perisian sebegini bagi mencari kod tersebut kerana ia sentiasa berubah.

Enkripsi merupakan kaedah paling banyak digunakan bagi mencapai polimorf bagi kod. Bagaimanapun, bukan semua kod boleh dienkrip kerana ia akan menjadikannya tidak boleh digunakan langsung. Sebahagian kecil darinya kekal tidak dienkrip dan digunakan bagi memulakan perisian dienkrip. Perisian anti-virus mensasarkan kod kecil yang tidak dienkrip ini.

Pengaturcara berniat jahat cuba melindungi kod polimorf dari strategi pengimbasan virus dengan menulis semula enjin yang tidak dienkrip setiap kali virus atau cecacing membiak. Perisian anti-virus menggunakan penganalisa pola rumit bagi mencari pola dasar dalam pelbagai mutasi enjin penyah dekrip yang berlainan, dengan harapan dapat mengesan perisian perosak (malware) sebegini.

Virus polimorf pertama yang diketahui ditulis oleh oleh Mark Washburn. Virus ini dikenali sebagai virus komputer 1260, ditulis pada 1990. Virus polimorf yamh lebih terkenal dicipta pada 1992 oleh seorang pemecah keselamatan (security cracking) Bulgaria yang menggunakan nama samaran (pseudonym) Dark Avenger sebagai cara mengelakkan pengecaman pola oleh perisian anti-virus.


Contoh

Algorithm yang menggunakan, sebagai contoh, pemboleh ubah A dan B tetapi bukan pemboleh ubah C mampu kekal walaupun anda memasukkan banyak kod yang mengubah kandungan kepada pemboleh ubah C.

Algorithm asal:

Start:
GOTO Decryption_Code
Encrypted:
    ...
    banyak kod dienkrip 
    ...
Decryption_Code:
    A = Encrypted
Loop:
    B = *A
    B = B XOR CryptoKey
    *A = B
    A = A + 1
    GOTO Loop IF NOT A = Decryption_Code
    GOTO Encrypted
 CryptoKey:
    some_random_number

Algorithm yang sama, tetapi dengan banyak perubahan kod C yang tidak diperlukan:

Start:
GOTO Decryption_Code
Encrypted:
    ...
    lots of encrypted code
    ...
Decryption_Code:
    C = C + 1
    A = Encrypted
Loop:
    B = *A
    C = 3214 * A
    B = B XOR CryptoKey
    *A = B
    C = 1
    C = A + B
    A = A + 1
    GOTO Loop IF NOT A = Decryption_Code
    C = C^2
    GOTO Encrypted
 CryptoKey:
    nombor_rawak

Kod dalam "enkripsi" ("banyak kod dienkrip") kemudian boleh mencari kod antara Decryption_Code dan CryptoKey dan menyingkir kesemua kod yang menukar pemboleh ubah C. Sebelum enjin pengenkrip digunakan sekali lagi, ia boleh meletakkan kod baru yang tidak dieprlukan yang menukar C, malah menukar kod dalam algorithm dengan kod baru yang melakukan perkara yang sama. Biasanya penulis kod menggunakan kunci sifar (sebagai contoh; A xor 0 = A) bagi virus generasi pertama, menjadikannya mudah baginya kerana dengan kunci ini kod tidak dienkrip. Dia kemudiannya melaksanakan algorithm kunci meningkat atau secara rawak.


Teknik polimorf lain adalah dengan memasukkan secara automatik NOP (No Operation) atau kod operasi (opcodes) lain yang tidak menukar algorithm asas.

Lihat juga

Rujukan