0230、Windows 逆向攻防:x64 ShellCode 基础
返回:Windows 逆向攻防篇 · 网络安全学习主页
这一节对应 05.2 - 05.9,主题是 x64 ShellCode 的基础能力。这里不整理可执行实现,而是把它拆成几个可复盘概念:调用约定、模块定位、PE 结构、字符串匹配、哈希匹配和动态 API 解析。
1、内容范围
小节
主题
05.2
x64 ShellCode 通用 C 语言思路
05.3
x64 汇编定位模块特征及数据比对
05.4
x64 汇编解析 PE 结构及数据关联
05.5
x64 汇编字符串匹配通用模板
05.6
x64 汇编框架远程执行测试
05.7
通用 ShellCode 框架
05.8
双版本兼容与特征混淆
05.9
字符串哈希处理及快速匹配
1.1、逐节复盘
小节
主要内容
复盘点
05.2
认识 x64 ShellCode 的限制:调用约定、栈对齐、寄存器保存
重点理解结构,不写可直接执行的字节序列
05.3
通过汇编定位模块基址和关键结构
复盘 PEB、模块链、地址范围和架构差异
05.4
从 PE 结构理解导出表、名称表和函数地 ...
0227、Windows 逆向攻防:全局 Hook 与内存映射
返回:Windows 逆向攻防篇 · 网络安全学习主页
这一节对应 03.5 - 03.9,核心是 Windows 消息机制和共享内存映射。Hook 和内存映射都是系统正常能力,安全复盘时要关注它们在跨进程场景下带来的加载、消息、回调和共享数据痕迹。
1、内容范围
小节
主题
03.5
Windows Hook 挂钩监听消息
03.6
跨进程钩子注入消息映射回调原理
03.7
主线程、窗口句柄与消息队列
03.8
注入触发回调及释放全过程
03.9
共享内存映射完成跨进程注入思路
1.1、逐节复盘
小节
主要内容
复盘点
03.5
从消息机制理解 Windows Hook 的作用位置
记录 Hook 类型、线程/全局范围、目标窗口和消息来源
03.6
理解跨进程消息回调为什么可能导致模块进入其他进程
观察模块加载、回调线程、窗口消息和释放过程
03.7
获取主线程和窗口句柄用于建立观察对象
复盘窗口句柄、线程 ID、进程 ID 之间的映射关系
03.8
观察 Hook 回调触发、执行和卸载全过程
重点记录安装前后模块、句 ...
0234、Windows 逆向攻防:特征码搜索
返回:Windows 逆向攻防篇 · 网络安全学习主页
这一节对应 09.2 - 10.0,主题是特征码搜索。它既可以用于逆向定位,也可以用于防护检测。复盘时不要只看“匹配到了什么”,还要看特征是否稳定、误报是否可控、扫描范围是否合理。
1、内容范围
小节
主题
09.2
硬编码数据基本格式及可变量
09.3
通配符与模糊搜索
09.4
程序框架设计与数据管理
09.5
文件结构扫描解析
09.6
特征码字符串提取转换
09.7
Pattern 匹配数组封装
09.8
扫描模式与回调过滤
09.9
匹配结果写回
10.0
结果解析和效率测试
1.1、逐节复盘
小节
主要内容
复盘点
09.2
认识特征码中固定字节和可变量的区别
记录哪些字节稳定、哪些字段会随版本或地址变化
09.3
使用通配符表达模糊匹配
关注误报率、匹配长度和上下文校验
09.4
设计扫描工具的数据结构和结果管理方式
重点记录输入、范围、规则、命中结果和错误信息
09.5
针对文件结构做扫描解析
分清文件偏移、RVA、VA 和节区范围
09. ...
0237、Windows 逆向攻防:x64 Hook 与指令解析
返回:Windows 逆向攻防篇 · 网络安全学习主页
这一节对应 11.5 - 12.4。x64 Hook 比 x86 更强调调用约定、寄存器参数、跳转距离、栈对齐和指令解码。复盘重点不是写 Hook,而是理解为什么 x64 环境下更容易因为上下文破坏而崩溃。
1、内容范围
小节
主题
11.5
x64 万能跳转方案及环境保护
11.6
x64 通用模板框架
11.7
x64 Stub 环境保存
11.8
寄存器参数获取与堆栈定位
11.9 - 12.0
汇编中转与模板化框架完结
12.1
MinHook
12.2
自旋锁与多线程兼容
12.3
HDE 反汇编
12.4
SIB Base/Index/Scale
1.1、逐节复盘
小节
主要内容
复盘点
11.5
理解 x64 长跳转、寄存器保存和栈对齐问题
重点观察跳转距离、入口覆盖长度和上下文破坏风险
11.6
将 x64 Hook 抽象成通用模板
记录参数、目标函数、中转区、恢复逻辑和错误处理
11.7
使用 Stub 保存执行环境
复盘保存 ...
0233、Windows 逆向攻防:反射式 DLL 加载
返回:Windows 逆向攻防篇 · 网络安全学习主页
这一节对应 08.6 - 09.1。反射式加载的核心不是“神秘技巧”,而是在正常加载器之外,部分模拟 PE 映射、导入修复、重定位修复和入口执行过程。复盘时必须回到 PE 结构本身。
1、内容范围
小节
主题
08.6
ReflectiveDLL
08.7
注入主框架与导出函数执行
08.8
定位执行地址并回溯模块头
08.9
哈希计算、匹配和导出表数据对接
09.0
映像动态拉伸、拷贝和导入表修复
09.1
重定位修正和入口点执行
1.1、逐节复盘
小节
主要内容
复盘点
08.6
理解 ReflectiveDLL 的核心:模块自己完成加载准备
只记录 PE 加载关系、修复对象和检测痕迹
08.7
观察注入主框架和导出函数执行的职责划分
关注入口、导出函数、参数和日志
08.8
从当前执行地址回溯模块头部
复盘内存中 PE 头、节表和地址范围是否可信
08.9
使用哈希匹配导出函数并对接导出表数据
记录哈希规则、名称表、序号表和函数地址表关系
09.0
理解映像从文 ...
0236、Windows 逆向攻防:Inline Hook 框架
返回:Windows 逆向攻防篇 · 网络安全学习主页
这一节对应 10.6 - 11.4。Inline Hook 直接影响函数开头指令,比 IAT Hook 更接近代码执行路径,因此复盘重点是指令完整性、跳转覆盖范围、中转函数和恢复机制。
1、内容范围
小节
主题
10.6
Inline Hook 底层逻辑
10.7
函数参数拦截与传统钩子
10.8
标准模板化钩子框架
10.9
转发函数判断与指令完整性
11.0
指令边界对齐及破坏修复
11.1
中转函数与通用拦截
11.2
任意函数拦截测试
11.3
常规 API 转发
11.4
框架优化与卸载处理
1.1、逐节复盘
小节
主要内容
复盘点
10.6
理解 Inline Hook 直接修改函数入口的底层逻辑
关注入口字节、页属性、跳转目标和原始字节备份
10.7
从参数拦截理解中转函数的观察价值
复盘调用约定、参数位置、返回值和副作用
10.8
将 Inline Hook 整理成模板化框架
记录初始化、安装、转发、恢复、卸载等状态
10.9
判断转发函数和被 ...
0235、Windows 逆向攻防:Hook 基础与 IAT Hook
返回:Windows 逆向攻防篇 · 网络安全学习主页
这一节对应 10.1 - 10.5,从 Hook 概念进入 IAT Hook。Hook 可以用于调试、监控和兼容,也可能被滥用。这里重点复盘 PE 导入表、函数指针替换和检测一致性。
1、内容范围
小节
主题
10.1
Hook 基本概念及分类
10.2
IAT Hook 构建思路及 PE 关联
10.3
API 调用拦截测试及安装卸载
10.4
IAT Hook 检测手法
10.5
拦截 IAT 修改事件与双向监听
1.1、逐节复盘
小节
主要内容
复盘点
10.1
认识 Hook 的分类和共同目标
重点分清 IAT、Inline、VTable、VEH、断点类 Hook 的痕迹位置
10.2
从 PE 导入表理解 IAT Hook 的作用点
复盘导入描述符、IAT 表项、目标模块和函数地址
10.3
观察 API 拦截测试和安装卸载状态变化
记录原表项、新表项、恢复状态和调用结果
10.4
设计 IAT Hook 检测手法
检查 IAT 地址是否落在合法模块导出范围内
...
0228、Windows 逆向攻防:内存映射与 ShellCode 承载
返回:Windows 逆向攻防篇 · 网络安全学习主页
这一节对应 04.0 - 04.4,主题很敏感:ShellCode 和内存承载。这里不记录生成、部署、执行的可操作步骤,只整理它为什么需要位置无关、为什么依赖内存属性、以及防守侧能从哪些地方观察异常。
1、内容范围
小节
主题
04.0
ShellCode 构建
04.1
ShellCode 压缩
04.2
ShellCode 修正
04.3
ShellCode 通用执行方式思路
04.4
无申请附加执行方案的原理边界
1.1、逐节复盘
小节
主要内容
复盘点
04.0
从代码、数据、地址引用和入口点理解 ShellCode 结构
只记录结构和限制,不整理可复用载荷
04.1
理解压缩或裁剪二进制片段时可能破坏的内容
关注相对地址、字符串、导入解析和跳转边界
04.2
修正二进制片段中的地址、长度和边界问题
用反汇编和校验值确认数据没有错位
04.3
从实验框架角度认识本地执行、回调执行等触发方式
重点记录内存属性、调用栈和异常,不写执行手册
04.4
理解“不额外申请内 ...
0223、Windows 逆向攻防:前置、注入概念与控制台框架
返回:Windows 逆向攻防篇 · Windows 逆向总目录 · 网络安全学习主页
攻防篇第一部分先不急着做具体技术细节,而是把“为什么会有注入”“注入和 PE 加载有什么关系”“一个安全实验工具应该怎么组织输入、输出、校验和日志”这些基础问题整理清楚。
这篇笔记只用于个人复盘、授权实验和防护理解。凡是涉及跨进程执行、内存修改、ShellCode 或规避检测的内容,后续都只记录概念、痕迹和边界,不写成可直接照抄运行的流程。
01.0 Windows 逆向攻防篇前置要求(一)攻防篇默认前面两篇已经补过一遍。
前置内容
需要掌握到什么程度
C/C++ 基础
能读懂结构体、指针、函数指针、内存申请和文件读写
Windows API
知道进程、线程、模块、句柄、权限和错误码是基本对象
PE 结构
能理解 DOS 头、NT 头、节表、导入表、重定位和入口点
汇编基础
能看懂调用、跳转、栈帧、寄存器和常见 x64 调用约定
调试工具
能使用 VS、x64dbg、IDA 观察模块、线程、内存和调用栈
安全边界
只分析自写程序、课程样本和明确授权目标
...
0216、Windows 逆向提升:PE 前置与头结构
返回:Windows 逆向提升篇 · Windows 逆向总目录 · 网络安全学习主页
提升篇的第一块先不急着写复杂项目,而是把 PE 文件当成一个可以拆开的二进制对象来看:文件里每个字段在哪里,加载到内存后地址怎么变化,工具显示的偏移和代码里拿到的指针怎么对应。
这一部分的目标很明确:以后看到一个 .exe 或 .dll,至少能先找到 DOS 头、NT 头、文件头、可选头和节表,知道哪些字段是加载器真正关心的,哪些字段更偏兼容、标识或辅助信息。
01.0 逆向工程提升篇前置知识进入 PE 结构之前,需要先把几类基础知识接起来。
前置知识
需要能做到什么
C/C++ 结构体
能理解结构体字段顺序、大小、对齐和指针转换
指针和数组
能用“基址 + 偏移”定位二进制文件里的结构
十六进制
能习惯用 0x 表示偏移、地址、标志位和字段值
小端序
能看懂文件中低位字节在前的整数存储方式
汇编与调试
能用 VS、DBG 或 IDA 观察模块基址、入口点和内存窗口
文件读写
能把 PE 文件读入内存缓冲区,再按结构体解析
PE 解析最核心的动作其实 ...





