有趣的二进制:软件安全与逆向分析

有趣的二进制:软件安全与逆向分析

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

帮助技术人员有效地Debug,防止软件受到恶意攻击和反编译。

内容简介

《有趣的二进制:软件安全与逆向分析》通过逆向工程,揭开人们熟知的软件背后的机器语言的秘密,并教给读者读懂这些二进制代码的方法。理解了这些方法,技术人员就能有效地Debug,防止软件受到恶意攻击和反编译。本书涵盖的技术包括:汇编与反汇编、调试与反调试、缓冲区溢出攻击与底层安全、钩子与注入、Metasploit 等安全工具。

作者简介

作者爱甲健二,曾就职于NetAgent株式会社,负责逆向工程、恶意软件分析、渗透测试等工作。2008年7月任董事。此后,在株式会社Fourteenforty技术研究所(现更名为株式会社FFRI)从事计算机安全技术研究和软件开发工作。曾参加BlackHatJapan2008(日本)、HITCON2011(中国台湾)等会议,并发表重大研究成果。著有《汇编语言教程》(アセンブリ言語の教科書)、《TCP/IP教程》(TCP/IPの教科書)等。

章节目录

版权信息

译者序

免责声明

关于商标和注册商标

前言

第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 工具

兔耳旋风

参考文献

后记

有趣的二进制:软件安全与逆向分析是2015年由人民邮电出版社·图灵出品出版,作者[日]爱甲健二。

得书感谢您对《有趣的二进制:软件安全与逆向分析》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
龙芯自主可信计算及应用 电子书
本书适合从事相关专业的科研和工程技术人员阅读,也可作为计算机、通信、信息安全、密码学等专业的教学参考书。
云计算服务保障体系 电子书
云计算是一种商业计算模型,它将计算任务分布在大量计算机构成的资源池上,使用户能够按需获取计算能力、存储空间和信息服务。与以往的计算模式不同,云计算环境下,信息安全和服务保障问题更严重、更突出。本书从云计算的安全技术和服务质量评价两个方面论述云计算服务保障的体系架构,安全技术方面主要阐述了基于可信计算的实时度量、基于角色的数据隔离访问、云节点信任链的动态维护模型与验证机制和多级安全访问控制模型;服务
代码整洁之道:程序员的职业素养 电子书
编程大师40余年心得体会,阐释软件工艺中的原理、技术、工具和实践,助力专业软件开发人员具备令人敬佩的职业素养。
Go语言趣学指南 电子书
Go是谷歌公司为了解决重大问题而设计的一种小型编程语言。完成大型项目需要大型团队,而大型团队中团队成员的经验水平往往各不相同。Go是一种小巧却功能强大的语言,它能够被任何人理解和使用,无论其经验如何。 快速、现代的编程语言能让业余爱好者、初学者和专业人员都受益。你需要的正是这样的语言。本书针对Go语言基础知识提供了实操性的指导,使你能够掌握Go语法,使用类型和函数,探索状态和并发等更重要的概念,并通过大量练习来巩固学到的知识。 本书包括以下内容: ●切片、接口、指针和并发等重要语言概念; ●地鼠太空航行、火星探测器、文本加密以及人类繁衍模拟等7个单元实验; ●无须安装即可在Go Playground中运行的示例。 本书面向所有熟悉计算机编程以及渴望获得这一技能的人。
深入浅出Spring Boot 2.x 电子书
本书章节编排合理,深入浅出地阐述了Spring Boot 2.x的原理与应用,以及当今较为流行的微服务系统经常用到的技术及原理,内容通俗易懂。