Menu
Kod_polimorf ContohAlgoritma 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.
Algoritma asal:
Start:GOTO Decryption_CodeEncrypted: ... lots of encrypted code ...Decryption_Code: A = EncryptedLoop: B = *A B = B XOR CryptoKey *A = B A = A + 1 GOTO Loop IF NOT A = Decryption_Code GOTO Encrypted CryptoKey: some_random_number
Algoritma yang sama, tetapi dengan banyak perubahan kod C yang tidak diperlukan:
Start:GOTO Decryption_CodeEncrypted: ... lots of encrypted code ...Decryption_Code: C = C + 1 A = EncryptedLoop: 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 "Encrypted" ("banyak kod disulitkan") kemudian boleh mencari kod antara Decryption_Code dan CryptoKey dan menyingkir kesemua kod yang menukar pemboleh ubah C. Sebelum enjin penyulit digunakan sekali lagi, ia boleh meletakkan kod baru yang tidak diperlukan yang menukar C, malah menukar kod dalam algoritma 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 disulitkan. Dia kemudiannya melaksanakan algoritma kunci meningkat atau secara rawak.
Teknik polimorf lain adalah dengan memasukkan secara automatik NOP (No Operation) atau kod operasi (opcodes) lain yang tidak menukar algoritma asas.
Menu
Kod_polimorf ContohBerkaitan
Kod Persatuan Pengangkutan Udara Antarabangsa Kod perduaan Kod pengelasan JEL Kod panggilan Malaysia Kod polimorf Kod panggilan Kod panggilan Indonesia Kod panggilan Mesir Kod panggilan Iraq Kod INSEERujukan
WikiPedia: Kod_polimorf http://www.spinellis.gr/pubs/jrnl/2002-ieeetit-npv... http://dx.doi.org/10.1109/TIT.2002.806137