《有趣的二进制:软件安全与逆向分析》通过逆向工程,揭开人们熟知的软件背后的机器语言的秘密,并教给读者读懂这些二进制代码的方法。理解了这些方法,技术人员就能有效地Debug,防止软件受到恶意攻击和反编译。本书涵盖的技术包括:汇编与反汇编、调试与反调试、缓冲区溢出攻击与底层安全、钩子与注入、Metasploit 等安全工具。
《有趣的二进制:软件安全与逆向分析》适合对计算机原理、底层或计算机安全感兴趣的读者阅读。
第1章 通过逆向工程学习如何读懂二进制代码1
1.1 先来实际体验一下软件分析吧3
1.1.1 通过Process Monitor的日志来确认程序的行为4
1.1.2 从注册表访问中能发现些什么6
1.1.3 什么是逆向工程9
专栏:逆向工程技术大赛10
1.2 尝试静态分析11
1.2.1 静态分析与动态分析11
专栏:Stirling与BZ Editor的区别12
1.2.2 用二进制编辑器查看文件内容13
1.2.3 看不懂汇编语言也可以进行分析14
1.2.4 在没有源代码的情况下搞清楚程序的行为16
1.2.5 确认程序的源代码18
1.3 尝试动态分析20
1.3.1 设置Process Monitor的过滤规则20
1.3.2 调试器是干什么用的23
1.3.3 用OllyDbg洞察程序的详细逻辑24
1.3.4 对反汇编代码进行分析26
专栏:什么是寄存器28
1.3.5 将分析结果与源代码进行比较29
专栏:选择自己喜欢的调试器30
1.4 学习最基础的汇编指令32
1.4.1 没必要记住所有的汇编指令32
1.4.2 汇编语言是如何实现条件分支的33
1.4.3 参数存放在栈中35
1.4.4 从汇编代码联想到C语言源代码37
1.5 通过汇编指令洞察程序行为40
1.5.1 给函数设置断点40
1.5.2 反汇编并观察重要逻辑42
专栏:学习编写汇编代码47
第2章 在射击游戏中防止玩家作弊51
2.1 解读内存转储53
2.1.1 射击游戏的规则53
2.1.2 修改4个字节就能得高分54
2.1.3 获取内存转储58
2.1.4 从进程异常终止瞬间的状态查找崩溃的原因63
2.1.5 有效运用实时调试66
2.1.6 通过转储文件寻找出错原因68
专栏:除了个人电脑,在其他计算机设备上运行的程序也可以进行
分析吗74
专栏:分析Java编写的应用程序74
2.2 如何防止软件被别人分析76
2.2.1 反调试技术76
专栏:检测调试器的各种方法77
2.2.2 通过代码混淆来防止分析79
专栏:代码混淆的相关话题80
2.2.3 将可执行文件进行压缩81
2.2.4 将压缩过的可执行文件解压缩:解包86
2.2.5 通过手动解包UPX来理解其工作原理87
2.2.6 用硬件断点对ASPack进行解包91
专栏:如何分析.NET编写的应用程序95
第3章 利用软件的漏洞进行攻击97
3.1 利用缓冲区溢出来执行任意代码99
3.1.1 引发缓冲区溢出的示例程序99
3.1.2 让普通用户用管理员权限运行程序100
3.1.3 权限是如何被夺取的102
3.1.4 栈是如何使用内存空间的104
3.1.5 攻击者如何执行任意代码107
3.1.6 用gdb 查看程序运行时的情况110
3.1.7 攻击代码示例113
3.1.8 生成可用作shellcode的机器语言代码116
3.1.9 对0x00的改进121
专栏:printf类函数的字符串格式化bug125
3.2 防御攻击的技术127
3.2.1 地址随机化:ASLR127
3.2.2 除存放可执行代码的内存空间以外,对其余内存空间尽量
禁用执行权限:Exec-Shield130
3.2.3 在编译时插入检测栈数据完整性的代码:StackGuard131
3.3 绕开安全机制的技术134
3.3.1 使用libc中的函数来进行攻击:Return-into-libc134
3.3.2 利用未随机化的模块内部的汇编代码进行攻击:ROP136
专栏:计算机安全为什么会变成猫鼠游戏137
第4章 自由控制程序运行方式的编程技巧139
4.1 通过自制调试器来理解其原理141
4.1.1 亲手做一个简单的调试器,在实践中学习141
4.1.2 调试器到底是怎样工作的141
4.1.3 实现反汇编功能147
4.1.4 运行改良版调试器153
4.2 在其他进程中运行任意代码:代码注入155
4.2.1 向其他进程注入代码155
4.2.2 用SetWindowsHookEx劫持系统消息155
4.2.3 将DLL路径配置到注册表的AppInit_DLLs项162
4.2.4 通过CreateRemoteThread在其他进程中创建线程165
4.2.5 注入函数170
4.3 任意替换程序逻辑:API 钩子174
4.3.1 API 钩子的两种类型174
4.3.2 用Detours实现一个简单的API 钩子174
4.3.3 修改消息框的标题栏177
专栏:DLL注入和API钩子是“黑客”技术的代表?178
第5章 使用工具探索更广阔的世界179
5.1 用Metasploit Framework验证和调查漏洞181
5.1.1 什么是Metasploit Framework181
5.1.2 安全漏洞的信息从何而来181
5.1.3 搭建用于测试漏洞的环境182
5.1.4 利用漏洞进行攻击183
专栏:深入探索shellcode184
5.1.5 一个ROP的实际例子188
5.2 用EMET观察反ROP的机制192
5.2.1 什么是EMET192
5.2.2 Anti-ROP的设计获得了蓝帽奖192
5.2.3 如何防止攻击193
5.2.4 搞清楚加载器的逻辑194
5.2.5 DLL的程序逻辑196
5.2.6 CALL-RETN检查197
5.2.7 如何防止误判200
5.2.8 检查栈的合法性201
5.3 用REMnux 分析恶意软件205
5.3.1 什么是REMnux205
5.3.2 更新特征数据库206
5.3.3 扫描目录206
5.4 用ClamAV检测恶意软件和漏洞攻击208
5.4.1 ClamAV的特征文件208
5.4.2 解压缩.cvd文件209
5.4.3 被检测到的文件详细信息210
5.4.4 检测所使用的打包器以及疑似恶意软件的文件211
5.5 用Zero Wine Tryouts分析恶意软件212
5.5.1 REMnux与Zero Wine Tryouts的区别212
5.5.2 运行机制212
5.5.3 显示用户界面213
5.5.4 确认分析报告214
专栏:尝试开发自己的工具217
5.6 尽量减少人工分析:启发式技术218
5.6.1 恶意软件应对极限的到来:平均每天60000个218
5.6.2 启发式技术革命218
5.6.3 用两个恶意软件进行测试220
附录223
A.1 安装IDA224
A.2 安装OllyDbg 229
A.3 安装WinDbg230
A.4 安装Visual Studio 2010235
A.5 安装Metasploit240
A.6 分析工具248
Stirling / BZ Editor248
Process Monitor249
Process Explorer250
Sysinternals工具250
兔耳旋风251
参考文献252
后记254
《和风漫步》内容简介:本书是一本淡彩街景的绘画教程。淡彩是集柔美与硬朗为一体的绘画艺术,它既具有水彩的诗意,又具有钢笔的行
本书首先解释了AJAX为什么在大规模的开发中能有如此广阔的应用前景,接着系统地介绍了当前重要的AJAX技术和组件。你将看到把数据
《从感觉开始》内容简介:陈嘉映经典学术随笔。世界在感觉里,感觉又在哪里? 真正的理解里也总有不曾完全明了的东西,清明的理解连
C语言兼具高级语言和汇编语言的特点,学习起来难度较大,令不少初学者望而生畏。同时,C语言又是一门应用非常广泛的编程语言,在
《增强现实:技术、应用和人体因素》内容简介:本书共分四部分,23章。第一部分阐述了增强和沉浸式显示器以及它们的历史,虚拟空间
《我爱画画(Q版人物篇)》内容简介:本书共八章,包括Q版人物的基本绘制技法、人体比例与透视、美型Q版人物、中国风Q版人物、欧式
数据结构与算法分析:Java语言描述 本书特色 第2版的特色如下:全面阐述新的java 5.0编程语言和java collections库。改进内部设计,用图和...
《遗传学与社会》内容简介:本书重点阐述遗传学的基本概念、遗传病的诊断与基因治疗、优生与优质生育、DNA与科学鉴定、转基因生物、
《神经网络模型及其MATLAB仿真程序设计》重点介绍了MATLAB6.5神经网络工具箱中各种神经网络模型及基本理论,以及各种神经网络模型
Asupremelyusablenuts-and-boltsguideforbeginnersAdailytoolofthetradeforspecialist...
《矛与盾:黑客攻防与脚本编程》对每一个入侵步骤作详细的分析,以推断入侵者在每一个入侵步骤的目的以及所要完成的任务,并对入侵
数据库系统原理(计算机及应用专业独立本科段)2006版全国高等教育自学考试指定教材 内容简介 《2007年版全国高等教育自学考试指定教材:数据库系统原理》是全国...
《客户关系管理》内容简介:王广宇所著的《客户关系管理(第3版)》是客户关系管理(CustomerRelationshipManagement,CRM)研究领
Photoshop专业抠图技法 本书特色 抠什么都不怕!半透明、不透明、动物、植物、人物,《Photoshop专业抠图技法》搞定一切图,绝对超高速。深入剖析了选...
电脑故障诊断与排除十日速成-含1DVD 本书特色 电脑入门九日速成电脑上网技巧十日速成 电脑组装与维护八日速成电脑应用技巧九日速成网上开店七日速成 常用工具...
《嵌入式实时操作系统μC/OS-2(第2版)》是icroC/OSIITheRealTimeKernel一书的第2版本,在第1版本(V2.0)基础上做了重大改进与...
《无线城市发展思路和应用案例》内容简介:本书以大量丰富、翔实的实例,具体介绍了无线城市建设的探索历程、特色理念、创新模式和
《一目了然Web软件显性设计之路》通过深入浅出地讲解与丰富的实际案例,帮助读者理解、掌握显性设计的精髓,可轻松熟练地设计出简
《自然语言处理实战》内容简介:本书将从一个心理模型开始告诉读者计算机是如何阅读和解释语言的;之后,读者将了解如何训练基于Py
常用算法程序集-(C++语言描述)-(第四版) 作者简介 p>作者简介 徐±良,清华大学电子工程系教授。毕业于清华大学计算数学专业.留校任教...