5

我必须编写一个简单的多态引擎。我使用 linux(32 位),我可以用汇编和 c 编写代码。我不知道如何开始。

你能给我一个构建这样一个引擎的模式吗?我的想法是制作一个程序:

  1. 读取文件的代码部分
  2. 在缓冲区中对其进行加密,
  3. 在开头留出空间(有可能吗?)以添加解密例程
  4. 将新缓冲区写入程序的代码部分。

那正确吗?它是否反映了这种发动机的运行情况?

4

1 回答 1

3

基本模式与您描述的完全不同。通常只有病毒体被加密,而不是整个代码段。考虑一个简单的病毒,它要么扩展代码部分,要么为其主体创建一个新的。现在,要使其具有多态性,您必须添加加密并使解密器代码成为非常量,例如:

1) 随机插入 nop ( nop, add reg, 0, push reg; pop reg, 等)

jmp next2) 用 ( , clc; jc next, 等)改变程序流程

3)使用具有相同算术效果的指令(add eax, 3-> add eax, 9; sub eax, 6

多态意味着它可以具有固定数量的编码,因此创建一个最简单的方法是将解密器代码分成几个块,并为每个块提供多个具有相同长度的编码。

编辑:是的,它是病毒体的一部分。为了使用它,您将所有这些“砖块”放入病毒体中,当另一个文件被感染时,您为它创建一个随机版本的解密器。

于 2010-11-14T13:39:02.597 回答