好书推荐 《ARM汇编与逆向工程 蓝狐卷 基础知识》

《ARM 汇编与逆向工程 蓝狐卷 基础知识》

与传统的 CISC(Complex Instruction Set Computer,复杂指令集计算机)架构相比,Arm 架构的指令集更加简洁明了,指令执行效率更高,能够在更低的功耗下完成同样的计算任务,因此在低功耗、嵌入式等领域具有广泛的应用。同时,由于 ARM 公司采用了开放授权的商业模式,许多芯片厂商都可以使用 Arm 架构进行设计和生产,因此 Arm 架构在移动设备、智能家居、工控等领域也得到了广泛应用。此外,Arm 架构还具有可扩展性和兼容性,可以支持从单核到多核的不同规模和复杂度的处理器设计,并且可以运行各种不同的操作系统,如 Linux、Android 等。

随着 Arm 架构的广泛应用,相关安全事件层出不穷,各类 Arm 设备的安全性亟待提升,设备逆向分析工作需要进一步深入,以了解设备内部实现方式和运行机制,发现潜在的安全漏洞和缺陷,从而加强设备的安全性。此外,分析黑客的攻击载荷和恶意软件,了解攻击者的攻击手段和目的,可以帮助我们及时发现并阻止攻击,从而保护系统和数据。因此,熟练掌握 Arm 逆向分析技术十分重要。

image-20240316212013619

image-20240316212025414

扫码了解 ↑ 京东自营 京东旗舰店

内容简介

《ARM 汇编与逆向工程 蓝狐卷 基础知识》分为 12 章,从基础的字节和字符编码到操作系统原理、Arm 架构和指令,再到静态和动态分析、逆向工程实践,循序渐进地讲解 Arm 逆向工程的方方面面,而且每一章都包含许多实际的案例,可以帮助读者更好地理解和掌握相关知识。同时,书中也介绍了许多工具和技术,如 IDA Pro、Radare2、Binary Ninja、Ghidra、GDB 等,这些工具在实际逆向工程中都有着广泛的应用。此外,本书还介绍了 Arm 环境的构建和使用,可以帮助读者快速搭建自己的 Arm 环境。
总的来说,本书对逆向工程的各个方面都进行了较为全面的介绍,对于想要学习 Arm 逆向工程的读者来说是一本很好的入门书籍,可以帮助读者建立起 Arm 逆向分析技术的知识体系。同时,由于逆向工程领域的不断更新和变化,读者也需要不断学习和探索,才能在实践中获得更多的经验和技能。需要注意的是,在学习逆向工程时要遵守相关法律法规和道德规范,不能侵犯他人的知识产权和隐私权。

作者简介

Maria Markstedter 是全球著名的 ARM 逆向工程专家,2018 年入选 “福布斯 30 岁以下科技精英” 榜单,2020 年获得 “福布斯网络安全年度人物” 奖。

image-20240316212141642

译者简介

ChaMd5 安全团队

国内老牌 CTF 战队,成立于 2016 年,旨在维护企业安全和培养安全人才,为各大企业提供安全服务,著有《CTF 实战:技术、解题与进阶》

image-20240316212201983

目录

前言

致谢

作者简介

第一部分  Arm 汇编内部机制

第 1 章 逆向工程简介 2

1.1  汇编简介 2

1.1.1  位和字节 2

1.1.2  字符编码 3

1.1.3  机器码和汇编 4

1.1.4  汇编 6

1.2  高级语言 11

1.3  反汇编 12

1.4  反编译 13

第 2 章  ELF 文件格式的内部结构 15

2.1  程序结构 15

2.2  高级语言与低级语言 16

2.3  编译过程 17

2.3.1  不同架构的交叉编译 18

2.3.2  汇编和链接 20

2.4   ELF 文件概述 22

2.5   ELF 文件头 23

2.5.1   ELF 文件头信息字段 24

2.5.2  目标平台字段 24

2.5.3  程序入口点字段 25

2.5.4  表位置字段 25

