Skip to content

Repository files navigation

内容简介

一本面向于灰帽子及信息安全专业人员的安全编程系列丛书,书中着重讲解黑客编程技术,适合开发者或计算机专业人士阅读。读者需要具备一定的编程基础,并对信息安全领域有一定的了解和认识。本书的优势在于实战,每个章节都包含与信息安全编程相关的案例,通过这些案例可以快速掌握实战技能。同时,本书的知识体系具有系统性和简洁性,读者可以轻松掌握其中的知识点。此外,书中的的用例都可以直接应用于各种安全开发项目中,可以在实际工作中直接使用,具有较高的实用价值。

撰写初衷

本书创作全程不以盈利为目的,亦无商业出版计划,现已完成版权登记并正式公开发布。本书全部内容源自作者 2018 至 2023 年长期博客记录下的各类知识积累,内容以安全编程为核心方向。作者把平日学习产生的思考、亲手编写的各类代码片段加以系统性梳理、分类与整合,融汇汇总后编撰成这本实用性极强的专业图书,对于喜爱相关技术的爱好者而言,该书能够提供一套完整清晰的学习参考体系;

依托该书开展学习,能够快速踏入二进制安全相关领域,倘若能够充分钻研、吃透书中全部技术原理与实操细节,便可具备成长为一名专业优秀白帽子安全从业者的完整能力。谨以此书抛砖引玉,推动知识走向大众化普及。

书籍目录

第一章:环境配置篇

  • 第一部分:基础入门卷
    • 第一篇:Python语言体系 (26)
      • 第一章:标准输入与输出 (26)
        • 1.1 标准输入功能 (1.1.1)
        • 1.2 标准输出功能 (1.1.2)
        • 1.3 格式化的用法 (1.1.3)
      • 第二章:数据类型与结构 (29)
        • 2.1 算数类型 (2.1.1)
        • 2.2 字符类型 (2.1.2)
        • 2.3 列表类型 (2.1.3)
        • 2.4 字典类型 (2.1.4)
        • 2.5 元组类型 (2.1.5)
        • 2.6 集合类型 (2.1.6)
        • 2.7 序列类型 (2.1.7)
      • 第三章:迭代器与生成器 (66)
        • 3.1 使用迭代器 (3.1.1)
        • 3.2 使用生成器 (3.1.2)
        • 3.3 队列的使用 (3.1.3)
      • 第四章:变量与作用域 (73)
      • 第五章:定义并使用函数 (76)
        • 5.1 有参与无参函数 (5.1.1)
        • 5.2 函数参数传递 (5.1.2)
        • 5.3 通用函数返回值 (5.1.3)
        • 5.4 通用函数闭包 (5.1.4)
        • 5.5 函数嵌套与递归 (5.1.5)
        • 5.6 LAMBDA匿名函数 (5.1.6)
      • 第六章:函数装饰器 (86)
        • 6.1 无参装饰器 (6.1.1)
        • 6.2 有参装饰器 (6.1.2)
        • 6.3 带参装饰器 (6.1.3)
      • 第七章:面向对象编程 (91)
        • 7.1 面向对象之封装 (7.1.1)
        • 7.2 面向对象之继承 (7.1.2)
        • 7.3 面向对象之包装 (7.1.3)
        • 7.4 面向对象之反射 (7.1.4)
      • 第八章:进程与线程 (106)
        • 8.1 创建并使用线程 (8.1.1)
        • 8.2 创建并使用进程 (8.1.2)
        • 8.3 多进程数据共享 (8.1.3)
      • 第九章:内置模块应用 (119)
        • 9.1 系统操作模块 (9.1.1)
        • 9.2 文本处理模块 (9.1.2)
        • 9.3 加密解密模块 (9.1.3)
        • 9.4 取随机数模块 (9.1.4)
        • 9.5 日期时间模块 (9.1.5)
        • 9.6 持久存储模块 (9.1.6)
        • 9.7 INI解析模块 (9.1.7)
        • 9.8 XML处理模块 (9.1.8)
        • 9.9 Ctypes混编模块 (9.1.9)
    • 第二篇:C/C++语言体系 (156)
      • 第一章:使用数组与指针 (156)
      • 第二章:使用函数与指针 (174)
      • 第三章:使用字符与指针 (182)
      • 第四章:使用结构与指针 (194)
      • 第五章:使用文件与指针 (205)
      • 第六章:封装实现字操作 (222)
        • 6.1 封装字符串操作 (6.1.1)
        • 6.2 复制与剪切函数 (6.1.2)
        • 6.3 字符串比较函数 (6.1.3)
        • 6.4 字符串查找函数 (6.1.4)
      • 第七章:指针与数据结构 (266)
        • 7.1 实现动态数组 (7.1.1)
        • 7.2 实现动态链表 (7.1.2)
        • 7.3 实现顺序栈 (7.1.3)
        • 7.4 实现链表栈 (7.1.4)
        • 7.5 实现链表队列 (7.1.5)
      • 第八章:标准输入输出流 (286)
      • 第九章:引用与取别名 (293)
      • 第十章:定义并使用类 (297)
      • 第十一章:运算符重载 (309)
      • 第十二章:继承与多态 (318)
      • 第十三章:泛型化编程 (326)
    • 第三篇:C++ STL模板体系 (333)
      • 第一章:字符串操作容器 (334)
        • 1.1 字符串构造函数 (1.1.1)
        • 1.2 字符串对象赋值 (1.1.2)
        • 1.3 字符串遍历操作 (1.1.3)
        • 1.4 字符串添加与删除 (1.1.4)
        • 1.5 字符串查找与替换 (1.1.5)
        • 1.6 字符串首尾数据提取 (1.1.6)
        • 1.7 字符串与字符互转 (1.1.7)
        • 1.8 字符串大小写互转 (1.1.8)
      • 第二章:数组向量容器 (340)
        • 2.1 数组向量基础应用 (2.1.1)
        • 2.2 数组向量正/反向遍历 (2.1.2)
        • 2.3 数组向量正/反向排序 (2.1.3)
        • 2.4 向数组向量中插入元素 (2.1.4)
        • 2.5 向数组向量中插入结构指针 (2.1.5)
        • 2.6 向数组向量中插入类指针 (2.1.6)
        • 2.7 在数组容器中嵌套容器 (2.1.7)
        • 2.8 函数参数定义为容器类型 (2.1.8)
        • 2.9 数组向量元素的删除 (2.1.9)
      • 第三章:双向队列容器 (348)
        • 3.1 单向队列的基本操作 (3.1.1)
        • 3.2 双向队列的基本操作 (3.1.2)
        • 3.3 双向队列正/反向遍历 (3.1.3)
        • 3.4 双向队列插入/弹出元素 (3.1.4)
        • 3.5 函数参数传递双向队列 (3.1.5)
      • 第四章:动态链表容器 (352)
        • 4.1 双向链表遍历整数 (4.1.1)
        • 4.2 双向链表遍历结构体 (4.1.2)
        • 4.3 实现正反向遍历链表 (4.1.3)
        • 4.4 遍历链表中指定元素 (4.1.4)
        • 4.5 插入/删除链表元素 (4.1.5)
        • 4.6 整数链表正反向排序 (4.1.6)
        • 4.7 类链表正反向排序 (4.1.7)
        • 4.8 类链表成员的删除 (4.1.8)
      • 第五章:集合数据容器 (361)
        • 5.1 正反向遍历集合元素 (5.1.1)
        • 5.2 查找集合中指定元素 (5.1.2)
        • 5.3 设置默认集合排序方式 (5.1.3)
        • 5.4 向集合插入自定义类型 (5.1.4)
      • 第六章:序列映射容器 (365)
        • 6.1 通过对组实现键值对 (6.1.1)
        • 6.2 正反向遍历映射容器 (6.1.2)
        • 6.3 查找映射容器中的元素 (6.1.3)
        • 6.4 遍历映射容器中的结构 (6.1.4)
        • 6.5 通过映射容器实现分组 (6.1.5)
      • 第七章:非变易算法(查找算法) (370)
        • 7.1 for_each 遍历容器元素 (7.1.1)
        • 7.2 find 普通查找容器元素 (7.1.2)
        • 7.3 find 类查找容器元素 (7.1.3)
        • 7.4 find_if 条件查找容器元素 (7.1.4)
        • 7.5 find_if 条件查找类容器元素 (7.1.5)
        • 7.6 adjacent_find 邻近查找容器元素 (7.1.6)
        • 7.7 find_first_of 范围查找容器元素 (7.1.7)
        • 7.8 count 普通元素计数统计 (7.1.8)
        • 7.9 count_if 条件元素计数统计 (7.1.9)
        • 7.10 binary_search 数组查找算法 (7.1.10)
        • 7.11 mismatch 元素不匹配查找 (7.1.11)
        • 7.12 equal 元素相等的判断 (7.1.12)
        • 7.13 search 子序列搜索算法 (7.1.13)
        • 7.14 search_n 重复元素子序列搜索 (7.1.14)
        • 7.15 find_end 最后一个子序列搜索 (7.1.15)
      • 第八章:变易算法(复制与拷贝) (383)
        • 8.1 copy 元素复制算法 (8.1.1)
        • 8.2 swap 元素交换算法 (8.1.2)
        • 8.3 transform 元素搬运算法 (8.1.3)
        • 8.4 replace 元素替换算法 (8.1.4)
        • 8.5 fill 容器元素初始化算法 (8.1.5)
        • 8.6 remove_if 普通条件移除 (8.1.6)
        • 8.7 remove_copy 条件移除复制 (8.1.7)
        • 8.8 unique 容器元素去重算法 (8.1.8)
        • 8.9 reverse 元素反向拷贝算法 (8.1.9)
        • 8.10 rotate 容器旋转复制算法 (8.1.10)
        • 8.11 random 随机数相关算法 (8.1.11)
        • 8.12 partition 容器元素分割算法 (8.1.12)
      • 第九章:排序/算数/集合 (395)
        • 9.1 堆排序算法 (9.1.1)
        • 9.2 局部排序与复制 (9.1.2)
        • 9.3 快速排序算法 (9.1.3)
        • 9.4 稳定排序算法 (9.1.4)
        • 9.5 容器归并算法 (9.1.5)
        • 9.6 容器区间查找算法 (9.1.6)
        • 9.7 最大值/最小值算法 (9.1.7)
        • 9.8 交集/并集/差集算法 (9.1.8)
        • 9.9 求容器上/下排列组合 (9.1.9)
        • 9.10 容器元素求和算法 (9.1.10)
      • 第十章:模板适配/迭代器 (407)
        • 10.1 函数对象适配器 (10.1.1)
        • 10.2 函数指针适配器 (10.1.2)
        • 10.3 容器取反适配器 (10.1.3)
        • 10.4 文件流对象拷贝文件 (10.1.4)
        • 10.5 向前/后插入迭代器 (10.1.5)
        • 10.6 容器反向迭代器 (10.1.6)
      • 第十一章:STL综合应用 (413)
        • 11.1 字典拆分为列表 (11.1.1)
        • 11.2 列表合并为字典 (11.1.2)
        • 11.3 根据字典Key排序(降序) (11.1.3)
        • 11.4 根据字典key排序(长度) (11.1.4)
        • 11.5 根据字典Value排序 (11.1.5)
        • 11.6 根据字典Key返回Value (11.1.6)
        • 11.7 根据字典Value寻找Key (11.1.7)
        • 11.8 寻找列表中相同元素 (11.1.8)
        • 11.9 查找列表中的交集 (11.1.9)
        • 11.10 根据Key设置字典Value (11.1.10)
        • 11.11 实现列表容器计数 (11.1.11)
        • 11.12 验证两个列表异同点 (11.1.12)
        • 11.13 实现两个列表合并 (11.1.13)
        • 11.14 字典与列表的嵌套 (11.1.14)
        • 11.15 可存储多类型容器 (11.1.15)
        • 11.16 列表随机弹出元素 (11.1.16)
        • 11.17 实现队列参数计算 (11.1.17)
        • 11.18 查找最大值/最小值 (11.1.18)
        • 11.19 字典中嵌套结构体 (11.1.19)
    • 第四篇:Boost 准标准库体系 (440)
      • 第一章:字符串处理库 (442)
        • 1.1 字符串格式转换 (1.1.1)
        • 1.2 字符串格式输出 (1.1.2)
        • 1.3 字符串大小写转换 (1.1.3)
        • 1.4 字符串判断与测试 (1.1.4)
        • 1.5 字符串修正与裁剪 (1.1.5)
        • 1.6 字符串匹配开头结尾 (1.1.6)
        • 1.7 字符串替换与删除 (1.1.7)
        • 1.8 字符串切割与合并 (1.1.8)
        • 1.9 整数转字符串并合并 (1.1.9)
        • 1.10 字符串查找/分割迭代器 (1.1.10)
        • 1.11 正则分组匹配字符串 (1.1.11)
        • 1.12 正则查找替换 (1.1.12)
        • 1.13 正则迭代与分词 (1.1.13)
        • 1.14 正则切割与过滤 (1.1.14)
      • 第二章:内存池管理库 (459)
        • 2.1 使用Pool内存池 (2.1.1)
        • 2.2 使用ObjectPool内存池 (2.1.2)
        • 2.3 使用SharedPtr智能指针 (2.1.3)
        • 2.4 使用MakeShared工厂函数 (2.1.4)
        • 2.5 使用SharedPtr桥接模式 (2.1.5)
        • 2.6 使用SharedPtr工厂模式 (2.1.6)
        • 2.7 使用SharedPtr资源共享 (2.1.7)
        • 2.8 使用WeakPtr智能指针 (2.1.8)
        • 2.9 使用IntrusivePtr计数器 (2.1.9)
      • 第三章:日期时间操作库 (474)
        • 3.1 字符串与日期时间互转 (3.1.1)
        • 3.2 度量时间流失单位 (3.1.2)
        • 3.3 Ptime与Time_T互转 (3.1.3)
        • 3.4 日期的格式化输出 (3.1.4)
        • 3.5 日期的加减运算 (3.1.5)
        • 3.6 指定日期区间与变动区间 (3.1.6)
        • 3.7 日期区间范围判断 (3.1.7)
        • 3.8 使用日期迭代器 (3.1.8)
        • 3.9 时钟与时间点 (3.1.9)
        • 3.10 时间基本操作 (3.1.10)
        • 3.11 时间点加减法 (3.1.11)
        • 3.12 时间点格式化输出 (3.1.12)
        • 3.13 时间区间操作 (3.1.13)
        • 3.14 时间长度计算 (3.1.14)
      • 第四章:数据集序列化库 (489)
        • 4.1 针对文本的序列化 (4.1.1)
        • 4.2 针对数组的序列化 (4.1.2)
        • 4.3 针对结构体的序列化 (4.1.3)
        • 4.4 嵌套结构体的序列化 (4.1.4)
        • 4.5 针对类的序列化 (4.1.5)
        • 4.6 序列化文本到字符串 (4.1.6)
        • 4.7 序列化数组到字符串 (4.1.7)
        • 4.8 序列化结构体到字符串 (4.1.8)
        • 4.9 序列化嵌套结构到字符串 (4.1.9)
        • 4.10 序列化类到字符串 (4.1.10)
        • 4.11 序列化派生类到字符串 (4.1.11)
      • 第五章:文件目录操作库 (505)
        • 5.1 使用Path目录类 (5.1.1)
        • 5.2 路径拼接与追加操作 (5.1.2)
        • 5.3 针对文件属性操作 (5.1.3)
        • 5.4 文件流计算文件大小 (5.1.4)
        • 5.5 文件与目录增删改 (5.1.5)
        • 5.6 迭代输出单层目录 (5.1.6)
        • 5.7 正则迭代搜索文件 (5.1.7)
        • 5.8 递归遍历层级目录 (5.1.8)
        • 5.9 递归实现文件拷贝 (5.1.9)
        • 5.10 递归实现文件删除 (5.1.10)
        • 5.11 递归目录计算CRC32 (5.1.11)
        • 5.12 非递归输出目录属性 (5.1.12)
      • 第六章:函数绑定回调库 (525)
        • 6.1 reference_wrapper包装器 (6.1.1)
        • 6.2 Bind 函数绑定 (6.1.2)
        • 6.3 Function 函数绑定 (6.1.3)
        • 6.4 Signals 信号与槽 (6.1.4)
      • 第七章:多线程并发库 (541)
        • 7.1 Mutex互斥锁 (7.1.1)
        • 7.2 线程局部存储 (7.1.2)
        • 7.3 使用线程组 (7.1.3)
        • 7.4 获取线程返回值 (7.1.4)
        • 7.5 shared_mutex共享锁 (7.1.5)
        • 7.6 获取线程ID号 (7.1.6)
      • 第八章:应用JSON解析库 (555)
        • 8.1 解析单个节点 (8.1.1)
        • 8.2 解析单个列表 (8.1.2)
        • 8.3 解析嵌套列表 (8.1.3)
        • 8.4 解析多层字典 (8.1.4)
        • 8.5 写出JSON文件 (8.1.5)
        • 8.6 自定义的结构解析 (8.1.6)
      • 第九章:命令行解析库 (564)
        • 9.1 在字符串上解析 (9.1.1)
        • 9.2 自己实现的参数解析 (9.1.2)
        • 9.3 交互式参数解析器 (9.1.3)
        • 9.4 非交互参数解析 (9.1.4)
    • 第五篇:Intel 汇编语言体系 (572)
      • 第一章:汇编语言基础 (572)
        • 1.1 RadASM (1.1.1)
        • 1.2 汇编中的变量 (1.1.2)
        • 1.3 标准输入与输出 (1.1.3)
      • 第二章:标志位测试指令 (577)
        • 2.1 PSR (2.1.1)
        • 2.2 TEST (2.1.2)
        • 2.3 CMP (2.1.3)
        • 2.4 JX/JNX/JSX/JPX (2.1.4)
        • 2.5 BT/BTR/BSF/BSR (2.1.5)
      • 第三章:字符串操作指令 (586)
        • 3.1 MOVSB/MOVSW/MOVSD (3.1.1)
        • 3.2 CMPSB/CMPSW/CMPSD (3.1.2)
        • 3.3 SCASB/SCASW/SCASD (3.1.3)
        • 3.4 STOSB/STOSW/STOSD (3.1.4)
        • 3.5 LODSB/LODSW/LODSD (3.1.5)
      • 第四章:算数运算指令集 (595)
        • 4.1 MOV/INC/DEC/XCHG (4.1.1)
        • 4.2 ADD/SUB (4.1.2)
        • 4.3 NEG/NOT (4.1.3)
        • 4.4 AND/OR/XOR (4.1.4)
        • 4.5 SHL/SHR (4.1.5)
        • 4.6 SAL/SAR (4.1.6)
        • 4.7 ROL/ROR (4.1.7)
        • 4.8 RCL/RCR (4.1.8)
        • 4.9 MUL/IMUL (4.1.9)
        • 4.10 DIV/IDIV (4.1.10)
        • 4.11 ADC/SBB (4.1.11)
      • 第五章:汇编函数调用约定 (625)
        • 5.1 CDECL (5.1.1)
        • 5.2 STDCALL (5.1.2)
        • 5.3 FASTCALL (5.1.3)
        • 5.4 使用ESP寄存器寻址 (5.1.4)
        • 5.5 使用数组指针传值 (5.1.5)
        • 5.6 指向函数的指针 (5.1.6)
      • 第六章:汇编高效数组寻址 (636)
        • 6.1 数组取值操作 (6.1.1)
        • 6.2 数组直接寻址 (6.1.2)
        • 6.3 数组间接寻址 (6.1.3)
        • 6.4 比例因子寻址 (6.1.4)
        • 6.5 数组指针寻址 (6.1.5)
        • 6.6 模拟二维数组寻址 (6.1.6)
        • 6.7 模拟三维数组寻址 (6.1.7)
      • 第七章:汇编高效乘法运算 (649)
        • 7.1 使用IMUL指令完成乘法 (7.1.1)
        • 7.2 使用LEA指令替换乘法 (7.1.2)
        • 7.3 使用LEA指令拆分计算 (7.1.3)
        • 7.4 使用LEA指令递减计算 (7.1.4)
        • 7.5 使用SHL计算无符号乘法 (7.1.5)
        • 7.6 使用SAL计算有符号乘法 (7.1.6)
      • 第八章:汇编高效除法运算 (654)
        • 8.1 使用IDIV指令完成除法 (8.1.1)
        • 8.2 除数为正2的次幂(无符号) (8.1.2)
        • 8.3 除数为负2的次幂(有符号) (8.1.3)
        • 8.4 被除数为负数(有符号) (8.1.4)
        • 8.5 除数与被除数均为负数(有符号) (8.1.5)
        • 8.6 除数为正非2次幂(有符号) (8.1.6)
        • 8.7 除数为正非2次幂(无符号) (8.1.7)
        • 8.8 除数为负非2次幂(无符号) (8.1.8)
      • 第九章:浮点数操作指令 (664)
        • 9.1 FLD/FSTP (9.1.1)
        • 9.2 FCHS/FABS (9.1.2)
        • 9.3 FADD/FADDP/FIADD (9.1.3)
        • 9.4 FSUB/FSUBP/FISUB (9.1.4)
        • 9.5 FMUL/FMULP/FIMUL (9.1.5)
        • 9.6 FDIV/FDIVP/FIDIV (9.1.6)
        • 9.7 FCOM/FCOMP/FCOMPP (9.1.7)
      • 第十章:汇编过程与结构 (678)
        • 10.1 PUSH/POP (10.1.1)
        • 10.2 PROC/ENDP (10.1.2)
        • 10.3 局部参数传递 (10.1.3)
        • 10.4 USES/ENTER (10.1.4)
        • 10.5 STRUCT/UNION (10.1.5)
      • 第十一章:仿写控制流程 (697)
        • 11.1 IF中的AND语句构造 (11.1.1)
        • 11.2 IF中OR语句的构造 (11.1.2)
        • 11.3 IF中AND/OR混合构造 (11.1.3)
        • 11.4 IF语句中的条件测试 (11.1.4)
        • 11.5 IF语句的双重嵌套 (11.1.5)
        • 11.6 IF语句的三层嵌套 (11.1.6)
        • 11.7 IF语句的多选择分支 (11.1.7)
        • 11.8 IF中的自增自减处理 (11.1.8)
        • 11.9 IF中的三目运算符 (11.1.9)
        • 11.10 IF中的嵌套移位 (11.1.10)
        • 11.11 IF中的运算符混合 (11.1.11)
        • 11.12 Do-While 循环结构优化 (11.1.12)
        • 11.13 While 循环结构优化 (11.1.13)
        • 11.14 FOR 循环结构优化 (11.1.14)
        • 11.15 Loop 循环结构优化 (11.1.15)
        • 11.16 仿写Do-While循环体 (11.1.16)
        • 11.17 仿写While循环体 (11.1.17)
        • 11.18 仿写While三层嵌套循环体 (11.1.18)
        • 11.19 仿写While实现二分法 (11.1.19)
        • 11.20 仿写For水仙花数 (11.1.20)
        • 11.21 For循环尝试判断 (11.1.21)
        • 11.22 For循环多重IF判断 (11.1.22)
        • 11.23 For嵌套乘法口诀表 (11.1.23)
        • 11.24 For语句冒泡排序 (11.1.24)
        • 11.25 Switch 仿写有序线性优化 (11.1.25)
        • 11.26 Switch 仿写非线性索引优化 (11.1.26)
        • 11.27 Switch 仿写平衡判定树优化 (11.1.27)
  • 第二部分:安全编程卷
    • 第一篇:ShellCode编写与应用技术 (756)
      • 1.1 Metasploit 工具简介 (756)
      • 1.2 Metasploit 生成并使用后门 (757)
        • 1.2.1 通用控制命令 (1.2.1)
        • 1.2.2 Migrate进程迁移 (1.2.2)
        • 1.2.3 文件查阅与传输 (1.2.3)
        • 1.2.4 端口转发与扫描 (1.2.4)
        • 1.2.5 信息采集功能 (1.2.5)
        • 1.2.6 目标主机权限提升 (1.2.6)
        • 1.2.7 添加用户与开启远程 (1.2.7)
        • 1.2.8 注册表写入后门 (1.2.8)
      • 1.3 Metasploit 生成SSL加密载荷 (767)
        • 1.3.1 通过MSF模块克隆证书 (1.3.1)
        • 1.3.2 通过OpenSSL制作证书 (1.3.2)
      • 1.4 编写简易ShellCode弹窗 (777)
        • 1.4.1 寻找DLL库函数地址 (1.4.1)
        • 1.4.2 探讨STDCALL调用约定 (1.4.2)
        • 1.4.3 ShellCode提取与应用 (1.4.3)
      • 1.5 编写自定位ShellCode弹窗 (780)
        • 1.5.1 动态查找Kernel32基址 (1.5.1)
        • 1.5.2 动态查找并枚举进程模块 (1.5.2)
        • 1.5.3 计算函数Hash摘要值 (1.5.3)
        • 1.5.4 枚举Kernel32导出表 (1.5.4)
        • 1.5.5 整合自定位ShellCode (1.5.5)
      • 1.6 编写双管道ShellCode后门 (803)
        • 1.6.1 什么是匿名管道 (1.6.1)
        • 1.6.2 C语言实现双管道后门 (1.6.2)
        • 1.6.3 汇编实现并提取ShellCode (1.6.3)
      • 1.7 完善自定位ShellCode后门 (820)
        • 1.7.1 通过PEB定位GetProcAddress (1.7.1)
        • 1.7.2 汇编实现动态定位功能 (1.7.2)
        • 1.7.3 运用SEH链获得Kernel32基址 (1.7.3)
      • 1.8 运用C编写ShellCode代码 (831)
      • 1.9 动态解密ShellCode反弹 (841)
      • 1.10 内存ShellCode格式化与注入 (847)
        • 1.10.1 针对内存的ShellCode注入 (1.10.1)
        • 1.10.2 实现格式化与代码执行盒 (1.10.2)
      • 1.11 动态加载ShellCode绕过杀软 (853)
        • 1.11.1 探索Socket服务端 (1.11.1)
        • 1.11.2 探索Socket客户端 (1.11.2)
      • 1.12 进程注入ShellCode套接字 (862)
        • 1.12.1 读入Kernel32模块基址 (1.12.1)
        • 1.12.2 进程注入MsgBox弹窗 (1.12.2)
        • 1.12.3 进程注入MyShell正向后门 (1.12.3)
      • 1.13 导出表劫持ShellCode加载 (874)
        • 1.13.1 动态链接库加载顺序 (1.13.1)
        • 1.13.2 实现DLL劫持代码生成 (1.13.2)
        • 1.13.3 实现劫持ShellCode注入 (1.13.3)
      • 1.14 手工插入ShellCode反弹后门 (886)
        • 1.14.1 VA地址与FOA地址互转 (1.14.1)
        • 1.14.2 新建节区并插入后门 (1.14.2)
        • 1.14.3 新建节并插入DLL (1.14.3)
      • 1.15 自实现GetProcAddress (896)
    • 第二篇:PE文件结构操控技术 (905)
      • 2.1 PE结构映射进内存 (906)
      • 2.2 DOS文件头详细解析 (910)
      • 2.3 PE文件头详细解析 (914)
        • 2.3.1 IMAGE_FILE_HEADER (2.3.1)
        • 2.3.2 IMAGE_OPTINAL_HEADER (2.3.2)
      • 2.4 节表详细解析 (921)
      • 2.5 导入表详细解析 (924)
        • 2.5.1 导入表原理分析 (2.5.1)
        • 2.5.2 IMAGE_IMPORT_DESCRIPTOR (2.5.2)
        • 2.5.3 枚举导入表流程 (2.5.3)
      • 2.6 导出表详细解析 (931)
      • 2.7 重定位表详细解析 (934)
      • 2.8 资源表详细解析 (939)
      • 2.9 重建导入表 (942)
      • 2.10 重建重定位表 (950)
      • 2.11 添加新的节区 (955)
      • 2.12 实现字节注入 (959)
      • 2.13 实现代码段加密 (966)
      • 2.14 地址之间的转换 (969)
    • 第三篇:动态链接库注入技术 (977)
      • 3.1 常规远程线程注入 (977)
      • 3.2 远程APC异步注入 (980)
      • 3.3 突破会话0强力注入 (983)
      • 3.4 全局消息钩子注入 (988)
    • 第四篇:应用层Hook挂钩技术 (991)
      • 4.1 钩子技术原理 (992)
      • 4.2 x32 Inline Hook (995)
      • 4.3 x64 Inline Hook (999)
      • 4.4 IAT Hook (1005)
      • 4.5 EAT Hook (1015)
      • 4.6 MinHook (1018)
    • 第五篇:内存与磁盘CRC校验技术 (1023)
      • 5.1 内存CRC完整性检测 (1026)
      • 5.2 磁盘CRC完整性检测 (1029)
    • 第六篇:内存特征定位与补丁技术 (1033)
      • 6.1 KMP算法搜索机器码 (1033)
        • 6.1.1 遍历输出进程内存 (6.1.1)
        • 6.1.2 使用KMP搜索特征码 (6.1.2)
      • 6.2 Sunday搜索内存特征 (1036)
        • 6.2.1 字符串与特征码转换 (6.2.1)
        • 6.2.2 搜索内存区域特征 (6.2.2)
        • 6.2.3 搜索整块内存区域 (6.2.3)
        • 6.2.4 应用动态内存补丁 (6.2.4)
    • 第七篇:应用进程线程操控技术 (1051)
      • 7.1 内存块枚举 (1051)
      • 7.2 创建新进程 (1061)
      • 7.3 枚举进程相关 (1065)
      • 7.4 枚举进程权限 (1067)
      • 7.5 判断进程状态 (1070)
      • 7.6 挂起/恢复进程 (1073)
      • 7.7 进程内存读写 (1084)
    • 第八篇:进程反调试应用技术 (1098)
      • 8.1 TEB/PEB (1098)
      • 8.2 BeingDebugged (1102)
      • 8.3 NtGlobalFlag (1106)
      • 8.4 ProcessHeap (1108)
      • 8.5 DebuggerPresent (1111)
      • 8.6 STARTUPINFO (1112)
      • 8.7 父进程检测反调试 (1113)
      • 8.8 异常处理机制反调试 (1114)
      • 8.9 RDTSC时钟检测反调试 (1115)
      • 8.10 TLS线程局部存储反调试 (1116)
    • 第九篇:多线程与线程同步技术 (1118)
      • 9.1 运用API创建多线程 (1118)
        • 9.1.1 CreateThread (9.1.1)
        • 9.1.2 BeginThreadex (9.1.2)
      • 9.2 运用API实现线程同步 (1123)
        • 9.2.1 CreateEvent (9.2.1)
        • 9.2.2 CreateSemaphore (9.2.2)
        • 9.2.3 CreateMutex (9.2.3)
        • 9.2.4 ThreadParameters (9.2.4)
        • 9.2.5 ThreadPool (9.2.5)
    • 第十篇:调试事件与反汇编技术 (1145)
      • 10.1 调试事件获取寄存器 (1147)
      • 10.2 调试事件获取DLL装载 (1150)
      • 10.3 调试事件转存进程内存 (1152)
      • 10.4 认识Capstone反汇编引擎 (1156)
      • 10.5 认识XEDParse汇编引擎 (1163)
      • 10.6 开发反汇编调试器 (1165)
        • 10.6.1 寄存器系列函数 (10.6.1)
        • 10.6.2 软件断点函数 (10.6.2)
        • 10.6.3 内存断点函数 (10.6.3)
        • 10.6.4 硬件断点函数 (10.6.4)
        • 10.6.5 反汇编功能函数 (10.6.5)
        • 10.6.6 单步步过/步进函数 (10.6.6)
    • 第十一篇:文件与磁盘操作技术 (1117)
      • 11.1 DelteFile (1117)
      • 11.2 CopyFile (1178)
      • 11.3 MoveFile (1179)
      • 11.4 ReadFile (1181)
      • 11.5 FindNextFile (1184)
      • 11.6 切割文件名与路径 (1185)
      • 11.7 遍历目录下文件 (1187)
      • 11.8 重置文件时间戳 (1189)
      • 11.9 遍历磁盘容量 (1190)
      • 11.10 遍历盘符并存储 (1194)
      • 11.11 实现磁盘格式化 (1195)
      • 11.12 移除指定磁盘 (1195)
      • 11.13 输出磁盘分区表 (1198)
      • 11.14 遍历文件特定路径 (1201)
      • 11.15 监控目录文件变化 (1204)
    • 第十二篇:键盘鼠标模拟技术 (1204)
      • 12.1 键盘鼠标监控钩子 (1204)
      • 12.2 实现键盘鼠标模拟 (1211)
    • 第十三篇:应用DirectX窗体绘制技术 (1227)
      • 13.1引用DirectX9引擎 (1227)
        • 13.1.1 初始化变量 (13.1.1)
        • 13.1.2 LPDIRECT3D9 (13.1.2)
        • 13.1.3 LPDIRECT3DDEVICE9 (13.1.3)
        • 13.1.4 LPDIRECT3DVERTEXBUFFER9 (13.1.4)
        • 13.1.5初始化绘图引擎 (13.1.5)
      • 13.2外部DirectX绘制实现 (1236)
        • 13.2.1 必要参数定义 (13.2.1)
        • 13.2.2 初始化绘图引擎 (13.2.2)
        • 13.2.3 初始化并创建消息循环 (13.2.3)
        • 13.2.4 封装实现绘图函数 (13.2.4)
        • 13.2.5 实现屏幕绘制功能 (13.2.5)
      • 13.3运用LyDrawLib库绘制 (1243)
        • 13.3.1 绘制实心矩形 (13.3.1)
        • 13.3.2 绘制空心矩形 (13.3.2)
        • 13.3.3 绘制进度条 (13.3.3)
        • 13.3.4 绘制圆形及准星 (13.3.4)
        • 13.3.5 绘制文本字符串 (13.3.5)
        • 13.3.6 绘制功能菜单 (13.3.6)
      • 13.4 DirectX内部劫持绘制 (1253)
        • 13.4.1 封装Hook劫持功能 (13.4.1)
        • 13.4.2 自定义MyEndScene函数 (13.4.2)
        • 13.4.3 初始化与绘制图形 (13.4.3)
    • 第十四篇:网络套接字编程入门 (1260)
      • 14.1 Socket 简单通信流程 (1260)
      • 14.2 Socket 反向远程命令行 (1265)
      • 14.3 Socket 字符串分块传输 (1268)
      • 14.4 Socket 双向数据通信 (1272)
      • 14.5 Socket 应用组播通信 (1276)
      • 14.6 Socket 应用结构体传输 (1279)
      • 14.7 Socket 循环结构体传输 (1283)
      • 14.8 Socket 一收一发通信 (1287)
      • 14.9 Socket 高效文件传输 (1292)
      • 14.10 Socket 选择套接字通信 (1298)
      • 14.11 Socket 基于时间加密通信 (1304)
    • 第十五篇:主机路由追踪技术 (1311)
      • 15.1 通过域名取IP地址 (1312)
      • 15.2 主机探测与路由追踪 (1313)
    • 第十六篇:端口探测扫描技术 (1321)
      • 16.1 实现Socket端口探测 (1322)
      • 16.2 实现ARP主机探测 (1328)
    • 第十七篇:重叠后门反弹技术 (1332)
      • 17.1 隐藏执行CMD (1333)
      • 17.2 无管道正向CMD (1336)
      • 17.3 无管道反向CMD (1338)
    • 第十八篇:操控网络数据包技术 (1340)
      • 18.1 原生套接字抓包 (1340)
      • 18.2 使用NPCAP抓包 (1351)
      • 18.3 构建实现ARP欺骗 (1372)
    • 第十九篇:基于ASIO网络编程技术 (1380)
      • 19.1 同步TCP通信 (1381)
      • 19.2 同步UDP通信 (1384)
      • 19.3 同步多线程通信 (1386)
      • 19.4 同步远程命令执行 (1388)
      • 19.5 同步传输结构体 (1390)
      • 19.6 同步Base64文本传输 (1392)
      • 19.7 同步传输序列化数据 (1395)
      • 19.8 同步异或加密传输 (1398)
      • 19.9 同步实现字典传输 (1401)
      • 19.10 同步实现文件传输 (1403)
      • 19.11 同步获取远程目录 (1409)
      • 19.12 同步获取远程进程 (1413)
      • 19.13 同步发送TCP流数据 (1416)
    • 第二十篇:OpenSSL加密传输技术 (1420)
      • 20.1 字符BASE64压缩算法 (1421)
      • 20.2 非对称RSA加解密算法 (1423)
      • 20.3 对称AES加解密算法 (1430)
      • 20.4 套接字AES加密传输 (1433)
      • 20.5 套接字RSA加密传输 (1437)
      • 20.6 套接字分发RSA公钥 (1448)
      • 20.7 套接字SSL加密传输 (1456)
      • 20.8 套接字SSL传输文件 (1463)
    • 第二十一篇:Python安全编程技术 (1469)
      • 21.1 使用PEfile分析PE文件 (1470)
        • 21.1.1 打开并加载PE文件 (21.1.1)
        • 21.1.2 解析PE头部数据 (21.1.2)
        • 21.1.3 解析节表数据 (21.1.3)
        • 21.1.4 节区RVA与FOA互转 (21.1.4)
        • 21.1.5 解析数据为Hex格式 (21.1.5)
        • 21.1.6 解析数据目录表 (21.1.6)
        • 21.1.7 解析导入导出表 (21.1.7)
      • 21.2 使用Scapy实现端口探测 (1480)
        • 21.2.1 端口扫描基础 (21.2.1)
        • 21.2.2 ICMP构建与发送 (21.2.2)
        • 21.2.3 TCP全连接扫描 (21.2.3)
        • 21.2.4 SYN半开放扫描 (21.2.4)
        • 21.2.5 UDP无状态扫描 (21.2.5)
      • 21.3 使用DPKT分析数据包 (1492)
        • 21.3.1 抓取PCAP数据包 (21.3.1)
        • 21.3.2 使用Google地图定位 (21.3.2)
      • 21.4 使用Scapy实现网络攻击 (1501)
        • 21.4.1 SynFlood攻击 (21.4.1)
        • 21.4.2 SockStress攻击 (21.4.2)
        • 21.4.3 DNS查询攻击 (21.4.3)
        • 21.4.4 ARP中间人攻击 (21.4.4)
      • 21.5 使用HTTP解析库 (1514)
        • 21.5.1 Request (21.5.1)
        • 21.5.2 BeautifulSoup (21.5.2)
        • 21.5.3 Selenium (21.5.3)
      • 21.6 运用CRC32校验技术 (1535)
        • 21.6.1 使用CRC校验技术 (21.6.1)
        • 21.6.2 使用CRC图片去重 (21.6.2)
      • 21.7 网络编程中的应用 (1544)
        • 21.7.1 实现网站服务器 (21.7.1)
        • 21.7.2 实现端口流量转发 (21.7.2)
        • 21.7.3 实现Web指纹识别 (21.7.3)
  • 第三部分:软件安全卷
    • 第一篇:熟悉x64dbg调试器 (1552)
      • 1.1 如何启动调试器 (1553)
      • 1.2 熟悉x64dbg窗口 (1554)
      • 1.3 熟悉x64dbg断点 (1559)
      • 1.4 熟悉x64dbg代码跟踪 (1562)
      • 1.5 为x64dbg编写插件 (1563)
    • 第二篇:熟悉CheatEngine修改器 (1570)
      • 2.1 精确数值扫描 (1573)
      • 2.2 未知数值扫描 (1576)
      • 2.3 浮点数扫描 (1579)
      • 2.4 代码替换功能 (1580)
      • 2.5 寻找数值指针 (1584)
      • 2.6 代码注入功能 (1589)
      • 2.7 多级指针查找 (1594)
      • 2.8 寻找共享代码 (1601)
    • 第三篇:熟悉IDAPro静态反汇编器 (1605)
      • 3.1 IDA编写IDC脚本 (1608)
      • 3.2 IDC中常用函数 (1618)
    • 第四篇:探索LyScript漏洞挖掘插件 (1623)
      • 4.1 如何使用插件 (1625)
        • 4.1.1读取或设置寄存器参数 (4.1.1)
        • 4.1.2使用调试控制系列函数 (4.1.2)
        • 4.1.3使用断点设置系列函数 (4.1.3)
        • 4.1.4使用堆栈系列函数 (4.1.4)
        • 4.1.5使用反汇编系列函数 (4.1.5)
        • 4.1.6使用内存读写系列函数 (4.1.6)
      • 4.2 针对PE文件的扫描 (1633)
        • 4.2.1获取PE结构内存节表 (4.2.1)
        • 4.2.2计算节表内存Hash散列值 (4.2.2)
        • 4.2.3验证PE启用的保护模式 (4.2.3)
        • 4.2.4 PE结构的FOA/VA/RAV转换 (4.2.4)
        • 4.2.5PE结构检索SafeSEH内存地址 (4.2.5)
      • 4.3 搜索内存可利用指令 (1644)
        • 4.3.1搜索可利用汇编指令集 (4.3.1)
        • 4.3.2搜索可利用机器码 (4.3.2)
      • 4.4 绕过反调试保护机制 (1647)
      • 4.5 探索钩子劫持技术 (1650)
        • 4.5.1探索反汇编写出函数原理 (4.5.1)
        • 4.5.2实现Hook改写MsgBox弹窗 (4.5.2)
      • 4.6 内存扫描与查壳实现 (1657)
      • 4.7 应用层的钩子扫描 (1661)
      • 4.8 学会扫描应用堆栈 (1666)
      • 4.9 内存处理与差异对比 (1670)
        • 4.9.1实现ShellCode的灵活注入 (4.9.1)
        • 4.9.2内存区域交换与对比 (4.9.2)
        • 4.9.3内存与磁盘机器码对比 (4.9.3)
      • 4.10 反汇编功能的封装 (1676)
        • 4.10.1搜索内存机器码特征 (4.10.1)
        • 4.10.2搜索内存反汇编特征 (4.10.2)
        • 4.10.3获取上下一条汇编指令 (4.10.3)
    • 第五篇:远程栈溢出分析与利用 (1683)
      • 5.1 缓冲区溢出与攻防博弈 (1683)
        • 5.1.1 GS堆栈缓冲区溢出检测保护 (5.1.1)
        • 5.1.2 SafeSEH安全结构化异常处理保护 (5.1.2)
        • 5.1.3 SEHOP堆栈SEH覆盖保护 (5.1.3)
        • 5.1.4 ASLR地址布局随机化保护 (5.1.4)
        • 5.1.5 DEP堆栈数据执行保护 (5.1.5)
      • 5.2 基于ROP漏洞挖掘与利用 (1687)
        • 5.2.1溢出是如何产生的 (5.2.1)
        • 5.2.2漏洞分析与挖掘 (5.2.2)
        • 5.2.3寻找JMP跳板指令 (5.2.3)
        • 5.2.4组合脚本并攻击 (5.2.4)
        • 5.2.5 ROP绕过DEP保护 (5.2.5)
    • 第六篇:逆向分析植物大战僵尸 (1710)
      • 6.1 增加自己的阳光 (1710)
      • 6.2 实现自动收集阳光 (1716)
      • 6.3 寻找葵花生产速度 (1721)
      • 6.4 寻找阳光掉落CALL (1731)
      • 6.5 寻找任意种植CALL (1740)
      • 6.6 寻找全屏攻击CALL (1748)
      • 6.7 寻找召唤僵尸CALL (1754)
      • 6.8 分析植物无冷却 (1761)
      • 6.9 分析植物攻击速度 (1771)
    • 第七篇:逆向分析反恐精英起源 (1776)
      • 7.1 运用Hook实现上色透视 (1776)
        • 7.1.1寻找DrawIndexedPrimitive基址 (7.1.1)
        • 7.1.2劫持DrawIndexedPrimitive函数 (7.1.2)
        • 7.1.3寻找模型ID与透视 (7.1.3)
      • 7.2 寻找游戏基址数据 (1799)
        • 7.2.1 寻找无限金币基址 (7.2.1)
        • 7.2.2 寻找FOV视场角基址 (7.2.2)
        • 7.2.3 寻找本人鼠标角度基址 (7.2.3)
        • 7.2.4 寻找本人坐标数据基址 (7.2.4)
        • 7.2.5 寻找敌人坐标数据基址 (7.2.5)
        • 7.2.6 寻找敌人血量基址 (7.2.6)
        • 7.2.7 寻找玩家数量基址 (7.2.7)
        • 7.2.8 寻找当前阵营基址 (7.2.8)
      • 7.3 三角函数算法透视 (1827)
        • 7.3.1 第一象限求角 (7.3.1)
        • 7.3.2 第二象限求角 (7.3.2)
        • 7.3.3 第三四象限求角 (7.3.3)
        • 7.3.4 分析FOV视场角度 (7.3.4)
        • 7.3.5 三维横坐标转屏幕X坐标 (7.3.5)
        • 7.3.6 三维纵坐标转屏幕Y坐标 (7.3.6)
      • 7.4 矩阵透视算法分析 (1835)
        • 7.4.1 寻找世界矩阵 (7.4.1)
        • 7.4.2 实现矩阵透视 (7.4.2)
  • 第四部分:内核安全卷
    • 第一篇:驱动开发环境配置 (1844)
      • 1.1 配置驱动开发环境 (1844)
      • 1.2 配置驱动开发模板 (1849)
      • 1.3 配置驱动双机调试 (1855)
      • 1.4 测试模式过DSE签名 (1862)
    • 第二篇:驱动开发基础知识 (1864)
      • 2.1 内核链表与结构体 (1864)
      • 2.2 内核自旋锁结构 (1868)
      • 2.3 内核字符串转换方法 (1874)
        • 2.3.1 初始化字符串 (2.3.1)
        • 2.3.2 字符串与整数转换 (2.3.2)
        • 2.3.3 字符串ANSI与UNICODE (2.3.3)
        • 2.3.4 字符串连接操作 (2.3.4)
      • 2.4 内核字符串拷贝与比较 (1886)
        • 2.4.1 内核中的空间分配 (2.4.1)
        • 2.4.2 内核中的字符串拷贝 (2.4.2)
        • 2.4.3 内核中的字符串比较 (2.4.3)
      • 2.5 探索DRIVER_OBJECT结构 (1893)
      • 2.6 内核使用IO/DPC定时器 (1899)
    • 第三篇:内核驱动读写技术 (1906)
      • 3.1 内核远程堆分配与销毁 (1906)
      • 3.2 内核CR3切换读写内存 (1912)
      • 3.3 内核MDL读写进程内存 (1919)
        • 3.3.1 MDL读取内存步骤 (3.3.1)
        • 3.3.2 MDL写入内存步骤 (3.3.2)
      • 3.4 通过内存拷贝读写内存 (1926)
      • 3.5 内核R3与R0内存映射 (1930)
        • 3.5.1应用层映射到内核层 (3.5.1)
        • 3.5.2内核层映射到应用层 (3.5.2)
      • 3.6 内核进程汇编与反汇编 (1940)
        • 3.6.1内存反汇编的应用 (3.6.1)
        • 3.6.2内存汇编的应用 (3.6.2)
      • 3.7 内核解析内存四级页表 (1953)
      • 3.8 内核读写内存浮点数 (1958)
      • 3.9 内核读写内存多级偏移 (1965)
      • 3.10 内核物理内存寻址读写 (1973)
        • 3.10.1物理页转换算法分析 (3.10.1)
        • 3.10.2.实现物理页读内存 (3.10.2)
        • 3.10.3实现物理页写内存 (3.10.3)
    • 第四篇:内核进程线程操作 (1982)
      • 4.1 内核中进程与句柄互转 (1983)
        • 4.1.1进程PID与进程HANDLE转换 (4.1.1)
        • 4.1.2进程PID转换为EProcess结构 (4.1.2)
        • 4.1.3进程HANDLE与EPROCESS转换 (4.1.3)
      • 4.2 内核中枚举进线程与模块 (1990)
        • 4.2.1内核中实现枚举进程 (4.2.1)
        • 4.2.2内核中实现枚举线程 (4.2.2)
        • 4.2.3内核中实现枚举进程模块 (4.2.3)
        • 4.2.4内核中实现枚举加载的驱动 (4.2.4)
        • 4.2.5内核中实现获取特定进程PID (4.2.5)
        • 4.2.6内核中实现判断进程状态 (4.2.6)
      • 4.3 监控进程与线程对象操作 (2010)
        • 4.3.1实现监控进程打开与关闭 (4.3.1)
        • 4.3.2实现监控进程中的模块加载 (4.3.2)
      • 4.4 内核监控进程与线程创建 (2023)
      • 4.5 内核中实现进程数据转储 (2029)
      • 4.6 内核遍历进程VAD结构体 (2036)
      • 4.7 运用VAD隐藏R3内存思路 (2052)
      • 4.8 内核摘链DKOM进程隐藏 (2055)
      • 4.9 内核无痕隐藏自身分析 (2059)
      • 4.10 内核强制结束进程运行 (2068)
    • 第五篇:内核模块与钩子技术 (2074)
      • 5.1 内核判断驱动加载状态 (2075)
      • 5.2 内核取KERNEL模块基址 (2082)
      • 5.3 内核取应用层模块基址 (2086)
      • 5.4 内核通过PEB取进程参数 (2089)
      • 5.5 内核断链隐藏驱动程序 (2096)
      • 5.6 内核特征码定位搜索 (2098)
      • 5.7 取进程模块函数地址 (2102)
        • 5.7.1取进程中模块基址 (5.7.1)
        • 5.7.2取模块内函数基址 (5.7.2)
      • 5.8 内核LDE引擎取汇编长度 (2105)
      • 5.9 内核InlineHook挂钩技术 (2108)
      • 5.10 摘除InlineHook内核钩子 (2111)
    • 第六篇:内核枚举技术 (2133)
      • 6.1 内核枚举SSDT表基址 (2133)
      • 6.2 内核枚举SSSDT表基址 (2141)
      • 6.3 内核枚举IoTimer定时器 (2148)
      • 6.4 内核枚举DpcTimer定时器 (2157)
      • 6.5 内核枚举PspCidTable句柄表 (2178)
      • 6.6 内核枚举Minifilter微过滤驱动 (2190)
      • 6.7 内核枚举LoadImage映像回调 (2194)
      • 6.8 内核枚举Registry注册表回调 (2202)
      • 6.9 内核枚举进线程ObCall回调 (2210)
    • 第七篇:内核监控技术 (2216)
      • 7.1 内核监控进程与线程回调 (2217)
      • 7.2 内核注册并监控对象回调 (2224)
      • 7.3 内核监视LoadImage映像回调 (2234)
      • 7.4 内核运用LoadImage屏蔽驱动 (2236)
      • 7.5 内核监控Register注册表回调 (2243)
      • 7.6 内核监控FileObject文件回调 (2253)
    • 第八篇:内核文件与注册表 (2261)
      • 8.1 内核文件读写系列函数 (2261)
        • 8.1.1创建文件或目录 (8.1.1)
        • 8.1.2重命名文件或目录 (8.1.2)
        • 8.1.3读取文件大小 (8.1.3)
        • 8.1.4内核文件读写 (8.1.4)
        • 8.1.5实现文件读写传递 (8.1.5)
      • 8.2 内核解锁与强删文件 (2283)
      • 8.3 内核遍历文件或目录 (2297)
      • 8.4 文件微过滤驱动入门 (2302)
      • 8.5 内核注册表增删改查 (2316)
        • 8.5.1 ZwCreateKey (8.5.1)
        • 8.5.2 ZwRenameKey (8.5.2)
        • 8.5.3 ZwSetValueKey (8.5.3)
        • 8.5.4 ZwQueryValueKey (8.5.4)
        • 8.5.5 ZwEnumerateKey (8.5.5)
        • 8.5.6 ZwEnumerateValueKey (8.5.6)
        • 8.5.7 ZwDeleteValueKey (8.5.7)
    • 第九篇:内核PE结构与注入 (2342)
      • 9.1 内核特征扫描PE代码段 (2343)
      • 9.2 内核解析PE结构导出表 (2358)
      • 9.3 内核解析PE结构节表 (2367)
        • 9.3.1 DOS头结构解析 (9.3.1)
        • 9.3.2 PE头结构解析 (9.3.2)
      • 9.4 内核PE结构VA与FOA转换 (2374)
        • 9.4.1 FOA偏移转换为VA偏移 (9.4.1)
        • 9.4.2 VA偏移转换为FOA偏移 (9.4.2)
        • 9.4.3 RVA偏移转换为FOA偏移 (9.4.3)
      • 9.5 内核实现SSDT挂钩与摘钩 (2382)
      • 9.6 内核扫描SSDT挂钩状态 (2399)
      • 9.7 PE导出函数与RVA转换 (2407)
      • 9.8 内核RIP劫持实现DLL注入 (2440)
      • 9.9 内核远程线程实现DLL注入 (2475)
      • 9.10 内核LoadLibrary实现DLL注入 (2485)
      • 9.11 内核ShellCode实现线程注入 (2492)

知识产权声明

该作品已在中国版权保护中心(国家版权局)申请登记,受《中华人民共和国著作权法》的保护,作者以著作权人身份依法享有,发表权、署名权、修改权、保护作品完整权、复制权、发行权、出租权、展览权、表演权、放映权、广播权、信息网络传播权、摄制权、改编权、翻译权、汇编权,及著作权人依法享有的其他合法权益。

附录

  • 版权号:国作登字-2023-L-00134718
  • 所属分类:信息安全/软件安全/网络安全
  • 发表日期:2023年5月22日

About

2023 年 5 月发表,以实战代码案例为核心,系统讲解面向灰帽与安全从业者的黑客编程与二进制安全实战技术。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors