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 结论

上次更新: 2026/01/20, 13:31:25

社区交流

讨论与留言

前往 GitHub Issues →

本留言区仅对应当前文章,欢迎补充观点、提出问题或帮助修正文中疏漏。 留言由 GitHub/Gitalk 提供,需要使用 GitHub 登录。

最近更新
第 1 课:专栏导论与安全边界
07-01
第 3 课:安装编译与调试环境
07-01
第 4 课:第三方库下载、编译与依赖管理
07-01
更多文章>