2.6   ELF 程序头 26

2.6.1   PHDR 程序头 27

2.6.2   INTERP 程序头 27

2.6.3   LOAD 程序头 27

2.6.4   DYNAMIC 程序头 28

2.6.5   NOTE 程序头 28

2.6.6   TLS 程序头 29

2.6.7   GNU_EH_FRAME 程序头 29

2.6.8   GNU_STACK 程序头 29

2.6.9   GNU_RELRO 程序头 31

2.7   ELF 节头 33

2.7.1   ELF meta 节 35

2.7.2  主要的 ELF 节 36

2.7.3   ELF 符号 37

2.8  .dynamic 节和动态加载 40

2.8.1  依赖项加载 41

2.8.2  程序重定位 41

2.8.3   ELF 程序的初始化和终止节 44

2.9  线程本地存储 47

2.9.1   local-exec TLS 访问模型 50

2.9.2   initial-exec TLS 访问模型 50

2.9.3   general-dynamic TLS 访问模型 51

2.9.4   local-dynamic TLS 访问模型 52

第 3 章 操作系统基本原理 54

3.1  操作系统架构概述 54

3.1.1  用户模式与内核模式 54

3.1.2  进程 55

3.1.3  系统调用 56

3.1.4  线程 62

3.2  进程内存管理 63

3.2.1  内存页 64

3.2.2  内存保护 65

3.2.3  匿名内存和内存映射 65

3.2.4  地址空间布局随机化 69

3.2.5  栈的实现 71

3.2.6  共享内存 72

第 4 章  Arm 架构 74

4.1  架构和配置文件 74

4.2   Armv8-A 架构 75

4.2.1  异常级别 76

4.2.2   Armv8-A 执行状态 81

4.3   AArch64 执行状态 82

4.3.1   A64 指令集 82

4.3.2   AArch64 寄存器 83

4.3.3   PSTATE 89

4.4   AArch32 执行状态 90

4.4.1   A32 和 T32 指令集 91

4.4.2   AArch32 寄存器 94

4.4.3  当前程序状态寄存器 96

4.4.4  执行状态寄存器 99

第 5 章 数据处理指令 103

5.1  移位和循环移位 105

5.1.1  逻辑左移 105

5.1.2  逻辑右移 106

5.1.3  算术右移 106

5.1.4  循环右移 107

5.1.5  带扩展的循环右移 107

5.1.6  指令形式 107

5.1.7  位域操作 112

5.2  逻辑运算 120

5.2.1  位与 121

5.2.2  位或 122

5.2.3  位异或 124

5.3  算术运算 125

5.3.1  加法和减法 125

5.3.2  比较 127

5.4  乘法运算 130

5.4.1   A64 中的乘法运算 130

5.4.2   A32/T32 中的乘法运算 131

5.5  除法运算 145

5.6  移动操作 146

5.6.1  移动常量立即数 146

5.6.2  移动寄存器 149

5.6.3  移动取反 150

第 6 章 内存访问指令 151

6.1  指令概述 151

6.2  寻址模式和偏移形式 152

6.2.1  偏移寻址 155

6.2.2  前索引寻址 162

6.2.3  后索引寻址 164

6.2.4  字面值寻址 166

6.3  加载和存储指令 172

6.3.1  加载和存储字或双字 172

6.3.2  加载和存储半字或字节 174

6.3.3   A32 多重加载和存储 177

6.3.4   A64 加载和存储对 186

第 7 章 条件执行 189

7.1  条件执行概述 189

7.2  条件码 190

7.2.1   NZCV 条件标志 190

7.2.2  条件码 193

7.3  条件指令 194

7.4  标志设置指令 197

7.4.1  指令的 S 后缀 197

7.4.2  测试和比较指令 201

7.5  条件选择指令 207

7.6  条件比较指令 209

7.6.1  使用 CCMP 的布尔与条件 210

7.6.2  使用 CCMP 的布尔或条件 212

第 8 章 控制流 215

8.1  分支指令 215

8.1.1  条件分支和循环 216

