• 二进制分析实战 网络技术 (荷)丹尼斯·安德里斯|责编:武晓燕|译者:刘杰宏//马金鑫//崔宝江 新华正版
  • 二进制分析实战 网络技术 (荷)丹尼斯·安德里斯|责编:武晓燕|译者:刘杰宏//马金鑫//崔宝江 新华正版
21年品牌 40万+商家 超1.5亿件商品

二进制分析实战 网络技术 (荷)丹尼斯·安德里斯|责编:武晓燕|译者:刘杰宏//马金鑫//崔宝江 新华正版

63.6 4.9折 129.8 全新

库存67件

河北保定
认证卖家担保交易快速发货售后保障

作者(荷)丹尼斯·安德里斯|责编:武晓燕|译者:刘杰宏//马金鑫//崔宝江

出版社人民邮电

ISBN9787115556936

出版时间2021-10

版次1

装帧平装

开本16

页数376页

字数0.55千字

定价129.8元

货号308_9787115556936

上书时间2024-12-21

鑫誠書苑

十五年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
正版特价新书
商品描述
主编:

1.本书面向安全工程师,对二进制分析和插桩等方向的一些有趣问题进行了介绍,帮助读者提升二进制分析技术。
2.本书各章后面的练有助于读者深入掌握相关知识,无论是基本的汇编知识,还是复杂的二进制插桩及分析实践。
3.本书内容详细,从二进制分析的基本概念和二进制格式开始介绍,主要包括以下内容:
  解析elf和pe二进制,并基于libbfd构建二进制加载器;
  通过代码注入和二进制编辑来修改elf文件;
  基于catone构建自定义反汇编工具;
  使用二进制插桩来绕过常用的反分析技术;
应用污点分析来检测控制流劫持和数据泄露;
使用符号执行来构建自动化利用工具。

目录:

部分二进制格式

章二进制简介2

1.1c编译过程3

1.1.1预处理阶段3

1.1.2编译阶段5

1.1.3汇编阶段6

1.1.4阶段7

1.2符号和剥离的二进制文件9

1.2.1查看符号信息9

1.2.2剥离二进制文件10

1.3反汇编二进制文件11

1.3.1查看对象文件11

1.3.2检查完整的二进制执行体13

1.4加载并执行二进制文件17

1.5结19

1.6练19

第2章elf格式20

2.1elf头部22

2.1.1e_ident数组22

2.1.2e_type、e_machine及e_version字段24

2.1.3e_entry字段24

2.1.4e_phoff和e_shoff字段25

2.1.5e_flags字段25

2.1.6e_ehsize字段25

2.1.7e_*entsize和e_*num字段25

2.1.8e_shstrndx字段26

2.2节头26

2.2.1sh_name字段27

2.2.2sh_type字段28

2.2.3sh_flags字段28

2.2.4sh_addr、sh_offset及sh_size字段29

2.2.5sh_link字段29

2.2.6sh_info字段29

2.2.7sh_addralign字段29

2.2.8sh_entsize字段29

2.3节30

2.3.1.init和.fini节31

2.3.2.text节31

2.3.3.bss、.data及.rodata节33

2.3.4延迟绑定和.plt、.got及.got.plt节33

2.3.5.rel.*和.rela.*节36

2.3.6.dynamic节37

2.3.7.init_array和.fini_array节38

2.3.8.shstrtab、.symtab、.strtab、.dynsym及.dynstr节39

2.4程序头40

2.4.1p_type字段41

2.4.2p_flags字段42

2.4.3p_offset、p_vaddr、p_paddr、p_filesz及p_memsz字段42

2.4.4p_align字段42

2.5结42

2.6练43

第3章pe格式简介44

3.1ms-dos头和ms-dos存根45

3.2pe、pf文件头及pe可选头46

3.2.1pe48

3.2.2pe文件头48

3.2.3pe可选头48

3.3节表49

3.4节49

3.4.1.edata和.idata节50

3.4.2pe代码节的填充51

3.5结51

3.6练51

第4章使用libbfd创建二进制加载器53

4.1什么是libbfd53

4.2一个简单的二进制加载接54

4.2.1binary类56

4.2.2section类57

4.2.3symbol类57

4.3实现二进制加载器57

4.3.1初始化libbfd并打开二进制文件58

4.3.2解析基础二进制属60

4.3.3加载符号63

4.3.4加载节信息66

4.4测试二进制加载器68

4.5结71

4.6练71

第二部分二进制分析基础

