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

news2025/1/13 15:36:26

推荐一本专注于Arm逆向分析技术的好书《ARM汇编与逆向工程 蓝狐卷 基础知识》,3月21日将在点赞者中抽取粉丝进行本书包邮免费赠送。

目录

    • 正文
    • 内容简介
    • 作者简介
    • 译者简介
    • 目录
    • 了解更多

正文

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

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

了解更多

在这里插入图片描述

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

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

相关文章

聚道云连接器助力航信费控与用友U8无缝对接,赋能供应链管理!

客户介绍 某供应链管理有限公司是一家专注于供应链管理和物流服务的领先企业,在行业内享有盛誉。公司业务遍布全球,拥有庞大的客户群和丰富的行业经验。近年来,公司不断加大数字化投入,以提升运营效率和服务水平。 客户痛点 在…

springboot274基于web的电影院购票系统

电影院购票系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装电影院购票系统软件来发挥其高效…

渗透测试实战思路分析

免责声明:文章来源真实渗透测试,已获得授权,且关键信息已经打码处理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人…

单片机设计-基于树莓派的wifi小车的设计与实现

项目介绍 有两个目的:1)实现wifi小车的基本功能:使用树莓派(单片机)以及各种电子元器件,组装完成一个智能小车,通过Python、Java、C控制树莓派(单片机)的GPIO&#xff0…

LoadRunner学习:RuntimeSetting、参数化、关联、(unfinished

LoadRunner RuntimeSetting 运行时设置 在Vuser中设置Run-time Settings RunLogic:运行逻辑,决定了脚本真正执行逻辑, Init和End部分代码只能执行一次。决定脚本真正执行逻辑的意思是,在Run中的代码和Number of Iteration决定了…

【Leetcode每日一题】 递归 - 反转链表(难度⭐)(35)

1. 题目解析 题目链接:206. 反转链表 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 一、递归函数的核心任务 递归函数的主要职责是接受一个链表的头指针,并返回该链表逆序后的新头结点。递归…

Linux从0到1——Linux第一个小程序:进度条

Linux从0到1——Linux第一个小程序&#xff1a;进度条 1. 输出缓冲区2. 回车和换行的本质3. 实现进度条3.1 简单原理版本3.2 实际工程版本 1. 输出缓冲区 1. 小实验&#xff1a; 编写一个test.c文件&#xff0c;&#xff1a; #include <stdio.h> #include <unistd.h…

‘sqlcmd‘不是内部或外部命令,也不是可运行的程序或批处理文件。

目录 一、问题 二、下载&安装sqlcmd 实用工具 三、验证 四、结果 一、问题 今天使用批处理文件执行SQLServer数据库的SQL语法时报错&#xff0c;提示sqlcmd不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。&#xff0c;发生这个问题的原因是当前系统缺少…

【开发工具学习_Xshell介绍与安装】

开发工具学习_Xshell介绍与安装 开发工具学习_Xshell介绍与安装Xshell介绍Xshell安装 开发工具学习_Xshell介绍与安装 Xshell介绍 Xshell [1]是一个强大的安全终端模拟软件&#xff0c;它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主…

107. 如何使用Docker以及Docker Compose部署Go Web应用

文章目录 一、为什么需要Docker&#xff1f;二、Docker部署示例1. 准备代码2. 创建Docker镜像3. 编写Dockerfile4. Dockerfile解析5. 构建镜像6. 通过镜像创建容器运行 三、分阶段构建示例四、附带其他文件的部署示例五、关联其他容器六、Docker Compose模式七、总结 本文将介绍…

Android Studio实现内容丰富的安卓图书管理系统

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目编号060 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看图书列表 3.查看图书详情 4.评论图书&#xff0c; 5.…

复习C语言基础中的基础:C语言发展、C89 C99有何区别、C语言特点

参考《C程序设计&#xff08;第五版&#xff09;》&#xff08;谭浩强&#xff09;一书&#xff1a; 1. 发展、C89 C99 2. 特点 记得时不时回顾一下背景特点&#xff0c;加深对C语言的理解。

学古琴,万一学错了,还能改吗?

【古琴】学琴容易&#xff0c;改琴难&#xff1b; 错误的观念形成&#xff0c;需要大量的时间去调整大脑和肢体的动作&#xff1b; 当别人在学习新知识的时候&#xff0c;你却在改错误。 在古琴界因为门派和传承的关系&#xff0c;有大量不科学的毛病"&#xff0c;比如音…

HTML—CSS盒子模型(Box Model)

基本介绍&#xff1a; CSS处理网页时&#xff0c;HTML的每一个标签可以看作是一个盒子&#xff0c;网页布局将指定的标签放到指定的位置上摆放&#xff0c;相当于摆放盒子。 每一个标签(盒子)所包含的内容&#xff1a;从外到内 ①外边距(margin)—规定盒子与盒子之间的距离&…

【ShenYu源码阅读】支持提醒通知设计,来看看开源贡献者都做了什么

相信大家碰到源码时经常无从下手&#x1f643;&#xff0c;不知道从哪开始阅读&#xff0c;面对大量代码晕头转向&#xff0c;索性就读不下去了&#xff0c;又浪费了一次提升自己的机会&#x1f62d;。 我认为有一种方法&#xff0c;可以解决大家的困扰&#xff01;那就是通过阅…

百度飞桨大模型训练营:人工智能与大语言模型

1 人工智能基础概念全景介绍 1.1 人工智能概念 解释这些概念 AI是计算机学科下的一个分支学科&#xff0c;旨在使用计算机使之能像人类一样学习和思考问题机器学习是AI的一个子集&#xff0c;它的一个重要特点就是不需要人去做显示编程&#xff08;不用手撕函数&#xff09;&…

YOLOv7_pose-Openvino和ONNXRuntime推理【CPU】

纯检测系列&#xff1a; YOLOv5-Openvino和ONNXRuntime推理【CPU】 YOLOv6-Openvino和ONNXRuntime推理【CPU】 YOLOv8-Openvino和ONNXRuntime推理【CPU】 YOLOv7-Openvino和ONNXRuntime推理【CPU】 YOLOv9-Openvino和ONNXRuntime推理【CPU】 跟踪系列&#xff1a; YOLOv5/6/7-O…

关系代数-练习

设有一个SPJ数据库&#xff0c;包括4个关系模式S、P、J和 SPJ。 S(SNO, SNAME,STATUS,CITY) ; P(PNO,PNAME,COLOR,WEICHT) ; J(JNO,JNAME,CITY); SPJ(SNO,PNO,JNO,QTY)。 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商…

第二十四节 Java 异常处理

什么是异常&#xff1f; 程序运行时&#xff0c;发生的不被期望的事件&#xff0c;它阻止了程序按照程序员的预期正常执行&#xff0c;这就是异常。异常发生时&#xff0c;是任程序自生自灭&#xff0c;立刻退出终止&#xff0c;还是输出错误给用户&#xff1f;或者用C语言风格…

【智能算法】人工水母搜索算法(JS)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.代码实现4.参考文献 1.背景 2020年&#xff0c;Chou 等人受到水母运动行为启发&#xff0c;提出了人工水母搜索算法(Artificial Jellyfish Search Optimizer, JS)。 2.算法原理 2.1算法思想 JS模拟了水母的搜索行为&#xf…