混淆技术(Obfuscation techniques)

2023-12-13 03:10

本文主要是介绍混淆技术(Obfuscation techniques),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

混淆技术被病毒制作者大量使用于躲避防病毒扫描程序的检测。
混淆对抗技术 只能对恶意软件的代码句法与签名进行混淆却无法掩盖恶意软件的行为。
所以基于动态的检测几乎都能针对混淆技术。
现有的恶意软件种类有:加密(encrypted),寡态(oligomorphic),多态(ploymorphic),变形(metamorphic)。

多态与变形恶意软件中常用的混淆技术。

  1. 死码插入(Dead-Code Insertion)
    程序无效指令改变其外观,但保证其行为。例如:通过插入无效指令nop可以轻松地对原始代码进行模糊处理。但是 基于签名的防病毒扫描程序可以通过在分析之前删除无效的指令来破坏此次技术,为了加大检测的难度,提出了一些代码序列。

  2. 注册重新分配(Register Reassignment)
    寄存器重新分配是另外一种简单的技术,可以将寄存器代代切换,同时保持程序代码及其行为相同,通过改变寄存器来改变原始代码。(前图为原始图,后图是修改寄存器后图像)

在这里插入图片描述
在这里插入图片描述

  1. 子程序重新排序(Subroutine Reordering)
    子程序重新排序通过以随机方式改变子程序的顺序来模糊原始的代码,这种技术可以生成n!种不同的变种
  2. 指令代替(Instruction Substitution)
    指令代替通过使用其他等效的指令进行替换来改变原始代码
  3. 代码转置(Code Transposition)
    代码转置重新排序原始代码的指令序列而不会对其行为产生任何的影响。具体有两种方法可以实现这种技术。
    1.基于无条件分支的代码转置(based on Unconditional Branches)
    随机重新混合指令,然后通过插入无条件分支或转跳来恢复原始的执行顺序,这种方式很容易恢复,通过删除无条件分支或转跳很容易恢复原始程序。在这里插入图片描述
    2.基于独立指令的代码转置(based on Independent Instructions)
    通过选择和重新排序彼此之间没有影响的独立指令来创建新的原始程序,由于找到独立指令是一个复杂的问题这种方式难以实现,但会大大增加检测的成本
    在这里插入图片描述
  4. 代码集成(Code Integration)
    恶意软件将自身编制到其目标程序的代码中,首先将其目标程序反编译为可管理对象,在它们之间进行无缝的添加,并将集成代码重新组合成新一代。作为最复杂的混淆技术之一,代码集成使检测与恢复变的非常困难
    7.加密代码
    8.变量重命名

References:malware obfuscation techniques,A Brief Survey

这篇关于混淆技术(Obfuscation techniques)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/486933

相关文章

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4