第5章linux二进制分析74

5.1使用file解决类型问题75

5.2使用ldd探索依赖77

5.3使用xxd查看文件内容79

5.4使用readelf解析并提取elf库文件81

5.5使用nm解析符号83

5.6使用strings查看hints86

5.7使用strace和ltrace跟踪系统调用和库文件调用88

5.8使用obump检查指令集行为93

5.9使用gdb转储动态字符串缓冲区95

5.10结97

5.11练97

第6章反汇编与二进制分析基础98

6.1静态反汇编98

6.1.1线反汇编99

6.1.2递归反汇编101

6.2动态反汇编104

6.2.1示例:使用gdb跟踪二进制执行105

6.2.2代码覆盖策略108

6.3构建反汇编代码和数据111

6.3.1构建代码112

6.3.2构建数据118

6.3.3反编译119

6.3.4中间语言121

6.4基本分析方法123

6.4.1二进制分析的特123

6.4.2控制流分析127

6.4.3数据流分析129

6.5编译器设置对反汇编的影响132

6.6结133

6.7练134

第7章简单的elf代码注入技术135

7.1使用十六进制编辑器修改裸机二进制文件135

7.1.1在作中观察off-by-one漏洞136

7.1.2修复off-by-one漏洞139

7.2使用ld_preload修改共享库行为142

7.2.1堆溢出漏洞143

7.2.2检测堆溢出145

7.3注入代码节148

7.3.1注入elf节:概述149

7.3.2使用elfinject注入elf节151

7.4调用注入的代码155

7.4.1入点修改155

7.4.2劫持构造函数和析构函数158

7.4.3劫持got条目161

7.4.4劫持plt条目164

7.4.5重定向直接调用和间接调用165

7.5结166

7.6练166

第三部分二进制分析

第8章自定义反汇编168

8.1为什么要自定义反汇编过程168

8.1.1一个自定义反汇编实例:代码混淆169

8.1.2编写自定义反汇编器的其他原因171

8.2catone介绍172

8.2.1catone安装173

8.2.2catone线反汇编174

8.2.3研究catonec的api179

8.2.4使用catone编写递归反汇编器180

8.3实现一个rop小工具扫描器188

8.3.1返回导向式编程简介189

8.3.2寻找rop的“gadget”190

8.4结196

8.5练197

第9章二进制插桩198

9.1什么是二进制插桩198

9.1.1二进制插桩的相关api199

9.1.2静态二进制插桩和动态二进制插桩的对比199

9.2静态二进制插桩201

9.2.1int3方法201

9.2.2跳板方法203

9.3动态二进制插桩207

9.3.1dbi系统的体系结构207

9.3.2pin介绍209

9.4使用pin进行分析210

9.4.1profiler的数据结构和创建代码210

9.4.2解析函数符号213

9.4.3插桩基本块214

9.4.4检测控制流指令216

9.4.5指令、控制转移及系统调用219

9.4.6测试profiler220

9.5用pin自动对二进制文件脱壳224

9.5.1可执行文件加壳器简介224

9.5.2脱壳器的配置代码及其使用的数据结构225

9.5.3对内存写入插桩228

9.5.4插桩控制流指令229

9.5.5跟踪内存写入229

9.5.6检测原始入点并转储脱壳二进制文件230

9.5.7测试脱壳器231

9.6结236

9.7练236

0章动态污点分析的237

10.1什么是dta237

10.2dta三步:污点源、污点槽及污点传播238

10.2.1定义污点源238

10.2.2定义污点槽239

10.2.3追踪污点传播239

10.3使用dta检测心脏滴血漏洞239

10.3.1心脏滴血漏洞概述239

10.3.2通过污点分析检测心脏滴血漏洞241

10.4dta设计因素:污点粒度、污点及污点传播策略242

10.4.1污点粒度243

10.4.2污点244

10.4.3污点传播策略244

10.4.4过污染和欠污染246

10.4.5控制依赖246

10.4.6影子内存247

10.5结249

10.6练249

1章基于libdft的动态污点分析250

11.1libdft简介250

11.1.1libdft的结构251

11.1.2污点传播策略指令253

11.2使用dta检测远程控制流劫持攻击254

11.2.1检查污点信息257

11.2.2污点源:将收到的字节标记为污点258

11.2.3检查点:检查execve参数260

11.2.4检测控制流劫持攻击261

11.3用隐式流绕过dta266

11.4基于dta的数据泄露检测器268

