赞
踩
目录
本期博主给大家推荐一本ARM汇编与逆向工程的图书,感兴趣的小伙伴快来看看吧!
《ARM汇编与逆向工程 蓝狐卷 基础知识》分为12章,从基础的字节和字符编码到操作系统原理、Arm架构和指令,再到静态和动态分析、逆向工程实践,循序渐进地讲解Arm逆向工程的方方面面,而且每一章都包含许多实际的案例,可以帮助读者更好地理解和掌握相关知识。同时,书中也介绍了许多工具和技术,如IDA Pro、Radare2、Binary Ninja、Ghidra、GDB等,这些工具在实际逆向工程中都有着广泛的应用。此外,本书还介绍了Arm环境的构建和使用,可以帮助读者快速搭建自己的Arm环境。
总的来说,本书对逆向工程的各个方面都进行了较为全面的介绍,对于想要学习Arm逆向工程的读者来说是一本很好的入门书籍,可以帮助读者建立起Arm逆向分析技术的知识体系。同时,由于逆向工程领域的不断更新和变化,读者也需要不断学习和探索,才能在实践中获得更多的经验和技能。需要注意的是,在学习逆向工程时要遵守相关法律法规和道德规范,不能侵犯他人的知识产权和隐私权。
Maria Markstedter是全球著名的ARM逆向工程专家,2018年入选“福布斯30岁以下科技精英”榜单,2020年获得“福布斯网络安全年度人物”奖。
ChaMd5安全团队
国内老牌CTF战队,成立于2016年,旨在维护企业安全和培养安全人才,为各大企业提供安全服务,著有《CTF实战:技术、解题与进阶》
译者序
前言
致谢
作者简介
第一部分 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
《ARM汇编与逆向工程(蓝狐卷:基础知识)》是一本专为希望深入理解ARM架构处理器底层工作原理及逆向分析技术的读者精心打造的实用教程。以下为其推荐理由:
1. 全面覆盖基础概念:本书从ARM体系结构的基础知识出发,详细介绍了ARM处理器的核心特性,包括寄存器组织、指令集体系、寻址模式以及栈操作等重要概念,确保读者能够扎实掌握ARM汇编语言编程的基本功。
2. 实战导向的逆向工程内容:书中不仅限于理论阐述,更注重实践应用,通过实际案例解析,系统地展示了如何运用ARM汇编语言进行功能分析、调试和逆向工程技术,这对于安全研究、软件保护以及破解等领域具有极高的指导价值。
3. 与时俱进的更新内容:鉴于ARM架构在移动设备、嵌入式系统乃至云计算领域的广泛应用,《ARM汇编与逆向工程》紧跟技术潮流,涵盖了从传统ARM到现代AARCH64架构的转变,并结合最新的开发工具和技术手段,使读者能够应对不断发展的硬件环境。
4. 通俗易懂的教学方式:作者以清晰的语言和丰富的图解,将复杂的汇编语言和逆向工程技巧讲解得生动而透彻,即便是初学者也能逐步进入这一高阶领域。
5. 针对性强的应用场景:对于从事Android或iOS平台应用开发、安全研究、驱动开发以及嵌入式系统的工程师来说,此书提供了宝贵的实践经验,有助于他们提升底层代码优化能力,解决复杂问题,并对软件安全性有更深刻的认识。
总之,《ARM汇编与逆向工程(蓝狐卷:基础知识)》是一本理论与实践并重的技术读物,是相关领域学习者与从业者的理想参考书籍。通过阅读这本书,读者不仅可以获得扎实的ARM汇编语言技能,更能深化对计算机系统内部工作机制的理解,从而在职业生涯中取得更大的突破。
我是一只有趣的兔子,感谢你的喜欢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。