0106、安全开发篇(一):选择与循环
返回:安全开发篇(一)汇总 · 上一节:类型转换与运算符 · 安全开发总目录
这一篇开始整理程序的执行路径。
前面几章更多是在学习“数据怎么表示、表达式怎么算”,这一章要解决的是“程序应该走哪条路、什么时候重复执行、什么时候退出”。后面做输入校验、菜单程序、文件解析、网络数据处理和安全实验时,条件判断和循环边界会反复出现。
5.0 多行 IF 语句多行 if 用来表达“满足条件时执行一段代码”。
1234567891011121314#include <stdio.h>int main(void){ int score = 75; if (score >= 60) { printf("pass\n"); printf("score = %d\n", score); } return 0;}
推荐始终写花括号即使 if 里只有一行,也建议保留 {}。
1234if (score >= 60){ ...
0105、安全开发篇(一):类型转换与运算符
返回:安全开发篇(一)汇总 · 上一节:数据与运算 · 安全开发总目录
这一篇接着数据类型往下走,重点是“数据如何参与表达式计算”。
C 语言里的运算符看起来简单,但很多安全问题都藏在这些小地方:类型被自动转换、整数被截断、条件判断写错、&& 和 || 的短路顺序被误用、= 和 == 混淆、优先级靠猜。复盘这一章时,不需要追求花哨写法,先把表达式写清楚、算明白、调试看得到。
4.0 数据类型转换类型转换可以分成两类:隐式转换和显式转换。
类型
示例
说明
隐式转换
double x = 10;
编译器自动把 int 转成 double
显式转换
(double)a / b
程序员明确要求转换
赋值转换
char c = 300;
赋值时目标类型可能装不下
表达式转换
1 + 2.5
运算前操作数会被转换到合适类型
整数和浮点数转换123456789101112#include <stdio.h>int main(void){ int a = 5; int b = 2; printf("in ...
0203、Windows 零基础逆向教程(三):攻防篇
返回:Windows 逆向总目录 · 网络安全学习主页
攻防篇是 Windows 逆向里最容易“看起来很酷、实际很危险”的一部分。这里的整理原则很明确:只做合法授权环境下的原理学习、行为识别、调试复盘和防护理解,不把笔记写成未授权利用流程。
这部分内容可以当成“理解攻击技术如何留下痕迹”的路线。知道它们大致怎么发生,才能知道日志、内存、模块、线程、句柄、异常、Hook 和反调试检测应该看哪里。
1、学习定位
线索
目标
注入与加载
理解跨进程代码执行、模块加载和 PE 修复相关概念
ShellCode
理解位置无关代码、API 解析、字符串处理和二进制提取的风险点
进程伪装
理解进程映像、节对象、PEB、文件对象和检测视角
Hook
理解 IAT、Inline、VTable、VEH、硬件断点等 Hook 的原理和检测点
监控与检测
通过 ETW、WMI、调试事件和进程/线程信息观察行为
反调试
理解调试标志、断点、异常、对象查询等检测方向
本篇不记录可直接用于未授权入侵、持久化、绕过检测或隐蔽执行的操作步骤。后续所有小结都以授权实验、检测 ...
0202、Windows 零基础逆向教程(二):提升篇
返回:Windows 逆向总目录 · 网络安全学习主页
提升篇开始进入 PE 文件结构和 Windows 程序加载机制。入门篇更多是在补“怎么看汇编、怎么看寄存器、怎么看栈”;提升篇则要继续往文件格式、加载器、导入导出、异常、符号、TLS 和项目工具方向走。
这部分按小块整理,不把所有视频标题平铺在一页里。每篇笔记围绕一个能复盘的主题展开:先讲概念,再讲结构,再讲调试或代码验证。
1、学习定位
线索
目标
PE 结构
能看懂 DOS 头、NT 头、可选头、节表、数据目录和文件/内存映像差异
加载机制
能理解程序从文件到进程内存的大致过程,包括导入、重定位、节区保护和入口点
数据目录
能逐步复盘导出表、导入表、资源表、异常表、证书、调试信息和 TLS
工具能力
能写小型解析工具,用结构体和偏移验证 PE 字段
项目实践
能把解析能力迁移到 PE 修改器、调试器、扫描器等工具项目
逆向笔记只用于合法样本分析、课程复盘和防护理解。涉及模块加载、内存修改、ShellCode、注入等内容时,只整理原理、结构和安全边界,不整理未授权攻击流程。
2、章 ...
0201、Windows 零基础逆向教程(一):入门篇
返回:Windows 逆向总目录 · 网络安全学习主页
这一篇是 Windows 逆向的入门主线,内容很长,不能全部塞进一篇文章里。这里按“环境与数据 → 寄存器与标志位 → 内存与汇编框架 → 指令与堆栈 → 控制流逆向 → 数据结构逆向 → C++ 对象逆向 → MASM → x64 → 调试器项目”的节奏拆成章节页。
1、学习定位入门篇要建立三条线:
线索
目标
汇编线
能看懂常见指令、寄存器、标志位、堆栈和调用过程
逆向线
能把 C/C++ 代码和反汇编结构互相对应
调试线
能使用 DBG/IDA/Visual Studio 观察程序运行、断点、异常和模块信息
对我来说,这一篇不是为了“记住所有指令”,而是为了能在调试器里看懂程序正在做什么。
2、章节目录
编号
内容范围
主要内容
笔记
0204
01 环境、语言映射与数据表示
VS 配置、汇编执行框架、机器语言/汇编/高级语言关系、进制、存储宽度、数据截断、正负数和整数底层规则
0204
0205
02 寄存器、标志位与内存基础
通用 ...
0200、Windows 逆向:总目录
返回:网络安全学习主页
1、学习定位Windows 逆向这条线主要用于理解二进制程序如何运行、如何调试、如何解析 PE 结构,以及常见注入、ShellCode、反调试等技术背后的原理。学习目标是建立合法分析、调试和防护视角。
2、分篇目录
编号
分篇
主要内容
笔记入口
0201
Windows 零基础逆向教程(一):入门篇
进制、寄存器、EFLAGS、内存、汇编、堆栈、函数、控制流、数组、指针、对象模型、MASM、调试器开发
0201
0202
Windows 零基础逆向教程(二):提升篇
PE 结构、导入导出表、重定位、无模块加载、模块隐藏、资源、异常、TLS、PDB、PE 修改、CE 扫描器项目
0202
0203
Windows 零基础逆向教程(三):攻防篇
注入原理、远程线程、APC、早鸟注入、全局钩子、内存映射、系统调用、ShellCode、反调试
0203
3、复盘重点
方向
复盘重点
汇编基础
指令、寄存器、标志位、栈帧和调用约定
PE 解析
DOS 头、NT 头、节表、导入表、导出表、重定位和资源
调试能力
DBG、IDA、 ...
0104、安全开发篇(一):数据与运算
返回:安全开发篇(一)汇总 · 上一节:基础语法 · 安全开发总目录
这一篇开始真正看“数据”本身。
C 语言里的数据不是抽象概念,它最终都会落到内存里的二进制位上。整数有宽度,符号位会影响解释方式,浮点数不一定能精确表示小数,字符也不只是屏幕上看到的字母。后面学指针、内存、溢出、编码、逆向和漏洞时,这些内容会反复出现。
3.0 代码调试与窗口监控调试不是代码出错后才做的事情。学习 C 语言时,调试更像是一种观察方式:让程序暂停在某一行,看变量、内存、调用栈和输出窗口分别发生了什么。
常用调试动作
动作
作用
设置断点
让程序运行到指定位置暂停
单步跳过
执行当前行,不进入函数内部
单步进入
遇到函数调用时进入函数内部
单步跳出
从当前函数执行完并返回调用处
观察变量
看变量当前值是否符合预期
观察内存
直接看某个地址附近的字节内容
调用堆栈
看当前函数是从哪里被调用过来的
适合用来调试的最小程序123456789101112131415161718#include <stdio.h>int add(int left, int ri ...
0103、安全开发篇(一):基础语法
返回:安全开发篇(一)汇总 · 上一节:环境与框架 · 安全开发总目录
这一篇从 2.0 开始,主要整理 C 语言里最基础的一组表达方式:怎么命名、怎么定义变量、怎么表示常量、怎么输出、怎么接收输入。
这些内容看起来都很普通,但后面学指针、内存、结构体、文件读写和 Windows API 时,所有问题都会落回这些基础细节:类型是否匹配、缓冲区是否够用、格式化字符串是否正确、输入边界是否检查。
2.0 关键字以及命名规范C 语言里的关键字是语言已经占用的词,不能再拿来当变量名、函数名或自定义标识符。
类别
常见关键字
作用
类型相关
int、char、float、double、void
描述数据类型或函数返回值
控制流程
if、else、switch、case、for、while、do
控制程序执行顺序
跳转控制
break、continue、return、goto
改变当前执行流程
存储相关
auto、static、extern、register
描述变量的存储方式或链接属性
类型限定
const、volatile、signed、unsigned、sho ...
0102、安全开发篇(一):VS配置 和 基础框架
返回:安全开发篇(一)汇总 · 安全开发总目录 · 网络安全学习主页
这一节先把开发环境和最小程序框架跑通。后面学习变量、数组、指针、函数栈、PE 和逆向分析时,所有实验都会回到同一个问题:代码如何被写出来、编译出来、运行起来。
1.0 前言:课程体系与学习路线安全开发可以先按三层理解:
层次
内容
作用
语言基础
C 语言、C++ 基础、指针、结构体、函数、文件、内存
能写小程序,也能读懂后续示例代码
系统基础
Windows 程序、API、编译链接、调试、进程和内存
能理解程序如何在系统上运行
安全连接
逆向分析、漏洞成因、内存边界、注入和防护思路
把开发能力转成安全分析能力
本课程前期看起来很基础,但不要跳太快。后面的缓冲区、指针、函数栈、PE、ShellCode 和逆向分析,都会默认你已经理解“程序如何组织”和“代码如何运行”。
本章目标可以压缩成四句话:
能安装并打开 Visual Studio。
能创建 C/C++ 控制台项目。
能添加 .c 或 .cpp 源文件并写出最小程序。
能运行、调试,并观察最小程序的执行结果。
1.1 ...
0101、安全开发篇(一):C/C++ 基础入门
返回:安全开发总目录 · 网络安全学习主页
1、本篇定位这一篇先补 C/C++ 最基础的表达能力,重点是能写、能调、能理解变量和内存之间的关系。
2、章节目录
章节
主要内容
笔记
01 环境与框架
Visual Studio、控制台程序、入口点、函数调用
0102
02 基础语法
关键字、变量、常量、类型限定符、格式化输出
0103
03 数据与运算
整数、浮点数、字符、类型转换、运算符优先级
0104
04 类型转换与运算符
类型转换、算术运算、递增递减、赋值、比较、逻辑运算、优先级、三目和单行 if
0105
05 选择与循环
多行 if、多条件 if、嵌套 if、switch、while、do while、for、猜大小案例
0106
06 循环跳转与数组基础
嵌套循环、break、continue、goto、数组概念、数组内存布局、二维数组
0107
07 数组、字符串与结构体
多维数组、汇编寻址、数组越界、字符串处理、结构体数组、结构体嵌套与对齐
0108
08 指针与函数入门
内存存储单元、指针变量、空指针、野指针、指针 ...





