高端嵌入式底层技术揭秘:《ARM汇编与逆向工程》

ARM架构简介

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

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

图片

点击  京东自营 京东旗舰店 购买链接了解更多 

《ARM汇编与逆向工程 蓝狐卷 基础知识》([美]玛丽亚·马克斯特德(Maria Markstedter))【摘要 书评 试读】- 京东图书

内容简介

《ARM汇编与逆向工程 蓝狐卷 基础知识》分为12章,从基础的字节和字符编码到操作系统原理、Arm架构和指令,再到静态和动态分析、逆向工程实践,循序渐进地讲解Arm逆向工程的方方面面,而且每一章都包含许多实际的案例,可以帮助读者更好地理解和掌握相关知识。同时,书中也介绍了许多工具和技术,如IDA Pro、Radare2、Binary Ninja、Ghidra、GDB等,这些工具在实际逆向工程中都有着广泛的应用。此外,本书还介绍了Arm环境的构建和使用,可以帮助读者快速搭建自己的Arm环境。

总的来说,本书对逆向工程的各个方面都进行了较为全面的介绍,对于想要学习Arm逆向工程的读者来说是一本很好的入门书籍,可以帮助读者建立起Arm逆向分析技术的知识体系。同时,由于逆向工程领域的不断更新和变化,读者也需要不断学习和探索,才能在实践中获得更多的经验和技能。需要注意的是,在学习逆向工程时要遵守相关法律法规和道德规范,不能侵犯他人的知识产权和隐私权。

视频解读

可以关注《IT阅读排行榜》视频号观看最新的解读视频

作者简介

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

了解更多

图片

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

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

相关文章

el-dialog弹框遮罩层问题

先看一下出现的bug,点击按钮出现弹框的时候,遮罩层出现在弹框上层,不知道是那个同事写的全局样式影响的,这个时候我们需要在el-dialog标签上添加一个属性就行 :modal-append-to-body“false” 下图是出现的问题,遮罩层…

[论文笔记] Dual-Channel Span for Aspect Sentiment Triplet Extraction

一种利用句法依赖和词性相关性信息来过滤噪声(无关跨度)的基于span方法。 会议EMNLP 2023作者Pan Li, Ping Li, Kai Zhang团队Southwest Petroleum University论文地址https://aclanthology.org/2023.emnlp-main.17/代码地址https://github.com/bert-ply…

MySQL数据自动同步到Es

Logstash 测试数据准备 DROP DATABASE IF EXISTS es;CREATE DATABASE es DEFAULT CHARACTER SET utf8;USE es;CREATE TABLE book (id INT NOT NULL,title VARCHAR(20),author VARCHAR(20),price DECIMAL(6,2),PRIMARY KEY(id) );DROP PROCEDURE IF EXISTS batchInsertBook;DELI…

【Java基础知识总结 | 第四篇】Java基础重要知识(面试题)

文章目录 4.Java基础重要知识(面试题)4.1基本数据类型4.1.1 八种基本数据类型4.1.2 基本类型和包装类型的区别4.1.3包装类型的缓存机制4.1.4自动装箱和拆箱?原理?(1)定义(2)原理 4.2…

springboot项目讲解

技术栈 vue(前端) springboot(后端主框架) mybatis(ORM,用于后端和数据库的映射,即java对象转换成表) mysql (关系型数据库) 顶层结构 .idea: idea缓存文件(不需要管) src:代码核心文件夹 —main&#xf…

【PINet车道线检测】代码复现过程

《Key Points Estimation and Point Instance Segmentation Approach for Lane Detection》 论文:https://arxiv.org/abs/2002.06604 代码:GitHub - koyeongmin/PINet 论文解读:http://t.csdnimg.cn/AOV91 这是篇关于自动驾驶中车道检测技…

代码随想录算法训练营第50天 | 123.买卖股票的最佳时机III ,188.买卖股票的最佳时机IV

动态规划章节理论基础: https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 123.买卖股票的最佳时机III 题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/ 思…

如何本地部署1Panel面板

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、…

PTA一笔画

作者 张志梅 单位 青岛大学 小丁最近迷恋上一个游戏,传说中的“一笔画”游戏。 那么什么是一笔画?如下图,顾名思义就是一笔可以完成的图。一笔画最基本的要求是在画图的过程中,笔不能离开纸,且笔所画过的线不能重复…

Springboot和Spring Cloud版本对应

Spring在不断地升级,各个版本存在一些不兼容的地方,为了避免出现问题,最好注意使用正确的版本。 官网的对应关系:https://start.spring.io/actuator/info 如下图: 下面附一下创建项目的工具: Spring官方…

代码随想录算法训练营第53天 | 1143.最长公共子序列 ,1035.不相交的线 ,53. 最大子序和

动态规划章节理论基础: https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 1143.最长公共子序列 题目链接:https://leetcode.cn/problems/longest-common-subsequence/description/ 思路&…

13|连接数据库:通过链和代理查询鲜花信息

新的数据库查询范式 提出问题:用户用自然语言提出一个问题,例如“去年的总销售额是多少?”。LLM 理解并转译:LLM 首先会解析这个问题,理解其背后的意图和所需的信息。接着,模型会根据解析的内容&#xff0c…

2024年零基础转行软件测试真的可以吗?“我“该如何做?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 零基础的学生&…

博图西门子HMI下载报错—缺少面板映像,下载失败解决办法

一、报错展示 二、解决过程 1、第一种: 在安装博图(V17)时,需要下载各类软件,这时钩选全部能够选择的软件。然后进行下载。但是在这里我遇到了下载软件时,无法选择红框中的文件。那么就需要单独去西门子官网下载。 2、第二种&am…

MQ之Spring AMQP学习

Spring AMQP学习 Spring AMQP AMQP是Advanced Message Queuing Protocol的缩写。AMQP是用于在应用程序之间传递消息的开放标准,该协议与语言和平台无关,更符合微服务中独立性的要求。 Spring AMQP是基于AMQP协议定义的一套API规范,提供了模…

微信小程序接口请求出错:request:fail url not in domain list:xxxxx

一、微信小程序后台和开发者工具配的不一样导致了这个错误 先说结论: 开发者工具配置了https://www.xxx.cn/prod-api/ 微信后台配置了 https://www.xxx.cn 一、最开始 开发者工具配置了https://www.xxx.cn:7500 微信后台配置了 https://www.xxx.cn 报错:reques…

关系数据库:关系数据结构基础与概念解析

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

外包2月,技术倒退警钟长鸣。。。。。

曾经的我,作为一名大专生,在湖南某软件公司从事功能测试工作近四年。日复一日的工作让我陷入舒适区,不思进取。直到今年8月,我才意识到自己的技术停滞不前,女友的离开更是让我痛定思痛,决定改变现状&#x…

极速下载,轻松管理—互联网下载管理器(IDM)全面评测 万物皆可下的Internet Download Manager

在当今信息爆炸的时代,我们每天都在从互联网上下载各种资源,如文档、音乐、视频等。而一个高效、实用的下载工具对于提高我们的工作效率和生活品质至关重要。今天,我将为大家详细介绍一款备受好评的下载神器 — 互联网下载管理器(…

详细教---用Django封装写好的模型

本次我们要用自己写好的热销词条爬虫代码来演示如何用Django把我们写好的模型封装。 第一步:代码准备 热搜词条搜集代码: import requests from lxml import etreeurl "https://tophub.today/n/KqndgxeLl9" headers{User-Agent: Mozilla/5.…