内容简介
本书是一本面向软件开发人员和信息安全爱好者的实用指南,深入浅出地讲解了二进制安全与逆向工程的核心知识。作者爱甲健二从最基础的二进制表示和计算机内部工作原理入手,逐步引导读者理解程序在底层是如何运行的,以及如何通过逆向分析技术来探索软件的内部机制。
书中涵盖了多种主流平台下的逆向分析技术,包括Windows、Linux和Android系统。通过丰富的实际案例,读者将学习如何使用调试器、反汇编器等工具,分析程序的内存布局、函数调用流程、数据结构等关键信息。同时,本书还详细介绍了常见的安全漏洞类型,如缓冲区溢出、格式化字符串漏洞等,并演示了如何通过逆向分析来发现和防范这些漏洞。
此外,书中还探讨了软件保护与破解的对抗技术,包括反调试、代码混淆等高级话题,帮助读者建立全面的软件安全视野。每章末尾的实践练习和思考题,能够有效巩固学习成果,提升实际动手能力。无论是初入安全领域的新手,还是希望深化逆向分析技能的专业开发者,都能从本书中获得宝贵的实战经验和技术洞见。
目录
译者序
免责声明
关于商标和注册商标
第 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.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. 本站分享的所有书籍均来源于自互联网,我们只进行收集整理,并不对书籍内容进行更改。
2. 部分书籍中可能有书籍压制者放置的广告,这并不是本站所为,请注意甄别。
3. 我们分享这些书籍,纯粹是出于知识分享的热情,以及对互联网分享精神的高度认同和践行,不以盈利为目的。
4. 本站分享的所有书籍,仅供个人学习研究使用,请勿用于任何商业用途,否则产生的一切法律纠纷与本站无关。
5. 如果这些书籍让你有所收获,在条件允许的情况下,请一定购买正版书籍,这是对创作者最好的支持。
6. 如果您是此书籍的版权所有者,且您不希望此作品出现在本站,请联系我们,我们将在收到您的请求后48小时内予以删除。