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

  大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。

  本文主要介绍了《ARM汇编与逆向工程 蓝狐卷 基础知识》,希望能对学习汇编和逆向的的同学们有所帮助。

文章目录

  • 1. 前言
  • 2. 内容简介
  • 3. 作者简介
  • 4. 译者简介
  • 5. 目录

1. 前言

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

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

2. 内容简介

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

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

3. 作者简介

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

4. 译者简介

ChaMd5安全团队

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

5. 目录

译者序前言致谢作者简介第一部分 Arm汇编内部机制第1章 逆向工程简介    21.1 汇编简介    21.1.1 位和字节    21.1.2 字符编码    31.1.3 机器码和汇编    41.1.4 汇编    61.2 高级语言    111.3 反汇编    121.4 反编译    13第2章 ELF文件格式的内部结构    152.1 程序结构    152.2 高级语言与低级语言    162.3 编译过程    172.3.1 不同架构的交叉编译    182.3.2 汇编和链接     202.4 ELF文件概述    222.5 ELF文件头    232.5.1 ELF文件头信息字段    242.5.2 目标平台字段    242.5.3 程序入口点字段    252.5.4 表位置字段    252.6 ELF程序头     262.6.1 PHDR 程序头    272.6.2 INTERP程序头    272.6.3 LOAD程序头    272.6.4 DYNAMIC程序头    282.6.5 NOTE程序头    282.6.6 TLS程序头    292.6.7 GNU\_EH\_FRAME程序头    292.6.8 GNU_STACK程序头    292.6.9 GNU_RELRO程序头    312.7 ELF节头    332.7.1 ELF meta节    352.7.2 主要的ELF节    362.7.3 ELF符号    372.8 .dynamic节和动态加载    402.8.1 依赖项加载    412.8.2 程序重定位    412.8.3 ELF程序的初始化和终止节    442.9 线程本地存储    472.9.1 local-exec TLS访问模型    502.9.2 initial-exec TLS访问模型    502.9.3 general-dynamic TLS访问模型    512.9.4 local-dynamic TLS访问模型    52第3章 操作系统基本原理    543.1 操作系统架构概述    543.1.1 用户模式与内核模式    543.1.2 进程    553.1.3 系统调用    563.1.4 线程    623.2 进程内存管理    633.2.1 内存页    643.2.2 内存保护    653.2.3 匿名内存和内存映射    653.2.4 地址空间布局随机化    693.2.5 栈的实现    713.2.6 共享内存    72第4章 Arm架构    744.1 架构和配置文件    744.2 Armv8-A架构    754.2.1 异常级别    764.2.2 Armv8-A执行状态    814.3 AArch64执行状态    824.3.1 A64指令集    824.3.2 AArch64寄存器    834.3.3 PSTATE    894.4 AArch32执行状态    904.4.1 A32和T32指令集    914.4.2 AArch32寄存器    944.4.3 当前程序状态寄存器    964.4.4 执行状态寄存器    99第5章 数据处理指令    1035.1 移位和循环移位    1055.1.1 逻辑左移    1055.1.2 逻辑右移    1065.1.3 算术右移    1065.1.4 循环右移    1075.1.5 带扩展的循环右移    1075.1.6 指令形式    1075.1.7 位域操作    1125.2 逻辑运算    1205.2.1 位与    1215.2.2 位或    1225.2.3 位异或    1245.3 算术运算    1255.3.1 加法和减法    1255.3.2 比较    1275.4 乘法运算    1305.4.1 A64中的乘法运算    1305.4.2 A32/T32中的乘法运算    1315.5 除法运算    1455.6 移动操作    1465.6.1 移动常量立即数    1465.6.2 移动寄存器    1495.6.3 移动取反    150第6章 内存访问指令    1516.1 指令概述    1516.2 寻址模式和偏移形式    1526.2.1 偏移寻址    1556.2.2 前索引寻址    1626.2.3 后索引寻址    1646.2.4 字面值寻址    1666.3 加载和存储指令    1726.3.1 加载和存储字或双字    1726.3.2 加载和存储半字或字节    1746.3.3 A32多重加载和存储    1776.3.4 A64加载和存储对    186第7章 条件执行    1897.1 条件执行概述    1897.2 条件码    1907.2.1 NZCV条件标志    1907.2.2 条件码    1937.3 条件指令    1947.4 标志设置指令    1977.4.1 指令的S后缀    1977.4.2 测试和比较指令    2017.5 条件选择指令    2077.6 条件比较指令    2097.6.1 使用CCMP的布尔与条件    2107.6.2 使用CCMP的布尔或条件    212第8章 控制流    2158.1 分支指令    2158.1.1 条件分支和循环    2168.1.2 测试和比较分支    2198.1.3 表分支    2208.1.4 分支和切换    2228.1.5 子程序分支    2258.2 函数和子程序    2278.2.1 程序调用标准    2278.2.2 易失性和非易失性寄存器    2288.2.3 参数和返回值    2298.2.4 传递较大值    2308.2.5 叶子函数和非叶子函数    233第二部分 逆向工程第9章 Arm环境    2409.1 Arm板    2419.2 使用QEMU模拟虚拟环境    2429.2.1 QEMU用户模式模拟    2439.2.2 QEMU系统模式模拟    246第10章 静态分析    25210.1 静态分析工具    25210.1.1 命令行工具    25310.1.2 反汇编器和反编译器    25310.1.3 Binary Ninja Cloud    25410.2 引用调用示例    25810.3 控制流分析    26310.3.1 main函数    26410.3.2 子程序    26510.3.3 转换为字符    26910.3.4 if语句    27010.3.5 商除法    27210.3.6 for循环    27310.4 算法分析    275第11章 动态分析    28811.1 命令行调试    28911.1.1 GDB命令    28911.1.2 GDB多用户模式    29011.1.3 GDB扩展:GEF     29211.1.4 Radare2     30311.2 远程调试    30811.2.1 Radare2    30911.2.2 IDA Pro    30911.3 调试内存损坏    31111.4 使用GDB调试进程    319第12章 逆向arm64架构的macOS恶意软件    32512.1 背景    32612.1.1 macOS arm64二进制文件    32612.1.2 macOS Hello World(arm64)    32912.2 寻找恶意arm64二进制文件    33112.3 分析arm64恶意软件    33712.3.1 反分析技术    33812.3.2 反调试逻辑(通过ptrace)    33912.3.3 反调试逻辑(通过sysctl)    34212.3.4 反虚拟机逻辑(通过SIP状态和VM遗留物检测)    34612.4 总结    351

