木马免杀绝招以及常用的修改方法

木马免杀绝招以及常用的修改方法

概述

在当前网络安全形势下,许多杀毒软件都会对常见的木马进行识别和拦截,因此,黑客们会采用各种方式对木马样本进行修改,以实现免杀的目的。本文将介绍一些常用的木马免杀绝招以及修改方法,帮助读者更好地了解木马免杀技巧。

方法一:代码混淆

策略

代码混淆是指将程序代码进行加密、压缩、重写以及添加虚假代码等方式,使得病毒代码难以被查杀。通过混淆,可以使得病毒样本不易被杀软所识别,同时可以减小样本的大小。

示例

# 混淆前
def func():
    print("Hello,world.")

# 混淆后
a = ord('H') << 6
b = ord('e') << 6
c = ord('l') << 6
d = ord('l') << 6
e = ord('o') << 6
f = ord(',') << 6
g = ord('w') << 6
h = ord('o') << 6
i = ord('r') << 6
j = ord('l') << 6
k = ord('d') << 6
l = ord('.') << 6
m = a + b + c + d + e + f + g + h + i + j + k + l
exec(chr(m >> 6) + chr(m & 0x3f))

方法二:反调试

策略

通过反调试技术,可以检测代码是否在调试器中运行,并在检测到调试器时停止运行。在常见的反调试技术中,可以使用IsDebuggerPresent函数进行检测调试器是否存在,以及使用PEB结构体中的BeingDebugged字段检测是否正在被调试等。

示例

// 反调试前
int main()
{
    printf("Hello,world.\n");
    return 0;
}

// 反调试后
int main()
{
    if (IsDebuggerPresent()) {
        printf("Debugger detected.\n");
        return 0;
    }
    printf("Hello,world.\n");
    return 0;
}

方法三:虚拟化

策略

虚拟化技术可以将恶意代码嵌入到虚拟机中运行,并使用加密等方式难以被杀软所识别。通过虚拟化,可以隐藏程序的真实行为,增加杀软的检测难度。

示例

# 虚拟化前
def func():
    print("Hello,world.")

# 虚拟化后
import base64
import marshal

data = base64.b64decode("YwAAAAXzAAAADwAAAGwAAABlAAAAcQEAAEAAAEiAAAAQQAAAHgAAAAAAAAAAABxAgAAbAAAAA==")
code = marshal.loads(data)
exec(code)

方法四:反射

策略

通过反射技术,可以动态地生成代码并执行,增加恶意代码的多样性,从而增加杀软的检测难度。通过反射,可以动态地生成函数、类等,并且可以加入各种混淆、加密等措施来尽可能的隐藏恶意代码。

示例

# 反射前
import os
os.system("calc.exe")

# 反射后
import os

function_name = "".join([chr(ord(i) - 1) for i in ['d', 'p', 'n', 't', 'z', 't', '(']])
function = getattr(os, function_name)

parameter = "".join([chr(ord(i) - 1) for i in ['dbmd', '.gf', 'f']])
function(parameter)

结论

针对木马免杀,可以采用多种方式进行修改,如代码混淆、反调试、虚拟化和反射等。通过这些技巧的使用,可以增加恶意代码的多样性,并增加杀软的检测难度,从而达到免杀的目的。当然,这些技巧也都有着各自的局限性,需要根据具体情况灵活运用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:木马免杀绝招以及常用的修改方法 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • Cisco(思科)交换机初始化配置操作方法案例分析

    Cisco交换机初始化配置操作方法案例分析 简介 本文将介绍Cisco交换机的初始化配置操作方法,为初次接触Cisco设备的用户提供指导。以下是整个操作过程的完整步骤: 确认配置 进入用户模式 进入特权模式 配置全局参数 配置端口 保存配置并退出 步骤说明 1. 确认配置 在配置前,请务必确认收集以下信息: 设备型号 确认开启SSH服务 确认管理接口IP地址…

    other 2023年6月20日
    00
  • Android实现自定义圆形进度条

    下面是“Android实现自定义圆形进度条”的完整攻略。 1.准备工作 在开始实现自定义圆形进度条之前,我们需要进行一些准备工作: 添加依赖库 我们需要在项目的build.gradle文件中添加自定义View的依赖库。 dependencies { implementation ‘com.android.support:appcompat-v7:26.1.0…

    other 2023年6月25日
    00
  • shell脚本declare命令的用法详解(声明变量的属性和类型)

    Shell脚本declare命令的用法详解 在Shell脚本中,declare命令用于声明变量的属性和类型。它可以帮助我们更好地控制变量的行为和使用。下面是declare命令的用法详解,包括属性和类型的说明,并提供了两个示例说明。 声明变量的属性 declare命令可以用来声明变量的属性,常见的属性包括: -r:将变量声明为只读,即不可修改的常量。 -i:将…

    other 2023年8月9日
    00
  • [知识点]平衡树之Splay

    [知识点]平衡树之Splay 简介 Splay是一种自适应的平衡树,它能够在O(logN)的时间复杂度内完成插入、删除和查找操作。它的最大优点在于它的代码实现简单,易于理解和调试。 基本操作 Splay树的基本操作包括三种:Access、Split和Join。 Access Access操作可以让我们把一个节点旋转到根节点位置,这项操作通常在树上进行路径压缩…

    其他 2023年3月28日
    00
  • MySQL中使用正则表达式详情

    MySQL中使用正则表达式攻略 MySQL提供了正则表达式的支持,可以在查询中使用正则表达式进行模式匹配。下面是使用正则表达式的详细攻略。 正则表达式函数 MySQL提供了以下几个函数用于正则表达式匹配: REGEXP:用于在查询中进行正则表达式匹配。 REGEXP_INSTR:返回匹配正则表达式的字符串的起始位置。 REGEXP_REPLACE:用于替换匹…

    other 2023年8月19日
    00
  • linux环境变量ps1配置

    以下是关于“Linux环境变量PS1配置”的完整攻略: 什么是PS1 PS1是Linux系统中的一个环境变量,用于配置令行提示符的显示格式。通过配置PS1,可以自定义命令行提示符的颜色、显示内容等。 PS1的配置方式 可以通过在.bashrc文件中添加PS1的配置来实现自定义命令行提示符的显示格式。以下是一个示例代码,演示如PS1: # 在.bashrc文件…

    other 2023年5月7日
    00
  • 如何在 Illustrator 中使用图层 ai图层使用教程

    如何在 Illustrator 中使用图层 在 Adobe Illustrator 中,图层是组织和管理设计元素的重要工具。以下是使用图层的详细攻略: 创建图层 打开 Adobe Illustrator,并打开您的设计文件。 在右侧的“图层”面板中,点击底部的“新建图层”按钮(图标为一个方形和一个加号)。 输入图层的名称,并按下回车键创建图层。 图层的可见性…

    other 2023年10月15日
    00
  • js之ActiveX控件使用说明 new ActiveXObject()

    JS中通过创建ActiveXObject对象来访问本地计算机上的COM组件,进而实现很多常规语言无法实现的操作。 前提条件 ActiveXObject只能在IE浏览器中使用 计算机上需要安装相应的COM组件 创建ActiveXObject对象 ActiveXObject()构造函数用于创建新的ActiveXObject对象。 语法: var varname …

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部