11.4.1污点源:追踪打开文件的污点270

11.4.2检查点:监控泄露数据的网络发送273

11.4.3检测数据泄露275

11.5结277

11.6练277

2章符号执行278

12.1符号执行概述278

12.1.1符号执行与正常执行的对比279

12.1.2符号执行的变体和局限282

12.1.3提高符号执行的可扩展286

12.2使用z3进行约束求解288

12.2.1证明指令的可达288

12.2.2证明指令的不可达291

12.2.3证明公式的永真292

12.2.4简化表达式293

12.2.5使用位向量对机器码建立约束模型294

12.2.6用位向量求解不透明谓词296

12.3结296

12.4练297

3章使用triton实现符号执行298

13.1triton的介绍298

13.2使用抽象语法树维护符号299

13.2.1完整的抽象语法树301

13.2.2使用引用的抽象语法树301

13.3使用triton进行后向切片302

13.3.1triton的头文件以及相关配置304

13.3.2符号化配置文件305

13.3.3模拟指令306

13.3.4设置triton的体系结构307

13.3.5计算后向切片308

13.4使用triton提升代码覆盖率310

13.4.1创建符号变量312

13.4.2寻找新路径的解313

13.4.3测试代码覆盖工具316

13.5漏洞利用自动化319

13.5.1包含脆弱调用点的程序320

13.5.2查找脆弱调用点的地址323

13.5.3构建漏洞利用生成器325

13.5.4获取root权限的shell331

13.6结334

13.7练334

第四部分附录

附录ax86汇编快速入门336

a.1汇编程序的布局336

a.1.1汇编指令、伪指令、标号及注释337

a.1.2代码与数据分离338

a.1.3at&t和intel语法339

a.2x86指令结构339

a.2.1x86指令的汇编层表示339

a.2.2x86指令的机器级结构339

a.2.3寄存器作数340

a.2.4内存作数342

a.2.5立即数343

a.3常见的x86指令343

a.3.1比较作数和设置标志位344

a.3.2实现系统调用345

a.3.3实现条件跳转345

a.3.4加载内存地址345

a.4汇编的通用代码构造345

a.4.1栈346

a.4.2函数调用与函数栈帧347

a.4.3条件分支351

a.4.4循环352

附录b使用libelf实现pt_note覆盖354

b.1请求头354

b.2elfinject使用的数据结构355

b.3初始化libelf356

b.4获取可执行头360

b.5查找pt_note段360

b.6注入代码362

b.7为注入的节对齐加载地址362

b.8覆盖.note.abi-tag节头363

b.9设置注入节的名称367

b.10覆盖pt_note程序头369

b.11修改入点372

附录c二进制分析工具清单373

c.1反汇编工具373

c.1.1idapro(windows、linux、macos)373

c.1.2hopper(linux、macos)373

c.1.3oda(所有作系统)374

c.1.4binaryninja(windows、linux、macos)374

c.1.5relyze(windows)374

c.1.6medusa(windows、linux)374

c.1.7radare(windows、linux、macos)374

c.1.8obump(linux、macos)374

c.2调试器374

c.2.1gdb(linux)374

c.2.2ollydbg(windows)375

c.2.3windbg(windows)375

c.2.4bochs(windows、linux、macos)375

c.3反汇编框架375

c.3.1catone(windows、linux、macos)375

c.3.2distorm3(windows、linux、macos)375

c.3.3udis86(linux、macos)375

c.4二进制分析框架376

c.4.1angr(windows、linux、macos)376

c.4.2pin(windows、linux、macos)376

c.4.3dyninst(windows、linux)376

c.4.4unicorn(windows、linux、macos)376

c.4.5libdft(linux)376

c.4.6triton(windows、linux、macos)376

内容简介:

二进制分析是分析计算机二进制程序(称为二进制文件)及其包含的机器代码和数据属的科学和艺术。二进制分析的目标是确定二进制程序的真正属,以理解它们真正的功能。本书是为安全工程师编写的,涉及二进制分析和检测的相关内容。本书首先介绍了二进制分析的基本概念和二进制格式,然后讲解了如何使用gnu/linux二进制分析工具链、反汇编和代码注入这样的技术来分析二进制文件,后介绍了使用pin构建二进制插桩的方法以及使用libdft构建动态污点分析工具的方法等。本书适合安全工程师、学术安全研究人员、逆向工程师、恶意软件分析师和对二进制分析感兴趣的计算机科学专业的阅读。

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

正版特价新书
此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP