公司法
当前位置: 首页 法律大全

arm汇编指令支持的指令类型(ARM汇编基础速成1ARM汇编以及汇编语言基础介绍)

时间:2023-05-27 作者: 小编 阅读量: 2 栏目名: 法律大全

无疑ARM架构已经成为了全世界主流而广泛的CPU架构。因此它拥有更多指令代码以及取址都是,但是寄存器比ARM的要少。复杂指令集处理器主要被应用在PC机,工作站以及服务器上。除了以上这些ARM与Intel间的差异,ARM自身也有很多版本。在系列教程中使用的样例都是在32位的ARMv6下运行的,所以相关解释也是主要依赖这个版本的。这些助记符一般是连续的三个字母,我们可以用这些助记符作为指令来编写程序。

arm汇编指令支持的指令类型?译者:arnow117预估稿费:200RMB,接下来我们就来聊聊关于arm汇编指令支持的指令类型?以下内容大家不妨参考一二希望能帮到您!

arm汇编指令支持的指令类型

译者:arnow117

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

写在前面


欢迎来到ARM汇编基础教程,这套教程是为了让你可以在ARM架构下进行漏洞利用打基础的。在我们能开始写ARM的shellcode以及构建ROP链之前,我们需要先学习相关的ARM汇编基础知识。

这些基础知识包括:

Part 1:ARM汇编介绍

Part 2:数据类型寄存器

Part 3: ARM指令集

Part 4: 内存相关指令:加载以及存储

Part 5:重复性加载及存储

Part 6: 分支和条件执行

Part 7:栈以及函数

为了能跟着这个系列教程动手实践,你可以准备一个ARM的运行环境。如果你没有ARM设备(比如说树莓派或者手机),你可以通过QEMU来创建一个,[教程在这]。如果你对于GDB调试的基础命令不熟悉的话,可以通过[这个]学习。在这篇教程中,我们的核心关注点为32位的ARM,相关的例子在ARMv6下编译。

为什么是ARM?


前面说过,本系列教程的核心目的,是为那些想学习在ARM架构下进行漏洞利用的人而准备。可以看看你身边,有多少设备是ARM架构的, 手机,路由器,以及IOT设备,很多都是ARM架构的。无疑ARM架构已经成为了全世界主流而广泛的CPU架构。所以我们面对的越来越多的安全问题,也都会是ARM架构下的,那么在这种架构下的开发以及漏洞利用,也会成为一种主流趋势。

我们在x86架构上进行了很多研究,而ARM可能是最简单的广泛使用的汇编语言。但是人们为什么不关注ARM呢?可能是在intel架构上可供漏洞利用的学习资料比ARM多得多吧。比如[Corelan Team]写的很棒的intel X86漏洞利用教程,旨在帮助我们可以更准确更高效的学习到关键的漏洞利用基础知识。如果你对于X86漏洞利用很感兴趣,那我觉得Corelan Team的教程是一个不错的选择。但是在我们这个系列里,我们要创造一本高效的ARM架构下的漏洞利用新手手册。

ARM VS. INTEL


ARM处理器Intel处理器有很多不同,但是最主要的不同怕是指令集了。Intel属于复杂指令集(CISC)处理器,有很多特性丰富的访问内存的复杂指令集。因此它拥有更多指令代码以及取址都是,但是寄存器比ARM的要少。复杂指令集处理器主要被应用在PC机,工作站以及服务器上。

ARM属于简单指令集(RISC)处理器,所以与复杂指令集先比,只有简单的差不多100条指令集,但会有更多的寄存器。与Intel不同,ARM的指令集仅仅操作寄存器或者是用于从内存的加载/储存过程,这也就是说,简单的加载/存储指令即可访问到内存。这意味着在ARM中,要对特定地址中存储的的32位值加一的话,仅仅需要从内存中加载到寄存器,加一,再从寄存器储存到内存即可。

简单的指令集既有好处也有坏处。一个好处就是代码的执行变得更快了。(RISC指令集允许通过缩短时钟周期来加速代码执行)。坏处就是更少的指令集也要求了编写代码时要更加注意指令间使用的关系以及约束。还有重要的一点,ARM架构有两种模式,ARM模式和Thumb模式。Thumb模式的代码只有2或者4字节。

ARM与X86的不同还体现在:

ARM中很多指令都可以用来做为条件执行的判断依据

X86与X64机器码使用小端格式

ARM机器码在版本3之前是小端。但是之后默认采用大端格式,但可以设置切换到小端。

