《Python灰帽子》是由知名安全机构Immunity Inc的资深黑帽Justin Seitz主笔撰写的一本关于编程语言Python如何被广泛应用于黑客与逆向工程领域的书籍。老牌黑客,同时也是Immunity Inc的创始人兼首席技术执行官(CTO)Dave Aitel为这本书担任了技术编辑一职。书中绝大部分篇幅着眼于黑客技术领域中的两大经久不衰的话题:逆向工程与漏洞挖掘,并向读者呈现了几乎每个逆向工程师或安全研究人员在日常工作中所面临的各种场景,其中包括:如何设计与构建自己的调试工具,如何自动化实现烦琐的逆向分析任务,如何设计与构建自己的fuzzing工具,如何利用fuzzing 测试来找出存在于软件产品中的安全漏洞,一些小技巧诸如钩子与注入技术的应用,以及对一些主流Python安全工具如PyDbg、 Immunity Debugger、Sulley、IDAPython、PyEmu等的深入介绍。作者借助于如今黑客社区中备受青睐的编程语言 Python引领读者构建出精悍的脚本程序来一一应对上述这些问题。出现在书中的相当一部分Python代码实例借鉴或直接来源于一些优秀的开源安全项目,诸如Pedram Amini的Paimei,由此读者可以领略到安全研究者们是如何将黑客艺术与工程技术优雅融合来解决那些棘手问题的。
第1章 搭建开发环境 1
1.1 操作系统要求 1
1.2 获取和安装Python 2.5 2
1.2.1 在Windows下安装Python 2
1.2.2 在Linux下安装Python 2
1.3 安装Eclipse和PyDev 4
1.3.1 黑客挚友:ctype库 5
1.3.2 使用动态链接库 6
1.3.3 构建C数据类型 8
1.3.4 按引用传参 9
1.3.5 定义结构体和联合体 9
第2章 调试器原理和设计 12
2.1 通用寄存器 13
2.2 栈 15
2.3 调试事件 17
2.4 断点 18
2.4.1 软断点 18
2.4.2 硬件断点 20
2.4.3 内存断点 22
第3章 构建自己的Windows调试器 24
3.1 Debugee,敢问你在何处 24
3.2 获取寄存器状态信息 33
3.2.1 线程枚举 34
3.2.2 功能整合 35
3.3 实现调试事件处理例程 39
3.4 无所不能的断点 44
3.4.1 软断点 44
3.4.2 硬件断点 49
3.4.3 内存断点 55
3.5 总结 59
第4章 PyDbg——Windows下的纯Python调试器 60
4.1 扩展断点处理例程 60
4.2 非法内存操作处理例程 63
4.3 进程快照 66
4.3.1 获取进程快照 67
4.3.2 汇总与整合 70
第5章 Immunity Debugger——两极世界的最佳选择 74
5.1 安装Immunity Debugger 74
5.2 Immunity Debugger 101 75
5.2.1 PyCommand命令 76
5.2.2 PyHooks 76
5.3 Exploit(漏洞利用程序)开发 78
5.3.1 搜寻exploit友好指令 78
5.3.2 “坏”字符过滤 80
5.3.3 绕过Windows 下的DEP机制 82
5.4 破除恶意软件中的反调试例程 87
5.4.1 IsDebuugerPresent 87
5.4.2 破除进程枚举例程 88
第6章 钩子的艺术 90
6.1 使用PyDbg部署软钩子 90
6.2 使用Immunity Debugger部署硬钩子 95
第7章 DLL注入与代码注入技术 101
7.1 创建远程线程 101
7.1.1 DLL注入 102
7.1.2 代码注入 105
7.2 遁入黑暗 108
7.2.1 文件隐藏 109
7.2.2 构建后门 110
7.2.3 使用py2exe编译Python代码 114
第8章 Fuzzing 117
8.1 几种常见的bug类型 118
8.1.1 缓冲区溢出 118
8.1.2 整数溢出 119
8.1.3 格式化串攻击 121
8.2 文件Fuzzer 122
8.3 后续改进策略 129
8.3.1 代码覆盖率 129
8.3.2 自动化静态分析 130
第9章 Sulley 131
9.1 安装Sulley 132
9.2 Sulley中的基本数据类型 132
9.2.1 字符串 133
9.2.2 分隔符 133
9.2.3 静态和随机数据类型 134
9.2.4 二进制数据 134
9.2.5 整数 134
9.2.6 块与组 135
9.3 行刺WarFTPD 136
9.3.1 FTP 101 137
9.3.2 创建FTP协议描述框架 138
9.3.3 Sulley会话 139
9.3.4 网络和进程监控 140
9.3.5 Fuzzing测试以及Sulley的Web界面 141
第10章 面向Windows驱动的Fuzzing测试技术 145
10.1 驱动通信基础 146
10.2 使用Immunity Debugger进行驱动级的Fuzzing测试 147
10.3 Driverlib——面向驱动的静态分析工具 151
10.3.1 寻找设备名称 152
10.3.2 寻找IOCTL分派例程 153
10.3.3 搜寻有效的IOCTL控制码 155
10.4 构建一个驱动Fuzzer 157
第11章 IDAPython——IDA PRO环境下的Python脚本编程 162
11.1 安装IDAPython 163
11.2 IDAPython函数 164
11.2.1 两个工具函数 164
11.2.2 段(Segment) 164
11.2.3 函数 165
11.2.4 交叉引用 166
11.2.5 调试器钩子 166
11.3 脚本实例 167
11.3.1 搜寻危险函数的交叉代码 168
11.3.2 函数覆盖检测 169
11.3.3 检测栈变量大小 171
第12章 PYEmu——脚本驱动式仿真器 174
12.1 安装PyEmu 174
12.2 PyEmu概览 175
12.2.1 PyCPU 175
12.2.2 PyMemory 176
12.2.3 PyEmu 176
12.2.4 指令执行 176
12.2.5 内存修改器与寄存器修改器 177
12.2.6 处理例程(Handler) 177
12.3 IDAPyEmu 182
12.3.1 函数仿真 184
12.3.2 PEPyEmu 187
12.3.3 可执行文件加壳器 188
12.3.4 UPX加壳器 188
12.3.5 利用PEPyEmu脱UPX壳 189
《SAS Viya》内容简介:本书全面系统地介绍了SASViya的基础知识,让更多用户学习和使用SAS的新平台和技术,能够快速利用SASViya开发
《求索真文明》内容简介:全书共收录朱维铮先生的18篇文章,每篇围绕一位晚清时期的学者,论述其主要思想和重要著作。朱先生对每位
《软件架构师的12项修炼》内容简介:每一位软件开发人员都有一个架构师的梦,但为何真正的软件架构师却寥寥无几?软件开发人员更容
《儿童身体训练动作手册:弹力带训练》内容简介:“儿童身体训练动作指导丛书”共7册,是中国青少年体能训练师认证参考教材,并得到
H.264视频编码标准被称为新一代视频编码标准。《新一代视频压缩编码标准:H.264/AVC(第2版)》在介绍数字视频和视频编码基本原理的
《ANSYS 18.0有限元分析从入门到精通(升级版)》内容简介:本书采用GUI界面操作与APDL命令相互对照的方式,从基础知识、专题技术两
信息系统项目管理师考试辅导-(针对上午考试) 内容简介 本书按照人力资源和社会保障部、工业和信息化部全国计算机技术与软件专业技术资格(不平)考试要求编写。作者依...
《西方绘画大师经典佳作:塞尚》内容简介:印象主义画派是19世纪最重要的艺术流派之一,其将光与色彩的科学观念引入到绘画中,对当
《探索式软件测试》任命软件测试人员,OA专家、开发人员、程序经理和架构师阅读,对他们的工作具有重要的启发作用。探索式软件测
《欧体楷书技法》内容简介:欧体楷书具有“险劲严谨、刚劲挺拔、规矩端正、瘦健俊美”显著特征,被其后历代书家奉为“楷模”。作者
《海蒂的花园》内容简介:任何时候花园都不会尽如人意,无论付出多少努力;任何时候花园里都能找到美好,无论历经多少挫折。在连餐
本书为康萍等主编的《VisUalFosxPro程序设计实用教程》的配套习题解答与实验指导教材,由常年工作在计算机教学第一线的教师组织编
《出世还是入世》内容简介:本书作者何善蒙老师用通俗易懂的语言,讲解以孔孟老庄等十四位中国古代哲人的思想,展现中国先哲的人生
Java 编程思想(英文版.第3版)附光盘 本书特色 本书赢得了全球程序员的广泛赞誉,即使是*晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示...
《微信小程序:产品+运营+推广实战》内容简介:微信小程序从满城风雨到掀起创业热潮,再到一直不断地迭代更新,其每一次更新都会增
本书针对Photoshop用户在学习过程中遇到的困惑,深入剖析了Photoshop图像处理的原理和方法。本书以颜色理论和选择(道)两条主线,
内容提要本书初版于1978年,曾获1980年“新长征优秀科普作品奖”。这次重版,除对原有各篇根据近十多年来我国科技史研究方面的新
《近代法律人的世界》内容简介:本书为中国社会科学院近代史研究所法律史研究群、华中科技大学近代法研究所、华东政法大学法律文明
基于计算机、数码及网络技术的因特网已经在设计领域营造出了一个"网页设计"的新典范。仅仅五六年时间,飞速发展的因特网促进了网
本书采用程序员最爱用的面向对象C++语言来描述数据结构和算法,并把数据结构原理和算法分析技术有机地结合在一起,系统介绍了各种