【送书福利第五期】:ARM汇编与逆向工程

news2024/11/19 16:41:16

文章目录

  • 📑前言
  • 一、ARM汇编与逆向工程
    • 1.1 书封面
    • 1.2 内容概括
    • 1.3 目录
  • 二、作者简介
  • 三、译者介绍
  • 🌤️、粉丝福利

📑前言

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

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

一、ARM汇编与逆向工程

1.1 书封面

在这里插入图片描述

1.2 内容概括

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

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

1.3 目录

前言

致谢

作者简介

第一部分 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

二、作者简介

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

在这里插入图片描述

三、译者介绍

ChaMd5安全团队

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

在这里插入图片描述

🌤️、粉丝福利

参与方式:关注博主+点赞+收藏+评论,(每人最多评论三次)
本次送书3本【取决于阅读量,阅读量越多,送的越多】
活动时间至:2024-3-21 12:00
活动结束后,会私信中奖粉丝的,各位注意查看私信哦!

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

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

相关文章

进入docker容器中安装软件失败解,国外源慢,时间不同步,执行命令权限不够等问题解决办法

进入docker容器中安装软件失败解,时间不同步, 国外源慢,执行命令权限不够 等问题解决办法 首先我进入docker容器中,为了安装一个软件,引出了很多报错问题,报错如下: 1、无法用 ifconfig 或者 ip addr 的方…

Ansible自动化运维Inventory与Ad-Hoc

前言 自动化运维是指利用自动化工具和技术来简化、自动化和优化IT基础设施的管理和运维过程,从而提高效率、降低成本,并减少人为错误。在当今复杂的IT环境中,自动化运维已经成为许多组织和企业提高生产力和保证系统稳定性的重要手段。Ansibl…

Kubernetes operator系列:kubebuilder 实战演练 之 开发多版本CronJob

云原生学习路线导航页(持续更新中) 本文是 Kubernetes operator学习 系列文章,本节会在上一篇开发的Cronjob基础上,进行 多版本Operator 开发的实战 本文的所有代码,都存储于github代码库:https://github.c…

three.js 元素周期表,可鼠标控制

一些文章里的元素周期表,能显示,但控制器却无法使用,周期表没法旋转 后来发现是three.js版本问题, 旧版本在调试状态下是可以旋转的。新版本只要在正常页面打开状态下就能鼠标控制 <!DOCTYPE html> <html> <head> <meta charset="utf-8"&…

网盘聚合工具:统筹管理所有网盘资源 | 开源日报 No.203

alist-org/alist Stars: 35.6k License: AGPL-3.0 alist 是一个支持多存储的文件列表/WebDAV 程序&#xff0c;使用 Gin 和 Solidjs。 该项目的主要功能、关键特性、核心优势包括&#xff1a; 支持多种存储方式易于部署和开箱即用文件预览&#xff08;PDF、markdown、代码等&…

Jmeter文件上传不成功问题

前言 最近好忙呀&#xff0c;项目上线然后紧接着又客户培训了&#xff0c;由于项目有个模块全是走配置的&#xff0c;所以导致问题不断&#xff0c;近期要培训为了保障培训时客户同时操作的情况&#xff0c;所以把我从功能端抽出来做压测了&#xff0c;之前安排了2个同事写压测…

微调大型语言模型进行命名实体识别

大型语言模型的目标是理解和生成与人类语言类似的文本。它们经过大规模的训练&#xff0c;能够对输入的文本进行分析&#xff0c;并生成符合语法和语境的回复。这种模型可以用于各种任务&#xff0c;包括问答系统、对话机器人、文本生成、翻译等。 命名实体识别&#xff08;Na…

基于深度学习的口罩人脸识别研究进展

MTCNN模型训练输入的所有图像都是正样本&#xff08;戴口罩的照片&#xff09;&#xff0c;没有负样本作为模型输入。在后续的识别任务模块中&#xff0c;导入MTCNN模型检测结果&#xff0c;对特征点进行编码比较进行识别。 基于MTCNN的口罩人脸识别框架可分为四个阶段&#xf…

Linux 时间系统调用

UNIX及LinuxQ的时间系统是由「新纪元时间」Epoch开始计算起。Epoch是指定为1970年1月1日凌晨零点零分零秒&#xff0c;格林威治时间。目前大部份的UNX系统都是用32位来记录时间&#xff0c;正值表示为1970以后&#xff0c;负值则表示1970年以前。 对于当前时间到Epoch 我们用两…

刷题日记——干碎那个BFS!(含国科大机试2021)