在这里插入图片描述

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

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

相关文章

Ubuntu20下C/C++编程开启TCP KeepAlive

1、在linux下,测试tcp保活,可以使用tcp自带keepalive功能。 2、几个重要参数: tcp_keepalive_time:对端在指定时间内没有数据传输,则向对端发送一个keepalive packet,单位:秒 tcp_keep…

拌合楼内部管理系统开发(一)立个flag,开始做准备

前言:项目背景情况介绍 公司有意开发一套适合拌合楼的内部管理系统给到客户使用,接触过一家拌合楼行业内号称标杆的企业,去过参观学习的都觉得他们软件好用,但是从软件开发角度看,就是crud钉钉机器人无人值守。虽然公司…

Python语法糖

N u m P y NumPy NumPy的 n d i t e r nditer nditer nditer 是 NumPy 提供的一种多维迭代器,用于对多维数组进行迭代操作。它可以替代传统的嵌套循环,在处理多维数组时更加方便和高效。 迭代器可以按照不同的顺序遍历数组的元素,也可以控制…

JDK8和JDK11在Ubuntu18上切换(解决nvvp启动报错)

本文主要介绍JDK8和JDK11在Ubuntu18上切换,以供读者能够理解该技术的定义、原理、应用。 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:计算机杂记 🎀CSDN主页 发狂的小花 🌄人…

C++的类和对象(七):友元、内部类

目录 友元 友元函数 友元类 内部类 匿名对象 拷贝对象时的一些编译器优化 再次理解类和对象 友元 基本概念:友元提供了一种突破封装的方式,有时提供了便利,但是友元会增加耦合度,破坏了封装,所以友元不宜多用&…

[嵌入式系统-39]:龙芯1B 开发学习套件 -10-PMON启动过程Sstart.S详解

目录 一、龙芯向量表与启动程序的入口(复位向量) 1.1 复位向量: 1.2 代码执行流程 1.3 计算机的南桥 VS 北桥 二、PMON代码执行流程 三、Start.S详解 3.1 CPU初始化时所需要的宏定义 (1)与CPU相关的一些宏定义…

北斗卫星在桥隧坡安全监测领域的应用及前景展望

北斗卫星在桥隧坡安全监测领域的应用及前景展望 北斗卫星系统是中国独立研发的卫星导航定位系统,具有全球覆盖、高精度定位和海量数据传输等优势。随着卫星导航技术的快速发展,北斗卫星在桥隧坡安全监测领域正发挥着重要的作用,并为相关领域…

element-plus 完成下拉切换功能

