2010-11-14 64 views
5

我必須編寫一個簡單的多態引擎。我使用Linux(32位),我可以在程序集和c。我不知道如何開始。簡單的多態引擎

你能給我一個構建這樣一個引擎的模式嗎?我的想法是讓一個程序:

  1. 讀取文件
  2. 加密在緩衝器的代碼段,
  3. 騰出空間開頭(這可能嗎?)加解密程序
  4. 在程序的代碼部分寫入新的緩衝區。

是嗎?它是否反映了這種引擎的操作?

+0

教程看起來不錯:https://www.pelock.com/articles/polymorphic-encryption-algorithms。發佈爲@Twistd的鏈接專用答案。 – 2016-12-17 04:01:45

回答

3

基本模式與您所描述的完全不同。通常只有病毒體被加密,而不是整個代碼部分。考慮一個簡單的病毒,要麼擴展代碼段,要麼爲其主體創建一個新的病毒段。現在,讓它多態,你必須添加加密,並解密代碼是不恆定的,如:

1)插入隨機的NOP(nopadd reg, 0push reg; pop reg等)

2)改變與節目流(jmp nextclc; jc next等)

3)使用說明書用相同的算術效果(add eax, 3 - >add eax, 9; sub eax, 6

多態性意味着它可以有編碼的固定數量,所以最簡單的創建方法是在幾個塊中打破解密代碼,併爲每個編碼提供相同長度的幾種編碼。

編輯:是的,它是病毒體的一部分。爲了使用它,您將所有這些「磚塊」放在病毒體內,當另一個文件被感染時,您會爲其創建一個隨機版本的描述符。

+0

感謝您的回答!它給了我一個關於程序的好照片。所以引擎是病毒的一部分,而不是有自己獨立存在的東西(我的意思是一個程序)? – 2010-11-14 15:09:30