例题小引——迷宫问题 问题描述: 迷宫由n行m列的单元格组成(n&#xff0c;m都小于等于50&#xff09;&#xff0c;每个单元格要么是空地&#xff0c;要么是障碍物。 现请你找到一条从起点到终点的最短路径长度。 分析——&#xff08;迷宫问题BFS解法&#xff09; 使用BFS…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:GridRow)

栅格布局可以为布局提供规律性的结构&#xff0c;解决多尺寸多设备的动态布局问题&#xff0c;保证不同设备上各个模块的布局一致性。 栅格容器组件&#xff0c;仅可以和栅格子组件(GridCol)在栅格布局场景中使用。 说明&#xff1a; 该组件从API Version 9开始支持。后续版本…

实战!wsl 与主机网络通信,在 wsl 中搭建服务器。学了计算机网络,但只能刷刷面试题?那也太无聊了!这篇文章可以让你检测你的计网知识!

前言&#xff08;碎碎念&#xff09;&#xff1a;每次发布文章时&#xff0c;我都是一个纠结的过程。因为我给自己写笔记时&#xff0c;只需要记录自己不清晰或者易忘的知识点就可以了&#xff0c;但一旦想要作为文章发布&#xff0c;那么我就得考虑到很多人是纯新手&#xff0…

1TGE120011R1111变频器全国发货质保一年

1TGE120011R1111 ABB ABB的1TGE120011R1111是一个属于其TGE系列的小型断路器&#xff08;也称为微型断路器或MCB&#xff09;。这个系列的断路器主要用于低压配电系统&#xff0c;为电路提供过载和短路保护。以下是这款断路器的一些特点&#xff1a; 紧凑设计&#xff1a;TGE系…

【数据库】数据库基本知识

1.数据库的四个基本概念 1.1 数据&#xff1a;描述事务的符号记录 1.2 数据库&#xff1a;概括的说&#xff0c;数据库数据具有永久存储、有组织的、可共享的大量数据的集合&#xff0c;数据库中的数据按一定的数据模型组织、描述和储存&#xff0c;具有较小的冗余度、较高的…

2、鸿蒙学习-申请调试证书和调试Profile文件

申请发布证书 发布证书由AGC颁发的、为HarmonyOS应用配置签名信息的数字证书&#xff0c;可保障软件代码完整性和发布者身份真实性。证书格式为.cer&#xff0c;包含公钥、证书指纹等信息。 说明 请确保您的开发者帐号已实名认证。每个帐号最多申请1个发布证书。 1、登录AppGa…

AI美图设计室试用,可以生成PPT,以及模特试衣

文章目录 美图设计室试用 美图设计室试用 美图设计室是美图秀秀的公司推出的AI图像处理工具&#xff0c;其功能涵盖图片编辑、抠图、海报设计、文生图等常用的AI功能。尽管很多功能需要开通会员使用&#xff0c;但一些免费功能的表现也还不错&#xff0c;值得一用。 美图设计…

【解读】NIST网络安全框架CSF 2.0

2014年&#xff0c;NIST&#xff08;美国国家标准与技术研究所&#xff0c;类似于中国的工信部&#xff09;首次发布了网络安全框架CSF&#xff08;Cybersecurity Framework)&#xff0c;十年后&#xff0c;在2024年2月26日发布了重大更新&#xff08;CSF 2.0&#xff09;&…

【蓝屏分析】WHEA_UNCORRECTABLE_ERROR 问题分析与解决

背景信息 电脑名字电脑类型厂商使用时间magicbook14 2020款 R5 4500U笔记本电脑荣耀HONOR3年9个月 内存CPUGPU硬盘焊死在主板上焊死在主板上集显PCIe 4.0 NVMe M.2 固态 软硬件错误源确定 电脑莫名频繁随机蓝屏&#xff0c;由于在软件环境上无迹可寻推测是硬件问题 蓝屏画面…

Pretrain-finetune、Prompting、Instruct-tuning训练方法的区别

来自&#xff1a;【多模态】28、LLaVA 第一版 | Visual Instruction Tuning 多模态模型的指令微调_多模态指令跟随数据-CSDN博客 几种模型训练方法的区别&#xff1a; 1、Pretrain-finetune&#xff1a;先在大量数据集上做预训练&#xff0c;然后针对某个子任务做 finetune 2…

Python图像处理指南:PIL与OpenCV的比较【第136篇—PIL】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Python图像处理指南&#xff1a;PIL与OpenCV的比较 图像处理在计算机视觉和图像识别等领域…