CppGuide社区 CppGuide社区
首页
  • 最新谷歌C++风格指南(含C++17/20)
  • C++17详解
  • C++20完全指南
  • C++23快速入门
  • C++语言面试问题集锦
  • 🔥C/C++后端开发常见面试题解析 (opens new window)
  • 网络编程面试题 (opens new window)
  • 网络编程面试题 答案详解 (opens new window)
  • 聊聊WebServer作面试项目那些事儿 (opens new window)
  • 字节跳动面试官现身说 (opens new window)
  • 技术简历指南 (opens new window)
  • 🔥交易系统开发岗位求职与面试指南 (opens new window)
  • 第1章 高频C++11重难点知识解析
  • 第2章 Linux GDB高级调试指南
  • 第3章 C++多线程编程从入门到进阶
  • 第4章 C++网络编程重难点解析
  • 第5章 网络通信故障排查常用命令
  • 第6章 高性能网络通信协议设计精要
  • 第7章 高性能服务结构设计
  • 第8章 Redis网络通信模块源码分析
  • 第9章 后端服务重要模块设计探索
  • 🚀 全部章节.pdf 下载 (opens new window)
  • 源码分析系列

    • leveldb源码分析
    • libevent源码分析
    • Memcached源码分析
    • TeamTalk源码分析
    • 优质源码分享 (opens new window)
    • 🔥远程控制软件gh0st源码分析
  • 从零手写C++项目系列

    • C++游戏编程入门(零基础学C++)
    • 🔥使用C++17从零开发一个调试器 (opens new window)
    • 🔥使用C++20从零构建一个完整的低延迟交易系统 (opens new window)
    • 🔥使用C++从零写一个C语言编译器 (opens new window)
    • 从零用C语言写一个Redis
  • Windows 10系统编程
  • 🔥Windows Native API编程
  • 🔥Windows x64 ShellCode入门教程
  • 🔥Windows Shellcode实战
  • Go语言特性

    • Go开发实用指南
    • Go系统接口编程
    • 高效Go并发编程
    • Go性能调优
    • Go项目架构设计
  • Go项目实战

    • 使用Go从零开发一个数据库
    • 🔥使用Go从零开发一个编译器 (opens new window)
    • 🔥使用Go从零开发一个解释器 (opens new window)
    • 🔥用Go从零写一个编排器(类Kubernetes) (opens new window)
  • Rust编程

    • Rust编程指南
  • 数据库

    • SQL零基础指南
    • MySQL开发与调试指南
  • Linux内核

    • 心中的内核 —— 在阅读内核代码之前先理解内核
    • 🔥Linux 5.x内核开发与调试 完全指南 (opens new window)
    • TCP源码实现超详细注释版.pdf (opens new window)
GitHub (opens new window)
首页
  • 最新谷歌C++风格指南(含C++17/20)
  • C++17详解
  • C++20完全指南
  • C++23快速入门
  • C++语言面试问题集锦
  • 🔥C/C++后端开发常见面试题解析 (opens new window)
  • 网络编程面试题 (opens new window)
  • 网络编程面试题 答案详解 (opens new window)
  • 聊聊WebServer作面试项目那些事儿 (opens new window)
  • 字节跳动面试官现身说 (opens new window)
  • 技术简历指南 (opens new window)
  • 🔥交易系统开发岗位求职与面试指南 (opens new window)
  • 第1章 高频C++11重难点知识解析
  • 第2章 Linux GDB高级调试指南
  • 第3章 C++多线程编程从入门到进阶
  • 第4章 C++网络编程重难点解析
  • 第5章 网络通信故障排查常用命令
  • 第6章 高性能网络通信协议设计精要
  • 第7章 高性能服务结构设计
  • 第8章 Redis网络通信模块源码分析
  • 第9章 后端服务重要模块设计探索
  • 🚀 全部章节.pdf 下载 (opens new window)
  • 源码分析系列

    • leveldb源码分析
    • libevent源码分析
    • Memcached源码分析
    • TeamTalk源码分析
    • 优质源码分享 (opens new window)
    • 🔥远程控制软件gh0st源码分析
  • 从零手写C++项目系列

    • C++游戏编程入门(零基础学C++)
    • 🔥使用C++17从零开发一个调试器 (opens new window)
    • 🔥使用C++20从零构建一个完整的低延迟交易系统 (opens new window)
    • 🔥使用C++从零写一个C语言编译器 (opens new window)
    • 从零用C语言写一个Redis
  • Windows 10系统编程
  • 🔥Windows Native API编程
  • 🔥Windows x64 ShellCode入门教程
  • 🔥Windows Shellcode实战
  • Go语言特性

    • Go开发实用指南
    • Go系统接口编程
    • 高效Go并发编程
    • Go性能调优
    • Go项目架构设计
  • Go项目实战

    • 使用Go从零开发一个数据库
    • 🔥使用Go从零开发一个编译器 (opens new window)
    • 🔥使用Go从零开发一个解释器 (opens new window)
    • 🔥用Go从零写一个编排器(类Kubernetes) (opens new window)
  • Rust编程

    • Rust编程指南
  • 数据库

    • SQL零基础指南
    • MySQL开发与调试指南
  • Linux内核

    • 心中的内核 —— 在阅读内核代码之前先理解内核
    • 🔥Linux 5.x内核开发与调试 完全指南 (opens new window)
    • TCP源码实现超详细注释版.pdf (opens new window)
