Kod polimorf: Perbezaan antara semakan
Tiada ringkasan suntingan |
|||
Baris 11: | Baris 11: | ||
== Contoh == |
== 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 |
|||
== Rujukan == |
== Rujukan == |
Semakan pada 09:30, 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
Rujukan
- Diomidis Spinellis. Reliable identification of bounded-length viruses is NP-complete. IEEE Transactions on Information Theory, 49(1):280–284, January 2003. doi:10.1109/TIT.2002.806137