除了以上这些ARM与Intel间的差异,ARM自身也有很多版本。本系列教程旨在尽力保持通用性的情况下来讲讲ARM的工作流程。而且当你懂得了这个形式,学习其他版本的也很容易了。在系列教程中使用的样例都是在32位的ARMv6下运行的,所以相关解释也是主要依赖这个版本的。

不同版本的ARM命名也是有些复杂:

写ARM汇编


在开始用ARM汇编做漏洞利用开发之前,还是需要先学习下基础的汇编语言知识的。为什么我们需要ARM汇编呢,用正常的变成语言写不够么?的确不够,因为如果我们想做逆向工程,或者理解相关二进制程序的执行流程,构建我们自己的ARM架构的shellcode,ROP链,以及调试ARM应用,这些都要求先懂得ARM汇编。当然你也不需要学习的太过深入,足够做逆向工作以及漏洞利用开发刚刚好。如果有些知识要求先了解一些背景知识,别担心,这些知识也会在本系列文章里面介绍到的。当然如果你想学习更多,也可以去本文末尾提供的相关链接学习。

ARM汇编,是一种更容易被人们接受的汇编语言。当然我们的计算机也不能直接运行汇编代码,还是需要编译成机器码的。通过编译工具链中as程序来将文件后缀为".s"的汇编代码编译成机器码。写完汇编代码后,一般保存后缀为".s"的文件,然后你需要用as编译以及用ld链接程序:

12$ as program.s -o program.o$ ld program.o -o program

汇编语言本质


让我们来看看汇编语言的底层本质。在最底层,只有电路的电信号。信号被格式化成可以变化的高低电平0V(off)或者5V(on)。但是通过电压变化来表述电路状态是繁琐的,所以用0和1来代替高低电平,也就有了二进制格式。由二进制序列组成的组合便是最小的计算机处理器工作单元了,比如下面的这句机器码序列就是例子。

11110 0001 1010 0000 0010 0000 0000 0001

看上去不错,但是我们还是不能记住这些组合的含义。所以,我们需要用助记符和缩写来帮助我们记住这些二进制组合。这些助记符一般是连续的三个字母,我们可以用这些助记符作为指令来编写程序。这种程序就叫做汇编语言程序。用以代表一种计算机的机器码的助记符集合就叫做这种计算机汇编语言。因此,汇编语言是人们用来编写程序的最底层语言。同时指令的操作符也有对应的助记符,比如:

1MOV R2, R1

现在我们知道了汇编程序是助记符的文本信息集合,我们需要将其转换成机器码。就像之前的,在[GNU Binutils]工程中提供了叫做as的工具。使用汇编工具去将汇编语言转换成机器码的过程叫做汇编(assembling)。

总结一下,在这篇中我们学习了计算机是通过由0101代表高低电平的机器码序列来进行运算的。我们可以使用机器码去让计算机做我们想让它做的事情。不过因为我们不能记住机器码,我们使用了缩写助记符来代表有相关功能的机器码,这些助记符的集合就是汇编语言。最后我们使用汇编器将汇编语言转换成机器可以理解的机器码。当然,在更高级别的语言编译生成机器码过程中,核心原理也是这个。

拓展阅读


