好书推荐 《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

购买链接

购买链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/755439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows Server 各版本搭建远程访问 / VPN 服务器实现 VPN 连接(03~19)

一、Windows Server 2003 开机后点击添加或删除角色 点击下一步 勾选自定义,点击下一步 点击 远程访问/VPN 服务器,点击下一步 点击下一步 点击下一步 勾选自定义,点击下一步 选择配置类型,点击下一步 点击完成 点击是 点击完成…

SOLIDWORKS Electrical布线方框图绘图技巧

今天我们来学习SOLIDWORKS Electrical布线方框图的绘图方法和技巧,布线方框图是一个方案性的示意图,预规划设计时可提前选型并简单表示连接关系。它可以用较简单的符号或带有文字的方框,简单明了地表示电路系统最基本的结构和组成&#xff0c…

如何从MP4视频中提取gif?一键在线提取gif

在现代社交媒体和通信平台上,GIF已经成为一种非常流行的图像格式。GIF图像以其短小精悍的特点,能够循环播放动画,因此在表达情感、分享趣味和传达信息方面非常受欢迎。如果你想从一个MP4视频中提取一个有趣的GIF图像,可以使用视频…

突破编程_前端_ACE编辑器(概述)

1 ACE 框架简介 ACE 框架是一个强大且灵活的前端文本编辑器框架,它提供了一套全面的 API 和丰富的功能,使得开发者能够轻松地在 Web 应用中集成功能强大的代码编辑器。ACE 编辑器不仅适用于在线代码编辑,还广泛应用于文档编辑、实时协作、富…

面试算法-52-对称二叉树

题目 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 解 class Solution {public boolean isSymmetric(TreeNode root) {return dfs(root, root);}public boolean dfs(Tr…

mysql的学习笔记

干前端好几年了,只会前端总感觉少了条腿,处处不自在,决定今年学习下后端的东西.以前总想着学node会更快,但是实际工作上却用不上. 出来混,总是要还的,该学的javaWeb这一套体系的东西,总是需要学习的. 那就开始啦. 一,在本地电脑mac上安装mysql 这个参考的这篇文章,照着做一次…

02_设计模式

文章目录 设计模式设计模式分类UML类图设计模式的原则 常用设计模式创建型设计模式单例设计模式饿汉模式懒汉模式(线程不安全)懒汉模式(线程安全)- Synchronized懒汉模式(线程安全)- Double Check懒汉模式&…

出彩不停息!创维汽车SKYHOME又获国际大奖

祝贺!创维汽车SKYHOME又获国际缪斯设计大奖!进一步获得国际认可! 卓越的意识、优秀的审美、无与伦比的专注,不仅是缪斯奖所看重的独特品质,也是SKYHOME设计团队在传递品牌故事中所秉持的优秀品格。作为缪斯奖青睐的设计…

简明 FastAPI 并发请求指南

在当今的数字化世界中,网络用户对于高速响应和持续连接的诉求日益显著。这促使了基于 Python 构建的 FastAPI 框架受到广泛关注,它不仅现代化且效率极高,而且简化了并行请求的处理。本篇文章旨在探讨 FastAPI 如何处理这类请求,并…

ideaSSM物流运输管理系统短路径算法开发mysql数据库web结构Dijstra编程计算机网页源码maven项目

一、源码特点 idea ssm 物流运输管理系统是一套完善的完整信息管理系统,结合SSM框架完成本系统SpringMVC spring mybatis ,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数…

PHP反序列化--pop链

目录 一、了解pop链 1、pop链: 2、pop链触发规则: (1)通过普通函数触发: (2)通过魔术方法触发: 3、pop链魔术方法例题: 一、了解pop链 1、pop链: pop链…

B008-springcloud alibaba 短信服务 sms

目录 短信服务介绍短信服务使用准备工作阿里云官网实名认证开通短信服务申请认证秘钥申请短信签名申请短信模板 短信服务API介绍短信发送(SendSms)短信查询(QuerySendDetails)功能测试 下单之后发送短信 短信服务介绍 短信服务(Short Message Service)是…

Linux logrotate教程以及如何使用logrotate分割nginx访问日志

目录 **简介****配置****分割 Nginx access log 示例****总结** 简介 Logrotate 是一个用于管理 Linux 系统日志文件的工具。它可以自动执行以下操作: 将旧的日志文件压缩或删除创建新的日志文件将日志文件发送到指定的邮箱或其他目标 配置 既然 logrotate 主要…

【每日一题】好子数组的最大分数

Tag 【单调栈】【暴力枚举】【数组】【2024-03-19】 题目来源 1793. 好子数组的最大分数 解题思路 本题和 84. 柱状图中最大的矩形 一样,计算的都是最大矩形的面积。只不过多了一个约束:矩形必须包含下标 k。 以下的方法一和方法二是 84. 柱状图中最…

PHP+MySQL开发组合:多端多商户DIY商城源码系统 带完整的搭建教程以及安装代码包

近年来,电商行业的迅猛发展,越来越多的商户开始寻求搭建自己的在线商城。然而,传统的商城系统往往功能单一,无法满足商户个性化、多样化的需求。同时,搭建一个功能完善的商城系统需要专业的技术团队和大量的时间成本&a…

基于GEC6818的QT开发之——通过不同按键控制DHT11模块的数据采集与动态显示

基于GEC6818的QT开发之——通过不同按键控制DHT11模块的数据采集与动态显示 使用环境: ubantu16 QT5.7 开发板GEC6818 实现要求: 利用A53按键1、按键2与温湿度传感器完成QT界面动态显示温湿度记录,并指定温湿度记录超过指定范围,进行报警&…

十五、ReentrantLock

synchronized本身是可重入锁 下述示例代码&#xff1a; 当i 2的时候会执行m2的synchronized锁 import java.util.concurrent.TimeUnit;public class T01_ReentrantLock1 {synchronized void m1() {for(int i0; i<10; i) {try {TimeUnit.SECONDS.sleep(1);} catch (Interr…

多模态:Vary-toy

文章目录 前言一、模型结构二、数据工程总结 前言 Vary的提出让大模型在OCR相关任务的能力有了很大突破&#xff0c;通过提出额外的视觉词汇表模块来弥补单一CLIP编码能力的不足&#xff0c;详情可参考我之前的文章——多模态&#xff1a;Vary。 最近Vary的团队开发了一个更小…

UE要收费?难道ue的使用成本要增加吗?

去年&#xff0c;Epic Games在裁员16%后&#xff0c;放出要对非游戏制作等行业使用UE进行收费的消息。3月12日&#xff0c;Epic Games正式宣布了对UE、实时可视化工具Twinmotio和摄影测量应用RealityCapture的新定价。 Epic Games将从下个月开始推出新的Unreal订阅模式&#x…

Vue.js中使用Web Workers来创建一个秒表

在Vue.js中使用Web Workers来创建一个秒表应用可以提高性能&#xff0c;因为Web Workers可以在后台线程中运行&#xff0c;不阻塞主线程。下面是一个简单的Vue.js秒表应用的示例&#xff0c;该应用使用Web Worker来执行计时功能。 首先&#xff0c;我们创建一个Web Worker文件…