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

yizhihongxing

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

概述

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

方法一:代码混淆

策略

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

示例

# 混淆前
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日

相关文章

  • git查看某个文件的修改历史及具体修改内容

    Git查看某个文件的修改历史及具体修改内容 Git作为目前最流行的版本控制系统之一,不仅可以方便地管理代码版本,还可以查看某个文件的修改历史和每个版本的变化。这篇文章将介绍如何通过Git查看某个文件的修改历史及具体修改内容。 1. 查看文件修改历史 要查看某个文件的修改历史,可以使用Git的命令行工具,打开终端,进入目标Git仓库所在的目录。使用下面的命令可…

    其他 2023年3月28日
    00
  • oracle数据库解析json格式

    Oracle数据库解析JSON格式 在现代开发中,JSON格式被广泛应用于数据传输及数据存储。Oracle数据库从12c版本开始,就开始支持对JSON格式的解析和处理,本文将介绍Oracle数据库如何解析JSON格式,及一些常用的JSON处理操作。 解析JSON格式 在Oracle数据库中,我们可以使用JSON数据类型存储JSON格式数据,如下所示: CRE…

    其他 2023年3月28日
    00
  • Python获取指定文件夹下的文件名的方法

    获取指定文件夹下的文件名,我们可以使用Python中的os模块来实现。具体步骤如下: 1. 导入os模块 import os 2. 定义文件夹路径 folder_path = ‘/path/to/folder’ 要获取指定文件夹下的文件名,首先需要定义文件夹路径。其中,/path/to/folder应根据实际情况进行替换。 3. 使用os.listdir()…

    other 2023年6月26日
    00
  • 微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析

    微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析 一、前言 在微信小程序开发中,列表渲染功能是必不可少的功能之一。而列表下拉刷新及上拉加载是列表渲染的常见需求,本文将从实现方法分析角度对列表下拉刷新及上拉加载这一功能进行详细讲解。 二、实现思路 1. 下拉刷新 下拉刷新的实现思路如下: 在需要下拉刷新的页面添加一个scroll-view元素,并设…

    other 2023年6月25日
    00
  • 如何最大限度减少线缆设计中的串扰的解决方案

    为了最大限度减少线缆设计中的串扰,我们可以采取以下解决方案: 1. 优化线缆排列和隔离 线缆的排列和隔离是减少串扰的关键。建议尽可能将同类信号的线缆分开,降低它们之间的交叉程度。例如,在一个机房内,可以将电缆、网络线、电话线等分别排列,然后使用屏蔽材料将它们隔开。这样可以有效减少信号之间的交叉干扰,提高整个系统的抗干扰能力。 示例说明: 假如一个机房内需要布…

    other 2023年6月26日
    00
  • Creo直线怎么变成构造线? Creo中构造线的制作方法

    Creo直线变成构造线的方法 在Creo中,将直线转换为构造线是一种常见的操作。构造线是一种特殊类型的几何元素,用于辅助设计和约束模型。下面是将直线转换为构造线的详细步骤: 首先,打开Creo软件并加载您的模型。 选择直线:使用选择工具(通常是箭头图标),单击并选择您想要转换为构造线的直线。您可以使用鼠标拖动来选择直线。 右键单击选择的直线:在选择直线后,右…

    other 2023年8月6日
    00
  • centos7tar.gzzip解压命令

    CentOS7 tar.gz/zip解压命令 在Linux操作系统中,有时需要解压tar.gz或zip格式的压缩包,本文将介绍在CentOS7操作系统中,如何使用命令行解压tar.gz/zip格式的压缩包。 1. 解压tar.gz格式的压缩包 1.1. 命令格式 tar.gz格式的压缩包可以使用以下命令进行解压缩: tar -zxvf <压缩包名称&g…

    其他 2023年3月29日
    00
  • 鼠标左键失灵怎么设置右键代替左键?

    要将鼠标左键设置为右键代替,有几种方法可以尝试: 方法一:使用鼠标设置 转到控制面板并搜索“鼠标”,然后打开“鼠标属性”。 在“按钮”选项卡中,将“左键按钮”设置为“右键单击”。 点击“应用”并确认更改。 以下是示例: 1. 打开控制面板,搜索“鼠标”,进入“鼠标属性”。 2. 定位到“按钮”选项卡,选择“右键单击”代替“左键按钮”。 3. 点击“应用”并确…

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