《有趣的二进制》

《有趣的二进制》 《有趣的二进制》

  • 书名:《有趣的二进制》:软件安全与逆向分析
  • 分类:编程
  • 作者:[ 日] 爱甲健二
  • 出版社:人民邮电出版社
  • 出版年:2015-10
  • 售价:39.00元
  • 装订:平装
  • 页码:272

《有趣的二进制》 内容介绍:

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

作者[ 日] 爱甲健二介绍:

作者简介: 爱甲健二 曾就职于NetAgent株式会社,负责逆向工程、恶意软件分析、渗透测试等工作。2008年7月任董事。此后,在株式会社Fourteenforty技术研究所(现更名为株式会社FFRI)从事计算机安全技术研究和软件开发工作。 曾参加Black Hat Japan 2008(日本)、HITCON 2011(中国台湾)等会议,并发表重大研究成果。著有《汇编语言教程》(アセンブリ言語の教科書)、《TCP/IP教程》(TCP/IPの教科書)等。 译者简介: 周自恒 资深技术图书译者,IT、编程及自然科学爱好者,初中时曾获得信息学奥赛天津赛区一等奖,曾任某管理咨询公司战略技术总监。 译有《图解CIO工作指南(第4版)》《大数据的冲击》《代码的未来》《30天自制操作系统》《图解密码技术》《家用游戏机简史》等。

《有趣的二进制》 目录大纲:

第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类函数的字符串格式化bug  125
3.2 防御攻击的技术  127
3.2.1 地址随机化:ASLR  127
3.2.2  除存放可执行代码的内存空间以外,对其余内存空间尽量
禁用执行权限:Exec-Shield  130
3.2.3  在编译时插入检测栈数据完整性的代码:StackGuard  131
3.3 绕开安全机制的技术  134
3.3.1 使用libc中的函数来进行攻击:Return-into-libc  134
3.3.2 利用未随机化的模块内部的汇编代码进行攻击:ROP  136
专栏:计算机安全为什么会变成猫鼠游戏  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 Framework  181
5.1.2 安全漏洞的信息从何而来  181
5.1.3 搭建用于测试漏洞的环境  182
5.1.4 利用漏洞进行攻击  183
专栏:深入探索shellcode  184
5.1.5 一个ROP的实际例子  188
5.2 用EMET观察反ROP的机制  192
5.2.1 什么是EMET  192
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 什么是REMnux  205
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 安装IDA  224
A.2 安装OllyDbg   229
A.3 安装WinDbg  230
A.4 安装Visual Studio 2010  235
A.5 安装Metasploit  240
A.6 分析工具  248
Stirling / BZ Editor  248
Process Monitor  249
Process Explorer  250
Sysinternals工具  250
兔耳旋风  251
参考文献  252
后记  254


微信扫一扫关注公众号

0 个评论

要评论图书请先登录注册

你也许想看:

Successful Lisp

《Successful Lisp》

David B. Lamkins.bookfix.com.2004-12-8

“”

Practical Java中文版

《Practical Java中文版》

(美)Peter Haggar.中国电力出版社.2003-1

“本书出自第一线JAVA编程专家之手,为读者展现正确、高效、强固之JAVA代码实践方案。 这本取材广泛的掼,以不同层级的专...”

Object-Oriented Programming With ANSI-C

《Object-Oriented Programming With ANSI-C》

Axel-Tobias Schreiner.Hanser Fachbuch.1994

“Object-oriented programming is the current cure-all — althou...”

C++ Concurrency in Action

《C++ Concurrency in Action》

Anthony Williams.Manning Publications.2012-2-28

“HIGHLIGHT C++ Concurrency in Action is the first book to mar...”

.NET本质论 第1卷:公共语言运行库

《.NET本质论 第1卷:公共语言运行库》

博克斯 (BoxDon).中国电力出版社.2004-1

“本书由10章组成,探讨了CLR即公共语言运行库,涵盖了基本类型、实例、方法调用和消息、AppDomain、安全、以及CL...”

Debugging with GDB

《Debugging with GDB》

Richard M. Stallman,Roland H. Pesch,Stan Shebs.Free Software Foundation.2002-01

“The GNU Debugger allows you to see what is going on "inside"...”

The Go Programming Language

《The Go Programming Language》

Brian W. Kernighan,Alan Donovan.Addison-Wesley Professional.2015-11-23

“”

Java面向对象编程

《Java面向对象编程》

孙卫琴.电子工业出版社.2006-7

“《Java 面向对象编程》内容由浅入深,紧密结合实际,利用大量典型实例,详细讲解Java面向对象的编程思想、编程语法和设...”

Growth Hack 這樣做

《Growth Hack 這樣做》

Xdite.PCuSER電腦人文化.2016-5-7

“◎具體教你在預算有限的情況之下,把成長做出來的可行與必要方法! ◎帶動台灣成長駭客話題的專業講師,親授讓產品突破80分的...”

Effective Ruby:改善Ruby程序的48条建议

《Effective Ruby:改善Ruby程序的48条建议》

Peter J. Jones.机械工业出版社.2016-1

“如果你是经验丰富的Rub程序员,本书能帮助你发挥Ruby的全部力量来编写更稳健、高效、可维护和易执行的代码。Peter ...”

Node.js实战(第2季)

《Node.js实战(第2季)》

吴中骅,刘亚中,赵坤,雷宗民.电子工业出版社.

“《Node.js实战(第2季)》通过7个实例分别讲解了Node.js在实战开发中的应用,这些章节既涉及Docker、Ko...”

Confident Ruby

《Confident Ruby》

Avdi Grimm..2013-10-22

“For many programmers, discovering Ruby is a revelation. They...”

深入理解Net-SNMP

《深入理解Net-SNMP》

张春强.机械工业出版社.2015-8-1

“全书一共15章,分为3个部分:基础篇(第1~6章)介绍了网络管理框架、简单网络管理协议、抽象语法标记、管理信息结构、管理...”

C++网络编程(卷1)

《C++网络编程(卷1)》

[美]Douglas C.Schmidt,Stephen D.Huston 著,於春景 译.华中科技.2004-6-1

“”

Haskell Financial Data Modeling and Predictive Analytics

《Haskell Financial Data Modeling and Predictive Analytics》

Pavel Ryzhov.Packt Publishing.2013-10-25

“Get an in-depth analysis of financial time series from the p...”

Objective-C 2.0程序设计

《Objective-C 2.0程序设计》

Stephen G. Kochan.机械工业出版社.2009年9月

“本书是Objective-C领域的经典著作,对Objective-C进行了系统而全面的阐述,权威性毋庸置疑。全书共分为四...”

Advanced Linux Programming

《Advanced Linux Programming》

CodeSourcery LLC,Mark L. Mitchell,Alex Samuel,Jeffrey Oldham.New Riders.2001

“Advanced Linux Programming is divided into two parts. The fi...”

高级C/C++编译技术

《高级C/C++编译技术》

Milan Stevanovic.机械工业出版社.2015-4

“米兰·斯特瓦诺维奇编著的这本《高级C\C 编译技术》从多个角度全面、系统地讲解多任务操作系统中编译、链接、装载与库的内幕...”

Win32多线程程序设计

《Win32多线程程序设计》

[美] Jim Beveridge,Robert Wiener.华中科技大学出版社.2002-1

“《Win32多线程程序设计》全书共分三篇。第一篇包括线程的启动和结束、核心对象、激发和未激发状态的意义、同步机制及其用途...”

跟老齐学Python

《跟老齐学Python》

齐伟 编著.电子工业出版社.2016-2

“《跟老齐学Python:从入门到精通》是面向编程零基础读者的Python入门教程,内容涵盖了Python的基础知识和初步...”