GitHub (opens new window)
  • Windows Shellcode实战 专栏说明
    • 特别申明
    • 介绍
    • 目录
      • 1 shellcodisation在病毒学中的应用
      • 2 编写shellcode
      • 3 WiShMaster:shellcodisation过程
      • 4 使用WiShMaster开发应用程序
      • 5 未来工作
      • 6 结论
  • shellcodisation在病毒学中的应用
  • 编写shellcode
  • WiShMaster:shellcodisation过程
  • 使用WiShMaster开发应用程序
  • 未来工作
  • 总结
目录

Windows Shellcode实战 专栏说明

# Windows Shellcode实战

# 特别申明

特别申明:

  1. 本专栏介绍的内容仅做技术上的交流,请勿使用本文介绍的技术做其他用途,请遵守国家相关法律法规,合理合法使用本文介绍的技术,违者与本站点无关。

  2. 本站不提供任何shellcode工具。

# 介绍

恶意代码通常需要对自身代码进行操作,以实现一些病毒技术,例如可执行文件感染、仅内存执行或多态性(polymorphism)等。

如果程序是shellcode,则此类操作会大大简化。获取shellcode有几种方法:一种是使用汇编语言(assembly)编写源代码,但这很快会变得枯燥乏味。另一种是以特定方式使用C语言编写源代码,使编译后的代码不包含任何硬编码地址(hardcoded address)。

然而,以这种方式编写C代码也非常繁琐,显然,使用自动化工具将“普通”代码生成“特定”代码是必不可少的。

WiShMaster是一款工具,它能够转换一组“正常”编写的C源文件(这些源文件编译后会生成可执行文件),并生成shellcode——即一段不包含任何硬编码或外部引用(external reference)的代码块,且可以在任何进程的任何地址运行。如果将执行流程重定向到其第一个字节,该shellcode将完成与通过正常源代码编译生成的可执行文件完全相同的操作。

本文将详细描述这种转换(后文称为“shellcodisation”)的原理,并通过一些示例展示其带来的便利。

你需要的是移除目录中所有标题后方的英文注释,同时完整保留原有的层级结构和中文标题,以下是处理后的完整目录:

# 目录

# 1 shellcodisation在病毒学中的应用

​ 1.1 背景定义

​ 1.2 恶意代码的选定目标

​ 1.2.1 避开基于特征码识别的反病毒软件检测

​ 1.2.2 在受感染主机上留下尽可能少的痕迹

​ 1.2.3 嵌入合法程序以创建特洛伊木马

​ 1.2.4 拦截使用受感染计算机的用户的私人数据

​ 1.2.5 加密自身以防止人工分析

​ 1.3 基于可执行文件的实现

​ 1.3.1 实现多态性

​ 1.3.2 仅在内存中执行

​ 1.3.3 感染其他可执行文件

​ 1.3.4 执行代码注入

​ 1.3.5 实现真正的加密

​ 1.3.6 总结

​ 1.4 基于shellcode的实现

​ 1.4.1 实现多态性

​ 1.4.2 仅在内存中执行

​ 1.4.3 感染其他可执行文件

​ 1.4.4 执行代码注入

​ 1.4.5 实现真正的加密

​ 1.4.6 总结

# 2 编写shellcode

​ 2.1 编译生成的二进制数据解析

​ 2.2 shellcode生成原理

​ 2.2.1 第一种方法:汇编代码修补

​ 2.2.2 第二种方法:使用栈

​ 2.2.3 第三种方法:使用全局数据

# 3 WiShMaster:shellcodisation过程

​ 3.1 工具介绍

​ 3.2 开发进展

​ 3.2.1 WiShMaster 版本1

​ 3.2.2 WiShMaster 版本2

​ 3.3 shellcodisation过程

​ 3.3.1 概述

​ 3.3.2 “分析”步骤说明

​ 3.3.3 “获取全局变量大小”步骤说明

​ 3.3.4 “生成”步骤说明

​ 3.3.5 “自定义”步骤说明

​ 3.3.6 “集成”步骤说明

​ 3.3.7 WiShMaster中shellcodisation的实现

​ 3.3.8 shellcode初始化

# 4 使用WiShMaster开发应用程序

​ 4.1 WiShMaster的目标

​ 4.2 WiShMaster版本2中应用程序的结构

​ 4.2.1 应用程序结构概述

​ 4.2.2 导出表和导入表

​ 4.2.3 入口点

​ 4.3 标准模块

​ 4.3.1 “日志”模块

​ 4.3.2 “initsh”模块

​ 4.3.3 “加载器”模块

​ 4.4 shellcode加密

​ 4.4.1 32位密钥的异或(XOR)加密

​ 4.4.2 256位密钥的高级加密标准-密码分组链接模式(AES-CBC)加密

​ 4.4.3 使用共享密钥

​ 4.5 开发反向shell

​ 4.5.1 程序结构概述

​ 4.5.2 生成反向shell

​ 4.6 实现USB攻击以执行反向shell

​ 4.6.1 攻击准备

​ 4.6.2 攻击流程

# 5 未来工作

​ 5.1 pycparser工具

​ 5.2 GCC编译器的fPIC选项

​ 5.3 趣味使用编译指令

# 6 结论

shellcodisation在病毒学中的应用

shellcodisation在病毒学中的应用→

最近更新
01
C++语言面试问题集锦 目录与说明
03-27
02
第四章 Lambda函数
03-27
03
第二章 关键字static及其不同用法
03-27
更多文章>
Copyright © 2024-2026 沪ICP备2023015129号 张小方 版权所有
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式