1. [Whirlwind Tour of ARM Assembly.](http://www.coranac.com/tonc/text/asm.htm)

2. [ARM assembler in Raspberry Pi.](http://thinkingeek.com/arm-assembler-raspberry-pi/)

3. Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation by Bruce Dang, Alexandre Gazet, Elias Bachaalany and Sebastien Josse.

4. [ARM Reference Manual.](http://infocenter.arm.com/help/topic/com.arm.doc.dui0068b/index.html)

5. [Assembler User Guide.](http://www.keil.com/support/man/docs/armasm/default.htm)

    推荐阅读
  • 邵芃橙是什么电视剧(具体内容介绍如下)

    邵芃橙是什么电视剧邵芃橙,电视剧《我的真朋友》男主角,由邓伦饰演,被网友称为橙子哥哥。《我的真朋友》这是一部现代现实主义题材爱情剧,性格率真、待人处事掏心掏肺的程真真与一身纨绔子弟习气却隐瞒身份的爱与家总裁独生子邵芃橙,共同进入爱与家花园店成为房产销售新人,彼此搭档。

  • 中国移动流量转赠方法(中国移动流量转赠方法介绍)

    跟着小编一起来看一看吧!中国移动流量转赠方法打开移动掌上营业厅,使用注册的手机号登录,然后点击,每日签到。签到成功,每个月第一次签到都可以获得1G流量和100M流量,点击领取即可。签到领取的所有,流量都可以来记录里面查看,领取时间都可以看到额。也可以不激活,点击可以看到它也可以转赠给他人。

  • 懒人适合养什么狗(适合懒人家养的狗)

    1、一般来说,小型犬和不爱掉毛的犬是比较适合懒人饲养的,比如贵宾犬、蝴蝶犬、柯基犬、京巴、巴哥、法斗、约克夏、比熊犬、哈瓦那犬、松狮犬、吉娃娃等。

  • 一个人的气场强大意味着什么(一个人是否真的厉害)

    就拿老王来说吧,由于他处的阶级本身就不低,而且他已经40岁了,认识的人本就很多,所以,他识人辨人的能力自然要比一般人强很多。老王就是这样的一个人,住着豪宅,开着豪车,但他平时为人谦逊。举一个非常简单的例子,马云就具备这个特点,每当马云跟大家交谈的时候,想必大家都会觉得非常激动。就拿马云来说吧,你让他去拿下一个项目,想必他根本就不会把这件事情放在心上,因为这对于他来说简直太容易了。

  • 荷花竹和富贵竹区别 富贵竹和荷叶竹区别

    荷花竹与富贵竹有什么不同1、没有区别荷花竹和富贵竹没有区别,因为荷花竹就是富贵竹中的一类品种,也可以称为富贵竹。在施肥时还需要注意施肥量,以免荷花竹出现肥害。

  • 烫大卷需要打理吗(烫大卷之后该怎么打理呢)

    可是回到家里自己洗完头后在吹干,好像就没有什么卷度了。其实有好多人都会有这样的困惑。在这里要告诉大家一个怎样打理烫过大卷的头发。接下来就是等待了。大概15到20分钟差不多就干了取下毛巾同样擦点精油或者泡沫发蜡就好了。。、、是看着难、操作起来就很简单、、其实很多其它发型都可以用上面得方式打理。刚开始的时候有点不顺手、多试几次后就会慢慢熟练~好吧。希望上面得方法对大家在打理自己的头发时有所帮助~~

  • 东营垦利区未就业大学生生活补助申报地点及咨询电话

    垦利区未就业大学生生活补助申报地点:主管部门:垦利区公共就业和人才服务中心;咨询电话:0546-2521015;申报地点:垦利区广兴路民丰湖北岸政务服务大厅A区;补助对象及条件:2017年起,来东营市落户的国内普通高校全日制和经教育部学历学位认证的国(境)外高校毕业5年内的本科及以上学历未就业大学生。以下条件需同时具备:1.已落户东营市;2.在东营市未实现初次就业;3.在东营市登记失业且连续失业6个月以上。

  • 聪明人懂得言多必失(越是聪明的人越不会说这两句话)

    有些人不仅不会说话,还会说一些“蠢话”,让自己过得不顺遂。抱歉,不要把自己的没素质当率性真诚,更不要用他人的小心眼来掩饰你自己的没教养。就好比你和女友一起聊天,本来是想提醒她今天出门带伞,免得像昨天一样淋雨。有些话还真不是想说就能说。做人,要知道言多必失,说话之前多思考,才能减少说错话的几率。越是聪明的人,越知道要少说这2句“蠢话”,希望你也少说。

  • 关于黄继光的资料(有关黄继光的简介)

    1951年3月参加中国人民志愿军。1952年10月19日,在朝鲜上甘岭战役中,黄继光用胸膛堵住疯狂扫射的敌机枪眼英勇牺牲。中国人民志愿军给他追记特等功,追授“特级英雄”称号;所在部队追认他为党员;朝鲜民主主义人民共和国追授他“朝鲜民主主义人民共和国英雄”称号和金星奖章和一级国旗勋章。2019年9月25日,中央宣传部、中央组织部和中央军委政治工作部等联合授予黄继光“最美奋斗者”荣誉称号。

  • 描写秋天的词语素材(描写秋天的四字词语解释)

    指军纪严明,丝毫不侵犯人民的利益。旧时比喻不再受男子宠爱的女子。旧时比喻妇女遭丈夫遗弃。比喻通过某一迹象便可预测形势的发展变化。春秋无义战:春秋,指公元前722年到公元前481年我国西周的一段历史。春秋时代没有正义的战争。指农业生产的一般过程。