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

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

概述

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

方法一:代码混淆

策略

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

示例

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

相关文章

  • Android View的事件体系教程详解

    Android View的事件体系教程详解 Android View的事件体系是Android开发中非常重要的一部分,它负责处理用户的输入和交互操作。本教程将详细讲解Android View的事件体系,包括事件的传递、分发和处理过程。 事件传递机制 在Android中,事件传递是从父View到子View的过程,称为事件的分发。当用户触摸屏幕时,事件首先传递给…

    other 2023年7月28日
    00
  • lambda动态表达式(排序)

    Lambda动态表达式(排序) 在程序开发中,经常需要对集合中的元素进行排序。对于基本类型的数组,可以使用Java中的Arrays.sort()方法进行排序。然而,对于自定义类型的元素,需要实现Comparable接口来实现排序,这会增加代码的复杂性。此时,我们可以使用Lambda动态表达式来实现排序功能。 Lambda表达式是Java8引入的一个重要特性,…

    其他 2023年3月28日
    00
  • SharedWorker 多页面相互通信示例详解

    让我来详细讲解一下“SharedWorker 多页面相互通信示例详解”。 什么是 SharedWorker SharedWorker 是一个 JavaScript API,其允许运行在同一源下的多个脚本访问共享的 Worker(线程)实例。 sharedWorker 通过名称创建,也就是说,一个相同名称的 sharedWorker 可以被多个页面/脚本访问,…

    other 2023年6月27日
    00
  • 无法将函数定义与现有的声明匹配 问题的解决办法 分享

    问题描述:当我们在编写程序的时候,可能会遇见“无法将函数定义与现有的声明匹配”这个错误,这种情况通常发生在我们在使用函数前未正确声明函数的情况下。 解决办法:要解决这个问题,我们需要做两件事:一是声明函数,二是定义函数。 声明函数 在程序中,声明函数是很重要的,它可以告诉编译器我们程序中有哪些函数,并定义这些函数的参数和返回值类型。 例如,如果我们要在程序中…

    other 2023年6月26日
    00
  • 解决Cent0S 6.7直接在/etc/resolv.conf文件下修改DNS地址重启不生效问题

    当我们在CentOS 6.7上修改/etc/resolv.conf文件中的DNS地址后,发现重启网络服务或者服务器后DNS地址未能生效。这通常是因为CentOS 6.7中使用NetworkManager管理网络配置,而不是直接通过/etc/resolv.conf文件来设置DNS地址。下面是解决该问题的完整攻略。 步骤一:禁用NetworkManager 首先…

    other 2023年6月27日
    00
  • iOS10发布会直播 WWDC2016苹果开发者大会视频/图文直播地址汇总

    iOS10发布会直播 WWDC2016苹果开发者大会视频/图文直播地址汇总 介绍 WWDC是苹果开发者年度盛事,是所有苹果爱好者和开发者关注的焦点。其中的iOS发布会更是备受关注,世界各地的人们都想第一时间关注到这个盛况。本文将为大家提供iOS10发布会直播的视频和图文直播地址,方便大家快速获取官方信息。 视频直播地址 苹果公司提供了官方的视频直播地址,可以…

    other 2023年6月27日
    00
  • Java的深拷贝和浅拷贝深入了解

    Java的深拷贝和浅拷贝深入了解 什么是深拷贝和浅拷贝 在Java中,对象的拷贝分为深拷贝和浅拷贝两种方式。 浅拷贝:浅拷贝是指创建一个新对象,然后将原对象的非静态字段值复制到新对象中。如果字段是基本类型,则复制其值;如果字段是引用类型,则复制其引用,即新对象和原对象引用同一个对象。因此,对于引用类型字段的修改会影响到原对象和新对象。 深拷贝:深拷贝是指创建…

    other 2023年10月15日
    00
  • Ubuntu虚拟机与win7主机方便传文件的实现方法

    首先需要在Ubuntu虚拟机中安装openssh-server,用于建立ssh连接进行文件传输。可以使用以下命令进行安装: sudo apt-get update sudo apt-get install openssh-server 安装完成后,需要查看虚拟机的IP地址。可以使用以下命令在终端中查看: ip address 得到虚拟机的IP地址后,需要在主…

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