互联网
类型
7.8
豆瓣评分
可以朗读
语音朗读
132千字
字数
2015-10-01
发行日期
展开全部
主编推荐语
帮助技术人员有效地Debug,防止软件受到恶意攻击和反编译。
内容简介
本书通过逆向分析,揭开人们熟知的软件背后的机器语言,并教给读者读懂这些二进制代码的方法。本书涵盖的技术包括:汇编与反汇编、调试与反调试、缓冲区溢出攻击与底层安全、钩子与注入、Metasploit等安全工具。
目录
- 版权信息
- 译者序
- 免责声明
- 关于商标和注册商标
- 前言
- 第1章 通过逆向工程学习如何读懂二进制代码
- 1.1 先来实际体验一下软件分析吧
- 1.1.1 通过 Process Monitor 的日志来确认程序的行为
- 1.1.2 从注册表访问中能发现些什么
- 1.1.3 什么是逆向工程
- 1.2 尝试静态分析
- 1.2.1 静态分析与动态分析
- 1.2.2 用二进制编辑器查看文件内容
- 1.2.3 看不懂汇编语言也可以进行分析
- 1.2.4 在没有源代码的情况下搞清楚程序的行为
- 1.2.5 确认程序的源代码
- 1.3 尝试动态分析
- 设置 Process Monitor 的过滤规则
- 1.3.2 调试器是干什么用的
- 1.3.3 用 OllyDbg 洞察程序的详细逻辑
- 1.3.4 对反汇编代码进行分析
- 1.3.5 将分析结果与源代码进行比较
- 1.4 学习最基础的汇编指令
- 1.4.1 没必要记住所有的汇编指令
- 1.4.2 汇编语言是如何实现条件分支的
- 1.4.3 参数存放在栈中
- 1.4.4 从汇编代码联想到 C 语言源代码
- 1.5 通过汇编指令洞察程序行为
- 1.5.1 给函数设置断点
- 1.5.2 反汇编并观察重要逻辑
- 第2章 在射击游戏中防止玩家作弊
- 2.1 解读内存转储
- 2.1.1 射击游戏的规则
- 2.1.2 修改 4 个字节就能得高分
- 2.1.3 获取内存转储
- 2.1.4 从进程异常终止瞬间的状态查找崩溃的原因
- 2.1.5 有效运用实时调试
- 2.1.6 通过转储文件寻找出错原因
- 2.2 如何防止软件被别人分析
- 2.2.1 反调试技术
- 2.2.2 通过代码混淆来防止分析
- 2.2.3 将可执行文件进行压缩
- 2.2.4 将压缩过的可执行文件解压缩:解包
- 2.2.5 通过手动解包 UPX 来理解其工作原理
- 2.2.6 用硬件断点对 ASPack 进行解包
- 第3章 利用软件的漏洞进行攻击
- 3.1 利用缓冲区溢出来执行任意代码
- 3.1.1 引发缓冲区溢出的示例程序
- 3.1.2 让普通用户用管理员权限运行程序
- 3.1.3 权限是如何被夺取的
- 3.1.4 栈是如何使用内存空间的
- 3.1.5 攻击者如何执行任意代码
- 3.1.6 用 gdb 查看程序运行时的情况
- 3.1.7 攻击代码示例
- 3.1.8 生成可用作 shellcode 的机器语言代码
- 3.1.9 对 0x00 的改进
- 3.2 防御攻击的技术
- 3.2.1 地址随机化:ASLR
- 3.2.2 除存放可执行代码的内存空间以外,对其余内存空间尽量禁用执行权限:Exec-Shield
- 3.2.3 在编译时插入检测栈数据完整性的代码:StackGuard
- 3.3 绕开安全机制的技术
- 3.3.1 使用 libc 中的函数来进行攻击:Return-into-libc
- 3.3.2 利用未随机化的模块内部的汇编代码进行攻击:ROP
- 第4章 自由控制程序运行方式的编程技巧
- 4.1 通过自制调试器来理解其原理
- 4.1.1 亲手做一个简单的调试器,在实践中学习
- 4.1.2 调试器到底是怎样工作的
- 4.1.3 实现反汇编功能
- 4.1.4 运行改良版调试器
- 4.2 在其他进程中运行任意代码 :代码注入
- 4.2.1 向其他进程注入代码
- 4.2.2 用 SetWindowsHookEx 劫持系统消息
- 4.2.3 将 DLL 路径配置到注册表的 AppInit_DLLs 项
- 4.2.4 通 过 CreateRemoteThread 在其他进程中创建线程
- 4.2.5 注入函数
- 4.3 任意替换程序逻辑 :API 钩子
- 4.3.1 API 钩子的两种类型
- 4.3.2 用 Detours 实现一个简单的 API 钩子
- 4.3.3 修改消息框的标题栏
- 第5章 使用工具探索更广阔的世界
- 5.1 用 Metasploit Framework 验证和调查漏洞
- 5.1.1 什么是 Metasploit Framework
- 5.1.2 安全漏洞的信息从何而来
- 5.1.3 搭建用于测试漏洞的环境
- 5.1.4 利用漏洞进行攻击
- 5.1.5 一个 ROP 的实际例子
- 5.2 用 EMET 观察反 ROP 的机制
- 5.2.1 什么是 EMET
- 5.2.2 Anti-ROP 的设计获得了蓝帽奖
- 5.2.3 如何防止攻击
- 5.2.4 搞清楚加载器的逻辑
- 5.2.5 DLL 的程序逻辑
- 5.2.6 CALL-RETN 检查
- 5.2.7 如何防止误判
- 5.2.8 检查栈的合法性
- 5.3 用 REMnux 分析恶意软件
- 5.3.1 什么是 REMnux
- 5.3.2 更新特征数据库
- 5.3.3 扫描目录
- 5.4 用 ClamAV 检测恶意软件和漏洞攻击
- 5.4.1 ClamAV 的特征文件
- 5.4.2 解压缩 .cvd 文件
- 5.4.3 被检测到的文件详细信息
- 5.4.4 检测所使用的打包器以及疑似恶意软件的文件
- 5.5 用 Zero Wine Tryouts 分析恶意软件
- 5.5.1 REMnux 与 Zero Wine Tryouts 的区别
- 5.5.2 运行机制
- 5.5.3 显示用户界面
- 5.5.4 确认分析报告
- 5.6 尽量减少人工分析 :启发式技术
- 5.6.1 恶意软件应对极限的到来:平均每天 60000 个
- 5.6.2 启发式技术革命
- 5.6.3 用两个恶意软件进行测试
- 附录
- A.1 安装 IDA
- A.2 安装 OllyDbg
- A.3 安装 WinDbg
- A.4 安装 Visual Studio 2010
- A.5 安装 Metasploit
- A.6 分析工具
- Stirling / BZ Editor
- Process Monitor
- Process Explorer
- Sysinternals 工具
- 兔耳旋风
- 参考文献
- 后记
展开全部
出版方
人民邮电出版社·图灵出品
图灵社区成立于2005年6月,由人民邮电出版社投资控股,以策划出版高质量的科技书籍为核心业务,主要出版领域包括计算机、电子电气、数学统计、科普等,通过引进国际高水平的教材、专著,以及发掘国内优秀原创作品等途径,为目标读者提供一流的内容。