2010-11-14 27 views
5

Basit bir polimorfik motor programlamalıyım. Linux (32-bit) kullanıyorum ve montajda kod yazabiliyorum ve c. Nasıl başlayacağımı bilmiyorum.Basit polimorfik motor

Böyle bir motoru oluşturmak için bana bir şema verebilir misiniz? şifresini rutin eklemek için (bu mümkün mü?) başında

  1. bir tampon içinde şifreleyen bir dosyanın kod bölümünü okuyun,
  2. marka alanını: Benim fikrim bir program yapmaktır
  3. Programın kod bölümündeki yeni arabelleği yaz.

Bu doğru mu? Böyle bir motorun çalışmasını yansıtıyor mu?

+0

İyi görünen öğretici: https://www.pelock.com/articles/polymorphic-encryption-algorithms. @Twistd tarafından sadece bir cevap olarak yayınlandı. Bu cevap için –

cevap

3

Temel şema, anlattığınızdan oldukça farklı. Genellikle sadece virüs gövdesi şifrelenir, bütün kod bölümü değil. Kod bölümünü uzatan basit bir virüsü düşünün, ya onun bedeni için yeni bir tane yaratır. Şimdi, bu polimorfik yapmak, şifrelemeyi ekleyip olmayan sabit olduğu decryptor kodunun yapmak zorunda örn:

1) rastgele NOPS (nop, add reg, 0, push reg; pop reg, vb)

2) değişim eklemek

polimorfik bu kodlamaları sabit sayıda anlamına gelir>add eax, 9; sub eax, 6) - ile program akışı (jmp next, clc; jc next, vs)

3) aynı aritmetik etki (add eax, 3 ile talimatları kullanın Bu nedenle, oluşturmanın en basit yolu, decryptor kodunu birkaç blokta kırmak ve her biri için aynı uzunlukta birkaç kodlama sağlamaktır.

DÜZENLEME: Evet, virüs gövdesinin bir parçası. Bunu kullanabilmek için tüm bu "tuğlaları" virüs gövdesine koyarsınız ve başka bir dosya virüs bulaştığında, bunun için decriptor'un rastgele bir sürümünü yaratırsınız.

+0

teşekkürler! Bana prosedürün iyi bir resmini verdi. Yani motor, virüsün bir parçası, kendi bağımsız varoluşuna sahip olmayan bir şey değil (bir program olarak)? –