8.1.2  测试和比较分支 219

8.1.3  表分支 220

8.1.4  分支和切换 222

8.1.5  子程序分支 225

8.2  函数和子程序 227

8.2.1  程序调用标准 227

8.2.2  易失性和非易失性寄存器 228

8.2.3  参数和返回值 229

8.2.4  传递较大值 230

8.2.5  叶子函数和非叶子函数 233

第二部分 逆向工程

第 9 章  Arm 环境 240

9.1   Arm 板 241

9.2  使用 QEMU 模拟虚拟环境 242

9.2.1   QEMU 用户模式模拟 243

9.2.2   QEMU 系统模式模拟 246

第 10 章 静态分析 252

10.1  静态分析工具 252

10.1.1  命令行工具 253

10.1.2  反汇编器和反编译器 253

10.1.3   Binary Ninja Cloud 254

10.2  引用调用示例 258

10.3  控制流分析 263

10.3.1   main 函数 264

10.3.2  子程序 265

10.3.3  转换为字符 269

10.3.4   if 语句 270

10.3.5  商除法 272

10.3.6   for 循环 273

10.4  算法分析 275

第 11 章 动态分析 288

11.1  命令行调试 289

11.1.1   GDB 命令 289

11.1.2   GDB 多用户模式 290

11.1.3   GDB 扩展: GEF 292

11.1.4   Radare2 303

11.2  远程调试 308

11.2.1   Radare2 309

11.2.2   IDA Pro 309

11.3  调试内存损坏 311

11.4  使用 GDB 调试进程 319

第 12 章 逆向 arm64 架构的 macOS

恶意软件 325

12.1  背景 326

12.1.1   macOS arm64 二进制文件 326

12.1.2   macOS Hello World(arm64) 329

12.2  寻找恶意 arm64 二进制文件 331

12.3  分析 arm64 恶意软件 337

12.3.1  反分析技术 338

12.3.2  反调试逻辑(通过 ptrace) 339

12.3.3  反调试逻辑(通过 sysctl) 342

12.3.4  反虚拟机逻辑(通过 SIP 状态

和 VM 遗留物检测) 346

12.4  总结 351

image-20240316212212760

购买链接

购买链接

