前言
本书系统地讲解了软件漏洞分析与利用所需的各类工具、理论技术和实战方法,主要涉及Windows和Linux操作系统平台,选择经典漏洞作为实践项目,项目内容由浅入深、由易到难,比较容易操作和实现,旨在通过实践提高读者对软件漏洞的分析和利用能力及针对各种破解手段的防范能力。全书内容分为12章,每章中的实践项目包括项目目的、项目环境及工具、知识要点、项目实现和步骤及思考题等部分。
第1章介绍可执行文件ELF和PE的格式及其相关术语,并完成可执行文件注入和感染的任务操作。
第2章介绍逆向工程的概念和原理,以及目前常用的逆向工具,利用工具完成对软件的篡改、破解、漏洞分析等任务操作。
第3章介绍加壳与脱壳的概念、工作原理和工具,完成利用工具或手工加壳与脱壳等任务操作。
第4章介绍缓冲区溢出的概念和原理,通过实践理解缓冲区溢出的工作机理,并完成Windows和Linux操作系统代码的缓冲区溢出任务操作。
第5章介绍软件漏洞的概念和类型,通过对2个经典软件的漏洞进行挖掘、分析和利用的项目,加深读者对软件漏洞的理解。
第6章介绍结构化异常处理(structured exception handling,SEH)机制和利用SEH实现缓冲区溢出的攻击方法,以及Unicode漏洞的挖掘与利用方法。
第7章分析软件保护中安全检查机制(GS)的工作原理,并介绍绕过这一保护的相关技术,实践验证几种绕过GS保护的方法。
第8章介绍软件保护中的地址空间配置随机化(address space layout randomization,ASLR)和数据执行保护机制(data execution prevention,DEP)保护的工作原理,以及绕过这些保护措施的技术,实践完成对经典软件漏洞的挖掘、分析和利用。
第9章介绍返回导向编程(return oriented programming,ROP)技术的实现原理和方法,实践完成对经典软件的漏洞进行ROP编程的过程。
第10章介绍32位和64位Linux操作系统下软件漏洞的分析、挖掘和利用技术。
第11章介绍Egg Hunting技术的原理和方法,实践完成对经典软件漏洞的挖掘、分析和利用。
第12章介绍堆喷射技术的原理和方法,实践完成对经典软件漏洞的挖掘、分析和利用。
本书由孙夫雄主编,杨忠杰参与了第1、2章和第10章的编写,管浩澄参与了第3章和第9章的编写,邵思源、陈洋和陈宸参与了第4~7章的编写,本书的校验由梁嘉欣、彭畅协助完成。
本书可以作为非计算机或计算机相关专业的本科生和研究生通识课程的配套实验教材,书中涉及的工具和代码皆可在清华大学出版社官网下载。
由于作者自身水平有限,本书如有不妥甚至错误之处,恳请读者和专家提出宝贵意见。
编者
2022年9月