项目场景: element-plus element-plus 完成下拉切换功能,选用了popover 组件去进行样式修改,本来大概是要实现下面这样的样式效果,没想到调整的时候,这个选择的高亮模块总是超出。 实现效果: 解决方案&am…

android HAL层崩溃排查记录

要最近在调试系统HDMI CEC功能时,遇到一个奇怪的崩溃问题,这边记录下。 初步分析 先上日志: --------- beginning of crash 03-06 10:48:25.503 1133 1133 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** **…

微信小程序 - 基于scroll view 实现下拉刷新

简介 本文会基于scroll view 实现下拉刷新效果&#xff0c;在下拉的时候会进入loading状态。 实现效果 效果如上图所示&#xff0c;在下拉到底部时候&#xff0c;会出现loading条&#xff0c;在处理完成后loading条消失。 具体代码 布局 <scroll-view scroll-y style&qu…

【AIGC调研系列】通义灵码与copilot的对比

通义灵码与GitHub Copilot的对比主要集中在几个方面&#xff1a;代码编写能力、免费性、操作界面和适配性。 首先&#xff0c;在代码编写能力上&#xff0c;虽然GitHub Copilot在整体上要强于通义灵码&#xff0c;但通义灵码的能力也不算弱&#xff0c;并且在某些特定的小类任…

Windows下anaconda下载安装教程,多图预警【步骤详细版】

Windows下anaconda下载安装教程 一、下载anaconda二、安装详细步骤<图示>1、安装Anaconda2、修改环境变量 三、验证是否安装成功1、查看python版本2、查看pip版本 特别致谢大佬的教程 一、下载anaconda 官网下载&#xff0c;速度太感人&#xff0c;所以这里选择清华开源…

01背包 与 emo题目背景(周超人的遗憾) 的爱恨情仇

本题背景有意思&#xff0c;大家当乐子看&#xff0c;目前没有找到题目原题&#xff0c;也没有写过完全是01背包模板的题目&#xff0c;该篇文章大家注意其01背包一维写法的模板就好&#xff0c;注意各个关键点 ✨欢迎来到脑子不好的小菜鸟的文章✨ &#x1f388;创作不易&…

从政府工作报告探计算机行业发展——探索计算机行业发展蓝图

目录 前言 一、政策导向与行业发展 &#xff08;一&#xff09;政策导向的影响 &#xff08;二&#xff09;企业如何把握政策机遇推动创新发展 二、技术创新与产业升级 三、数字经济与数字化转型 四、国际合作与竞争态势 五、行业人才培养与科技创新 &#xff08;一&a…

论文阅读——RemoteCLIP

RemoteCLIP: A Vision Language Foundation Model for Remote Sensing 摘要——通用基础模型在人工智能领域变得越来越重要。虽然自监督学习&#xff08;SSL&#xff09;和掩蔽图像建模&#xff08;MIM&#xff09;在构建此类遥感基础模型方面取得了有希望的结果&#xff0c;但…

相机安装位置固定后开始调试设备供电公司推荐使用方法

摄像头安装位置固定后开始调试 设备供电&#xff1a;无电源设备需要连接12V/2A电源并连接到摄像机的DC端口&#xff0c;而有电源的摄像机可以直接连接到220V电源。 连接设备&#xff1a;如果是有线连接&#xff0c;请使用网线将设备连接到电脑&#xff08;建议直接连接&#…

hcia复习总结7

1&#xff0c;AR2发送2.0网段的信息给AR1&#xff0c;如果&#xff0c;AR1本身并不存在该网段的路由 信息&#xff0c;则将直接 刷新 到本地的路由表中。 Destination/Mask Proto Pre Cost Flags NextHop Interface 2.2.2.0/24 RIP 100…

【LeetCode热题100】54. 螺旋矩阵

一.题目要求 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 二.题目难度 中等 三.输入样例 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例…

C语言葵花宝典之——文件操作

前言&#xff1a; 在之前的学习中&#xff0c;我们所写的C语言程序总是在运行结束之后&#xff0c;就会自动销毁&#xff0c;那如果我们想将一个结果进行长期存储应该如何操作呢&#xff1f;这时候就需要我们用文件来操作。 目录 1、什么是文件&#xff1f; 1.1 程序文件 1.2…

PyTorch学习笔记之激活函数篇(一)

文章目录 1、Sigmoid函数1.1 公式1.2 对应图像1.2 生成图像代码1.4 优点与不足1.5 torch.sigmoid()函数 1、Sigmoid函数 1.1 公式 Sigmoid函数的公式&#xff1a; f ( x ) 1 1 e − x f(x) \frac{1}{1e^{-x}} f(x)1e−x1​ Sigmoid函数的导函数&#xff1a; f ′ ( x ) e …