展开全部

主编推荐语

帮助技术人员有效地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 工具
  • 兔耳旋风
  • 参考文献
  • 后记
展开全部

评分及书评

评分不足
1个评分

出版方

人民邮电出版社·图灵出品

图灵社区成立于2005年6月,由人民邮电出版社投资控股,以策划出版高质量的科技书籍为核心业务,主要出版领域包括计算机、电子电气、数学统计、科普等,通过引进国际高水平的教材、专著,以及发掘国内优秀原创作品等途径,为目标读者提供一流的内容。