给EXE加个密码【免杀系列】
字数 1017 2025-08-23 18:31:34

给EXE加密码绕过杀软动态查杀技术详解

一、杀软查杀机制概述

在免杀技术中,我们需要了解杀毒软件的三种主要查杀方式:

  1. 静态查杀:通过搜索文件中的恶意软件静态特征进行查杀

    • 绕过方法:简单的代码变形(如异或、base64编码等)通常就能绕过
  2. 动态查杀:使用沙箱模拟执行文件,检测是否执行敏感操作

    • 本文重点讨论如何绕过这种查杀方式
  3. 内存查杀和行为监控:检测内存中的恶意代码和执行时的异常行为

    • 最难绕过,因为加载到内存后代码会现出原形

二、基于参数密码的免杀技术原理

核心思想

利用EXE文件可以接收命令行参数的特性,通过设置"密码"来控制程序流程:

  • 当输入正确密码时,才执行恶意代码
  • 不输入或输入错误密码时,程序表现正常

技术优势

  • 沙箱通常不会尝试所有可能的参数组合
  • 可以绕过仅通过模拟执行检测恶意行为的动态查杀机制

三、实现代码示例

基础示例代码

#include <stdio.h>
#include <Windows.h>
#include <iostream>

void Hello() {
    printf("Hello World");
}

void InjectShellcode() {
    printf("Inject shellcode!!!");
    // 这里实际应放置shellcode注入代码
}

int main(int argc, char* argv[]) {
    if (argc >= 2) {
        if ((std::string)argv[1] == "123456") {  // 设置密码为"123456"
            InjectShellcode();
        }
    } else {
        Hello();  // 无参数或参数错误时执行无害代码
    }
    system("pause");
}

代码解析

  1. argc:命令行参数个数(包括程序名本身)
  2. argv:存储所有命令行参数的数组
    • argv[0]:程序名
    • argv[1]:第一个参数(密码)
  3. 只有当输入正确密码"123456"时,才会执行InjectShellcode()

四、实际测试效果

根据作者测试,该方法对主流杀毒软件的效果如下:

杀毒软件 测试结果
火绒 可持续上线不会掉
360 可持续上线,可能长时间会掉
Windows Defender 可上线但执行不了命令(后来被标记)
卡巴斯基 可过静态检测但无法上线

五、技术优化方向

虽然这种方法看起来简单,但可以进一步优化:

  1. 多参数验证:使用多个参数组合作为密码
  2. 参数加密:对输入的参数进行加密验证而非明文比较
  3. 环境检测:结合沙箱检测技术,只在真实环境中执行恶意代码
  4. 时间延迟:添加延迟执行逻辑,绕过沙箱的时间限制

六、注意事项

  1. 该方法主要针对动态查杀,对内存和行为监控效果有限
  2. 密码设置过于简单可能被暴力尝试破解
  3. 长期使用同一密码可能被安全厂商标记
  4. 需要配合其他免杀技术(如代码混淆、加密等)使用效果更佳

七、总结

通过为EXE添加密码参数控制程序流程,是一种简单有效的绕过杀软动态查杀的方法。虽然技术实现简单,但在实际测试中表现良好,可以作为免杀技术体系中的一个有效组成部分。结合其他高级免杀技术,可以构建更强大的免杀方案。

给EXE加密码绕过杀软动态查杀技术详解 一、杀软查杀机制概述 在免杀技术中,我们需要了解杀毒软件的三种主要查杀方式: 静态查杀 :通过搜索文件中的恶意软件静态特征进行查杀 绕过方法:简单的代码变形(如异或、base64编码等)通常就能绕过 动态查杀 :使用沙箱模拟执行文件,检测是否执行敏感操作 本文重点讨论如何绕过这种查杀方式 内存查杀和行为监控 :检测内存中的恶意代码和执行时的异常行为 最难绕过,因为加载到内存后代码会现出原形 二、基于参数密码的免杀技术原理 核心思想 利用EXE文件可以接收命令行参数的特性,通过设置"密码"来控制程序流程: 当输入正确密码时,才执行恶意代码 不输入或输入错误密码时,程序表现正常 技术优势 沙箱通常不会尝试所有可能的参数组合 可以绕过仅通过模拟执行检测恶意行为的动态查杀机制 三、实现代码示例 基础示例代码 代码解析 argc :命令行参数个数(包括程序名本身) argv :存储所有命令行参数的数组 argv[0] :程序名 argv[1] :第一个参数(密码) 只有当输入正确密码"123456"时,才会执行 InjectShellcode() 四、实际测试效果 根据作者测试,该方法对主流杀毒软件的效果如下: | 杀毒软件 | 测试结果 | |---------|---------| | 火绒 | 可持续上线不会掉 | | 360 | 可持续上线,可能长时间会掉 | | Windows Defender | 可上线但执行不了命令(后来被标记) | | 卡巴斯基 | 可过静态检测但无法上线 | 五、技术优化方向 虽然这种方法看起来简单,但可以进一步优化: 多参数验证 :使用多个参数组合作为密码 参数加密 :对输入的参数进行加密验证而非明文比较 环境检测 :结合沙箱检测技术,只在真实环境中执行恶意代码 时间延迟 :添加延迟执行逻辑,绕过沙箱的时间限制 六、注意事项 该方法主要针对动态查杀,对内存和行为监控效果有限 密码设置过于简单可能被暴力尝试破解 长期使用同一密码可能被安全厂商标记 需要配合其他免杀技术(如代码混淆、加密等)使用效果更佳 七、总结 通过为EXE添加密码参数控制程序流程,是一种简单有效的绕过杀软动态查杀的方法。虽然技术实现简单,但在实际测试中表现良好,可以作为免杀技术体系中的一个有效组成部分。结合其他高级免杀技术,可以构建更强大的免杀方案。