我正在努力寻找有关不同变质岩发电机设计的参考资料,有人能给我指一个正确的方向吗?我在acm查了一些文件,但找不到我要找的东西。

最佳答案

如果你提到变质发动机,我很遗憾不知道有什么好的参考资料。我认为这是因为这个话题仍然是禁忌的,因为它通常被病毒作者使用。我认为这是不合理的,因为这项技术本身就很有趣。我一直着迷于自我修改和自我修复系统人们也可以说它与人工智能领域有点关系。
对于未格式化的文件,变形引擎是一个可执行文件,它会更改其本身的每个字节和指令,因此,尽管新文件内容与上一代相比是唯一的,但总体算法是相同的反病毒软件供应商在病毒首次使用该技术时遇到了识别病毒的大麻烦,因为当每一代都不同时,仅仅通过签名识别病毒是不有效的。多态病毒和变形病毒的引入标志着反病毒软件从通过特征码识别转向启发式的时代也就是说,与其查看确切的代码或字节流,不如尝试推断代码的作用。
在实现这样一个东西时会遇到几个问题,这取决于所使用的可执行格式和CPU体系结构:
一些risc体系结构无法保存完整的32位即时消息,因此代码段不可避免地会保存数据池以供即时消息使用,这是通过双重查找获取的。这是一个严重的显示障碍,因为您需要一种方法来明确地将代码与数据分离。也就是说,一些数据值可以合法地表示为代码,反之亦然。
如果您的程序链接到动态库,比如说c运行时,您还需要重新计算重新定位所使用的信息,这是非常重要的。
最大的问题是这样的程序在每一代人中都会以指数级增长。如果初始的“simplier”算法(如下所述)做得不好,就会添加越来越多的垃圾代码而“差劲的工作”意味着它无法将代码完美地简化回原来的版本任何来自上一代的额外“膨胀”都会累积起来。
一般技术工作如下:
应用程序必须读取自身并解析可执行格式(ELF、COFF、a.out、PE)然后对每组n条指令,尝试简化算法。例如,值X的加法后跟值X的减法实际上是noop,可以忽略a*b+a*c可以简化为a*(b+c),保存一条指令。所以这个简化器找到了整个算法的基本框架,因为它以前经历过变形。
然后,通过执行相反的操作再次混淆代码。接受N条指令,用其他同样的指令替换它们其他阶段包括将数据立即分成几个部分、混淆字符串和将代码分成几个新函数,以及移动代码。所有这些都是在跟踪代码和数据引用的同时完成的最后,将代码组装并作为可执行文件链接回其表单。
太复杂了。仅适用于真正的硬核程序集编码器。你被警告了。

10-08 03:48