学习ARM汇编指令的经典资料。 对ARM的各种汇编指令进行了深入全面的解,并给出了各种示例和详细注解,并且还对一些值得注意的点或是容易犯错误的地方进行了总结。 目录 前言................................................................................................................................................................i 目录................................................................................................................................................................I ARM7TDMI(-S)指令集及汇编....................................................................................................................1 ARM处理器寻址方式..........................................................................................................................2 寄存器寻址....................................................................................................................................2 立即寻址........................................................................................................................................2 寄存器偏移寻址............................................................................................................................2 寄存器间接寻址............................................................................................................................3 基址寻址........................................................................................................................................3 多寄存器寻址................................................................................................................................4 堆栈寻址........................................................................................................................................4 块拷贝寻址....................................................................................................................................5 相对寻址........................................................................................................................................5 指令集介绍............................................................................................................................................7 ARM指令集..................................................................................................................................7 指令格式................................................................................................................................7 第2个操作数................................................................................................................7 #immed_8r...........................................................................................................7 Rm..........................................................................................................................8 Rm,shift..................................................................................................................8 条件码............................................................................................................................9 ARM存储器访问指令........................................................................................................11   LDR和STR........................................................................................................11   LDM和STM.......................................................................................................14   SWP.....................................................................................................................17 ARM数据处理指令............................................................................................................19 数据传送指令..............................................................................................................20   MOV............................................................................................................20   MVN............................................................................................................20 算术逻辑运算指令......................................................................................................20   ADD.............................................................................................................20   SUB..............................................................................................................21   RSB..............................................................................................................21   ADC.............................................................................................................21   SBC..............................................................................................................21   RSC..............................................................................................................22   AND.............................................................................................................22   ORR..............................................................................................................22   EOR..............................................................................................................22   BIC...............................................................................................................23 比较指令......................................................................................................................23   CMP.............................................................................................................23   CMN.............................................................................................................23   TST...............................................................................................................24   TEQ..............................................................................................................24 乘法指令......................................................................................................................25   MUL.............................................................................................................25   MLA.............................................................................................................25   UMULL........................................................................................................25   UMLAL........................................................................................................26   SMULL........................................................................................................26   SMLAL........................................................................................................26 ARM跳转指令....................................................................................................................27   B...........................................................................................................................27   BL.........................................................................................................................27   BX........................................................................................................................27 ARM协处理器指令............................................................................................................28   CDP......................................................................................................................28   LDC......................................................................................................................29   STC......................................................................................................................29   MCR.....................................................................................................................30   MRC.....................................................................................................................30 ARM杂项指令....................................................................................................................31   SWI......................................................................................................................31   MRS.....................................................................................................................32   MSR.....................................................................................................................33 ARM伪指令........................................................................................................................34   ADR.....................................................................................................................35   ADRL...................................................................................................................35   LDR......................................................................................................................36   NOP......................................................................................................................37 Thumb指令集.............................................................................................................................39 Thumb指令集ARM指令集的区别..............................................................................39 Thumb存储器访问指令.....................................................................................................40   LDR和STR........................................................................................................41   PUSH和POP......................................................................................................43   LDMIA和STMIA..............................................................................................43 Thumb数据处理指令.........................................................................................................45 数据传送指令..............................................................................................................46   MOV............................................................................................................46   MVN............................................................................................................46   NEG..............................................................................................................47 算术逻辑运算指令......................................................................................................47   ADD.............................................................................................................47   SUB..............................................................................................................48   ADC.............................................................................................................49   SBC..............................................................................................................49   MUL.............................................................................................................50   AND.............................................................................................................50   ORR..............................................................................................................50   EOR..............................................................................................................51   BIC...............................................................................................................51   ASR..............................................................................................................51   LSL...............................................................................................................52   LSR..............................................................................................................52   ROR..............................................................................................................53 比较指令......................................................................................................................53   CMP.............................................................................................................53   CMN.............................................................................................................54   TST...............................................................................................................54 Thumb跳转指令.........................................................................................................55   B...................................................................................................................55   BL.................................................................................................................55   BX................................................................................................................55 Thumb杂项指令.........................................................................................................56   SWI..............................................................................................................56 Thumb伪指令.............................................................................................................57   ADR.............................................................................................................57   LDR..............................................................................................................57   NOP..............................................................................................................58 伪指令..................................................................................................................................................59 符号定义伪指令..........................................................................................................................59   GBLA、GBLL、GBLS..............................................................................................59   LCLA、LCLL、LCLS................................................................................................60   SETA、SETL、SETS.................................................................................................61   RLIST...........................................................................................................................61   CN................................................................................................................................62   CP.................................................................................................................................62   DN、SN.......................................................................................................................62   FN.................................................................................................................................63 数据定义伪指令..........................................................................................................................63   LTORG.........................................................................................................................64   MAP.............................................................................................................................64   FIELD..........................................................................................................................65   SPACE..........................................................................................................................66   DCB.............................................................................................................................66   DCD和DCDU............................................................................................................67   DCDO..........................................................................................................................67   DCFD和DCFDU........................................................................................................68   DCFS和DCFSU.........................................................................................................68   DCI...............................................................................................................................69   DCQ和DCQU............................................................................................................69   DCW和DCWU..........................................................................................................70 报告伪指令..................................................................................................................................70   ASSERT.......................................................................................................................70   INFO............................................................................................................................71   OPT..............................................................................................................................71   TTL和SUBT..............................................................................................................72 汇编控制伪指令..........................................................................................................................73   IF、ELSE和ENDIF...................................................................................................73   MACRO和MEND.....................................................................................................74   WHIL和WEND.........................................................................................................75 杂项伪指令..................................................................................................................................76   ALIGN.........................................................................................................................77   AREA...........................................................................................................................78   CODE16和CODE32..................................................................................................79   END.............................................................................................................................80   ENTRY.........................................................................................................................80   EQU.............................................................................................................................81   EXPORT和GLOBAL................................................................................................81   IMPORT和EXTERN.................................................................................................82   GET和INCLUDE......................................................................................................83   INCBIN........................................................................................................................83   KEEP............................................................................................................................83   NOFP...........................................................................................................................84   REQUIRE....................................................................................................................84   PEQUIRE8和PRESERVE8.......................................................................................84   RN................................................................................................................................84   ROUT...........................................................................................................................85 ARM伪指令................................................................................................................................86   ADR.............................................................................................................................86   ADRL...........................................................................................................................86   LDR..............................................................................................................................86   NOP..............................................................................................................................86   LDFD...........................................................................................................................86   LDFS............................................................................................................................87 Thumb伪指令.............................................................................................................................87   ADR.............................................................................................................................87   LDR..............................................................................................................................87   NOP..............................................................................................................................88 ARM汇编程序设计............................................................................................................................88 文件格式......................................................................................................................................88 ARM汇编的一些规范................................................................................................................88 汇编语句格式......................................................................................................................88 标号......................................................................................................................................89   基于PC的标号...................................................................................................89   基于寄存器的标号..............................................................................................90   绝对地址..............................................................................................................90 局部标号..............................................................................................................................90 符号......................................................................................................................................91 常量......................................................................................................................................91   数字常数..............................................................................................................91   字符常量..............................................................................................................92   布尔常量..............................................................................................................92 段定义..................................................................................................................................92 宏定义及其作用..................................................................................................................93 子程序的调用..............................................................................................................................94 数据比较跳转..............................................................................................................................95 循环..............................................................................................................................................95 数据块复制..................................................................................................................................95 栈操作..........................................................................................................................................96 特殊寄存器定义及应用..............................................................................................................96 散转功能......................................................................................................................................97 查表操作......................................................................................................................................97 长跳转..........................................................................................................................................97 对信号量的支持..........................................................................................................................98 伪指令使用..................................................................................................................................98 一个完整的例子..........................................................................................................................98 外围部件控制..............................................................................................................................99 三级流水线介绍..........................................................................................................................99 C汇编混合编程............................................................................................................................100 内嵌汇编....................................................................................................................................100 内嵌汇编的指令用法........................................................................................................103 内嵌汇编armasm汇编器的差异.............................................................................104 内嵌汇编注意事项............................................................................................................104 访问全局变量............................................................................................................................106 C汇编相互调用....................................................................................................................107 寄存器的使用规则............................................................................................................108 堆栈使用规则....................................................................................................................108 参数传递规则....................................................................................................................109 C程序调用汇编程序........................................................................................................110 汇编程序调用C程序.......................................................................................................111 ARM指令集列表..............................................................................................................................113 ARM存储器访问指令表列表..................................................................................................113 ARM数据处理指令列表..........................................................................................................114 ARM乘法指令列表..................................................................................................................115 ARM跳转指令列表..................................................................................................................116 ARM协处理器指令列表..........................................................................................................117 ARM杂项指令列表..................................................................................................................118 ARM伪指令列表......................................................................................................................119 Thumb指令集列表...........................................................................................................................120 Thumb存储器访问指令列表...................................................................................................120 Thumb数据处理指令列表.......................................................................................................121 Thumb跳转指令及软中断指令列表.......................................................................................122 Thumb伪指令列表...................................................................................................................123 汇编预定义变量及伪指令................................................................................................................124 预定义的寄存器和协处理器名................................................................................................124 通用寄存器........................................................................................................................124 程序状态寄存器................................................................................................................124 浮点数寄存器....................................................................................................................124 协处理器及协处理器寄存器............................................................................................125 内置变量列表............................................................................................................................125 伪指令列表................................................................................................................................126 指令条件码列表........................................................................................................................128 CPSR和SPSR分配图.............................................................................................................................129
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kwan的解忧杂货铺@新空间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值