灰帽黑客:攻守道
书籍概述
灰帽黑客:攻守道,是一本于2023年5月20日创作完成,并于5月22日首次发表的图书作品,著作权人是王瑞。 一本信息安全编程技术实战指南,书中总结并融入了作者多年的安全编程经验,每一个案例都是从实战角度出发,该书由四卷组成,分别是基础入门卷,安全编程卷,软件安全卷以及内核安全卷,每一卷中都包含有大量根据实战而总结的黑客编程技术,通过对本书的学习读者可以快速掌握并具备实战技能,本书适用于中、高级信息安全工程师,同时也可用作高校信息安全专业课外补充教材。
内容简介
一本面向于灰帽子及信息安全专业人员的安全编程系列丛书,书中着重讲解黑客编程技术,适合开发者或计算机专业人士阅读。读者需要具备一定的编程基础,并对信息安全领域有一定的了解和认识。本书的优势在于实战,每个章节都包含与信息安全编程相关的案例,通过这些案例可以快速掌握实战技能。同时,本书的知识体系具有系统性和简洁性,读者可以轻松掌握其中的知识点。此外,书中的的用例都可以直接应用于各种安全开发项目中,可以在实际工作中直接使用,具有较高的实用价值。
知识产权
该作品已在中国版权保护中心(国家版权局)登记,受《中华人民共和国著作权法》保护,作者以著作权人身份依法享有,发表权、署名权、修改权、保护作品完整权、复制权、发行权、出租权、展览权、表演权、放映权、广播权、信息网络传播权、摄制权、改编权、翻译权、汇编权,及著作权人依法享有的其他合法权益。
本书仅仅只是做了版权确权,并没有行使出版权,本人写书的目的仅仅只是分享技术,技术只有传递下去留给真正需要的人才能发挥更大的价值,笔者并不想割韭菜,该系列作品您可以免费传播学习,但不能用于商业用途!
书籍目录
第一部分:基础入门卷
- 1.0 Python 标准输入与输出
- 2.0 Python 数据结构与类型
- 3.0 Python 迭代器与生成器
- 4.0 Python 变量与作用域
- 5.0 Python 定义并使用函数
- 6.0 Python 使用函数装饰器
- 7.0 Python 面向对象编程
- 8.0 Python 使用进程与线程
- 9.0 Python 内置模块应用
- 7.1 C/C++ 实现动态数组
- 7.2 C/C++ 实现动态链表
- 7.3 C/C++ 实现顺序栈
- 7.4 C/C++ 实现链表栈
- 7.5 C/C++ 实现链表队列
- 1.1 C++ STL 字符串构造函数
- 2.1 C++ STL 数组向量容器
- 3.1 C++ STL 双向队列容器
- 4.1 C++ STL 动态链表容器
- 5.1 C++ STL 集合数据容器
- 6.1 C++ STL 序列映射容器
- 7.1 C++ STL 非变易查找算法
- 8.1 C++ STL 变易拷贝算法
- 9.1 C++ STL 排序、算数与集合
- 10.1 C++ STL 模板适配与迭代器
- 11.1 C++ STL 应用字典与列表
- 4.1 C++ Boost 字符串处理库
- 4.2 C++ Boost 内存池管理库
- 4.3 C++ Boost 日期时间操作库
- 4.4 C++ Boost 数据集序列化库
- 4.5 C++ Boost 文件目录操作库
- 4.6 C++ Boost 函数绑定回调库
- 4.7 C++ Boost 多线程并发库
- 4.8 C++ Boost 应用JSON解析库
- 4.9 C++ Boost 命令行解析库
- 5.1 汇编语言:汇编语言概述
- 5.2 汇编语言:标志位测试指令
- 5.3 汇编语言:字符串操作指令
- 5.4 汇编语言:算数运算指令集
- 5.5 汇编语言:函数调用约定
- 5.6 汇编语言:汇编高效数组寻址
- 5.7 汇编语言:汇编高效乘法运算
- 5.8 汇编语言:汇编高效除法运算
- 5.9 汇编语言:浮点数操作指令
- 5.10 汇编语言:汇编过程与结构
- 5.11 汇编语言:仿写IF条件语句
- 5.12 汇编语言:仿写While循环语句
- 5.13 汇编语言:仿写For循环语句
- 5.14 汇编语言:仿写Switch选择结构
第二部分:安全编程卷
- 1.1 Metasploit 工具简介
- 1.3 Metasploit 生成SSL加密载荷
- 1.4 编写简易ShellCode弹窗
- 1.5 编写自定位ShellCode弹窗
- 1.6 编写双管道ShellCode后门
- 1.7 完善自定位ShellCode后门
- 1.8 运用C编写ShellCode代码
- 1.9 动态解密ShellCode反弹
- 1.10 内存ShellCode注入与格式化
- 1.11 动态加载ShellCode绕过杀软
- 1.12 进程注入ShellCode套接字
- 1.13 导出表劫持ShellCode加载
- 1.14 手工插入ShellCode反弹后门
- 1.15 自实现GetProcAddress
- 2.1 PE结构:文件映射进内存
- 2.2 PE结构:文件头详细解析
- 2.4 PE结构:节表详细解析
- 2.5 PE结构:导入表详细解析
- 2.6 PE结构:导出表详细解析
- 2.7 PE结构:重定位表详细解析
- 2.8 PE结构:资源表详细解析
- 2.9 PE结构:重建导入表结构
- 2.10 PE结构:重建重定位表结构
- 2.11 PE结构:添加新的节区
- 2.12 PE结构:实现PE字节注入
- 2.13 PE结构:实现PE代码段加密
- 2.14 PE结构:地址之间的转换
- 3.1 DLL注入:常规远程线程注入
- 3.2 DLL注入:远程APC异步注入
- 3.3 DLL注入:突破会话0强力注入
- 3.4 DLL注入:全局消息钩子注入
- 4.1 应用层Hook挂钩原理分析
- 4.2 Inline Hook 挂钩技术
- 4.3 IAT Hook 挂钩技术
- 4.4 EAT Hook 挂钩技术
- 4.5 Min Hook 挂钩技术
- 5.0 CRC32校验技术概述
- 5.1 内存CRC32完整性检测
- 5.2 磁盘CRC32完整性检测
- 6.1 KMP算法搜索机器码
- 6.2 Sunday搜索内存特征
- 6.3 应用动态内存补丁
- 7.1 实现进程内存块枚举
- 7.2 通过API创建新进程
- 7.3 通过API枚举进程
- 7.4 通过API枚举进程权限
- 7.5 通过API判断进程状态
- 7.6 实现进程挂起与恢复
- 7.7 实现进程内存读写
- 8.1 TEB与PEB概述
- 8.2 BeingDebugged
- 8.3 NtGlobalFlag
- 8.4 ProcessHeap
- 8.5 DebuggerPresent
- 8.6 STARTUPINFO
- 8.7 父进程检测反调试
- 8.8 异常处理机制反调试
- 8.9 RDTSC时钟检测反调试
- 9.1 运用API创建多线程
- 9.2 运用API实现线程同步
- 10.0 探索API调试事件原理
- 10.1 调试事件读取寄存器
- 10.2 调试事件获取DLL装载
- 10.3 调试事件转存进程内存
- 10.4 认识Capstone反汇编引擎
- 10.5 认识XEDParse汇编引擎
- 10.6 开发反汇编调试器
- 12.1 键盘鼠标监控钩子
- 12.2 实现键盘模拟按键
- 12.3 模拟鼠标录制回放
- 13.1 使用DirectX9绘图引擎
- 13.2 外部DirectX绘制实现
- 13.3 运用LyDrawLib库绘制
- 13.4 DirectX内部劫持绘制
- 14.1 Socket 套接字编程入门
- 14.2 Socket 反向远程命令行
- 14.3 Socket 字符串分块传输
- 14.4 Socket 双向数据通信
- 14.5 Socket 应用组播通信
- 14.6 Socket 应用结构体传输
- 14.7 Socket 循环结构体传输
- 14.8 Socket 一收一发通信
- 14.9 Socket 高效文件传输
- 14.10 Socket 套接字选择通信
- 14.11 Socket 基于时间加密通信
- 15.1 通过域名取IP地址
- 15.2 主机探测与路由追踪
- 16.1 Socket 端口扫描技术
- 16.2 ARP 主机探测技术
- 17.1 隐藏执行CMD命令
- 17.2 无管道正向CMD后门
- 17.3 无管道反向CMD后门
- 18.1 原生套接字抓包
- 18.2 使用NPCAP库抓包
- 18.3 NPCAP 构建中间人攻击
- 19.0 基于ASIO网络编程技术
- 19.1 Boost Asio 同步TCP通信
- 19.2 Boost Asio 同步UDP通信
- 19.3 Boost Asio 多线程通信
- 19.4 Boost Asio 远程命令执行
- 19.5 Boost Asio 传输结构体
- 19.6 Boost Asio 文本压缩传输
- 19.7 Boost Asio 传输序列化数据
- 19.8 Boost Asio 异或加密传输
- 19.9 Boost Asio 同步字典传输
- 19.10 Boost Asio 同步文件传输
- 19.11 Boost Asio 获取远程目录
- 19.12 Boost Asio 获取远程进程
- 19.13 Boost Asio 发送TCP流数据
- 20.1 OpenSSL 字符BASE64压缩算法
- 20.2 OpenSSL 非对称RSA加解密算法
- 20.3 OpenSSL 对称AES加解密算法
- 20.4 OpenSSL 套接字AES加密传输
- 20.5 OpenSSL 套接字RSA加密传输
- 20.6 OpenSSL 套接字分发RSA公钥
- 20.7 OpenSSL 套接字SSL加密传输
- 20.8 OpenSSL 套接字SSL传输文件
- 21.1 Python 使用PEfile分析PE文件
- 21.2 Python 使用Scapy实现端口探测
- 21.3 Python 使用DPKT分析数据包
- 21.4 Python 使用GeoIP2地图定位
- 21.5 Python 使用Scapy构造攻击包
- 21.6 Python 构建ARP中间人攻击
- 21.7 Python 使用Request库
- 21.8 Python 使用BeautifulSoup库
- 21.9 Python 使用Selenium库
- 21.10 Python 使用CRC32校验文件
- 21.11 Python 使用CRC图片去重
- 21.12 Python 实现网站服务器
- 21.13 Python 实现端口流量转发
- 21.14 Python 实现Web指纹识别
第三部分:软件安全卷
- 1.1 熟悉x64dbg调试器
- 1.5 为x64dbg编写插件
- 2.0 熟悉CheatEngine修改器
- 2.1 CE修改器:精确数值扫描
- 2.2 CE修改器:未知数值扫描
- 2.3 CE修改器:浮点数扫描
- 2.4 CE修改器:代码替换功能
- 2.5 CE修改器:寻找数值指针
- 2.6 CE修改器:代码注入功能
- 2.7 CE修改器:多级指针查找
- 2.8 CE修改器:寻找共享代码
- 3.0 熟悉IDAPro静态反汇编器
- 3.1 IDA Pro编写IDC脚本
- 3.2 IDC中的常用函数
- 4.1 探索LyScript漏洞挖掘插件
- 4.2 LyScript 针对PE文件的扫描
- 4.3 LyScript 搜索内存可利用指令
- 4.4 LyScript 绕过反调试保护机制
- 4.5 LyScript 探索钩子劫持技术
- 4.6 LyScript 内存扫描与查壳实现
- 4.7 LyScript 应用层的钩子扫描
- 4.8 LyScript 学会扫描应用堆栈
- 4.9 LyScript 内存处理与差异对比
- 4.10 LyScript 反汇编功能的封装
- 5.1 缓冲区溢出与攻防博弈
- 5.2 基于ROP漏洞挖掘与利用
- 6.1 植物大战僵尸:增加自己的阳光
- 6.2 植物大战僵尸:实现自动收集阳光
- 6.3 植物大战僵尸:寻找葵花生产速度
- 6.4 植物大战僵尸:寻找阳光掉落CALL
- 6.5 植物大战僵尸:寻找任意种植CALL
- 6.6 植物大战僵尸:寻找全屏攻击CALL
- 6.7 植物大战僵尸:寻找召唤僵尸CALL
- 6.8 植物大战僵尸:分析植物无冷却
- 6.9 植物大战僵尸:分析植物攻击速度
第四部分:内核安全卷
- 1.1 配置驱动开发环境
- 1.2 配置驱动开发模板
- 1.3 配置驱动双机调试
- 1.4 测试模式过DSE签名
- 1.5 内核链表与结构体
- 2.1 内核链表与结构体
- 2.2 内核中自旋锁结构
- 2.3 内核字符串转换方法
- 2.4 内核字符串拷贝与比较
- 2.5 探索DRIVER驱动对象
- 2.6 内核使用IO/DPC定时器
- 3.1 内核远程堆分配与销毁
- 3.2 内核CR3切换读写内存
- 3.3 内核MDL读写进程内存
- 3.4 通过内存拷贝读写内存
- 3.5 内核R3与R0内存映射拷贝
- 3.6 内核进程汇编与反汇编
- 3.7 内核解析内存四级页表
- 3.8 内核读写内存浮点数
- 3.9 内核读写内存多级偏移
- 3.10 内核物理内存寻址读写
- 3.11 内核枚举SSDT表基址
- 3.12 内核枚举ShadowSSDT基址
- 4.1 内核中进程与句柄互转
- 4.2 内核中枚举进线程与模块
- 4.3 监控进程与线程对象操作
- 4.4 内核监控进程与线程创建
- 4.5 内核DKOM实现进程隐藏
- 4.6 内核中实现进程内存转储
- 4.7 运用VAD隐藏R3内存思路
- 4.8 内核遍历进程VAD结构体
- 4.9 内核摘链DKOM进程隐藏
- 4.10 内核无痕隐藏自身分析
- 4.11 内核强制结束进程运行
- 5.1 内核判断驱动加载状态
- 5.2 内核取ntoskrnl模块基地址
- 5.3 内核取应用层模块基地址
- 5.4 内核通过PEB取进程参数
- 5.5 断链隐藏驱动程序自身
- 5.6 内核特征码搜索函数封装
- 5.7 内核LDE64引擎计算汇编长度
- 5.8 内核层InlineHook函数挂钩
- 5.9 摘除InlineHook内核钩子
- 5.10 取进程模块的函数地址
- 6.1 内核枚举IoTimer定时器
- 6.2 内核枚举DpcTimer定时器
- 6.3 内核枚举PspCidTable句柄表
- 6.4 内核枚举Minifilter微过滤驱动
- 6.5 内核枚举LoadImage映像回调
- 6.6 内核枚举Registry注册表回调
- 6.7 内核枚举进线程ObCall回调
- 6.8 内核监控进程与线程回调
- 6.9 内核注册并监控对象回调
- 6.10 内核监视LoadImage映像回调
- 6.11 内核运用LoadImage屏蔽驱动
- 6.12 内核监控Register注册表回调
- 6.13 内核监控FileObject文件回调
- 7.1 内核特征码扫描PE代码段
- 7.2 内核解析PE结构导出表
- 7.3 内核解析PE结构节表
- 7.4 内核PE结构VA与FOA转换
- 7.5 内核实现SSDT挂钩与摘钩
- 7.6 内核扫描SSDT挂钩状态
- 7.7 PE导出函数与RVA转换
- 7.8 内核RIP劫持实现DLL注入
- 7.9 内核远程线程实现DLL注入
- 7.10 内核LoadLibrary实现DLL注入
- 7.11 内核ShellCode线程注入技术
- 8.1 内核文件读写系列函数
- 8.2 内核解锁与强删文件
- 8.3 内核遍历文件或目录
- 8.4 文件微过滤驱动入门
- 8.5 内核注册表增删改查