zoukankan      html  css  js  c++  java
  • ARM 反汇编速成

    1、跳转指令

      B        无条件跳转

      BL      带链接的无条件跳转

      BX      带状态切换的无条件跳转

      BLX       带链接和状态切换的无条件跳转

      B  loc_地址

      BNE, BEQ

    2、存储器与寄存器交互数据指令(核心)

      存储器(主存,即内存)

      寄存器中放的数据:可以是字符串,可以是数,也可以是一个地址,它可以放各种类型的数据

      存储地址单元:地址(如0x00004000)与地址中存在的值

      

      LDR:从存储器中加载数据到寄存器    LoaD Register   <-  

      LDR  R8, [R9,#04]  R8为待加载数据的寄存器,加载值为 R9+0x4 指向的存储单元

      

      STR:将寄存器的数据存储到存储器    STore Register   ->

      STR  R8,[R9,#04]   R8寄存器的数据存储到 R9+0x04 指向的存储单元

      

      LDM:将存储器的数据加载到一个寄存器列表  LoaD Multiple  ->

      LDM  R0, {R1-R3}  将 R0 指向的存储单元的数据依次加载到 R1,R2,R3 寄存器

      STM:将一个寄存器列表的数据存储到指定的存储器  STore Multiple  <-

      

      PUSH:将寄存器值推入堆栈

      POP  :将堆栈值推出到寄存器

      SWP:将寄存器与存储器之间的数据进行交换

      SWP  R1,R1 [R0]  将 R1 寄存器与 R0 指向的存储单元的内容进行交换

      

    3、数据传送指令

      MOV:将立即数或寄存器的数据传送到目标寄存器  <-

      MOV  R0, #8   0x8数据传送给R0,相当于赋值

    4、数据算术运算指令

      <-

      ADD, SUB, MUL, DIV

      有符号,无符号运算:带进位运算

    5、数据逻辑运算指令

      与:AND

      或:ORR

      异或:EOR

      移位:实质是乘,除,类似于小数点移位,但相反。小数点左移,数变小;右移变大。逻辑移位,左移变大,右移变小,且按2的倍数进行,因为是2进制。

      LSL:逻辑左移 Logical Shift Left  <-

      LSR:逻辑右移 Logical Shift RIght ->

    6、比较指令

      CMP:比较

      CMP  R0  #0  R0寄存器中的值与0比较

      标志位:如z位,这个都可以在动态调试时,寄存器窗口看到

    7、其它指令

      协处理器指令:SWT(切换用户模式)

      伪指令:DCB

    8、寄存器寻址方式

      立即寻址:MOV  R0,#1234

      寄存器寻址:MOV R0,R1

      寄存器移位寻址:MOV  R0,R1,LSL  #2

      寄存器间接寻址:LDR R0,[R1]  将R1寄存器中的值作为地址,取出地址中的值赋值给R0

      寄存器间接基址偏移寻址:LDR  R0,[R1, #-4]  将R1寄存器的值减 0x4 的值作为地址,取出地址中的值给R0

    汇编:

      机器语言,高级语言的逆向

    分析和修改汇编指令:

      赋值、跳转、算术运算、移位运算、堆栈运算、内存读写指令、函数调用约定。 

    用户模式:

      不分组寄存器(R0-R7)

      分组寄存器(R8-R14)

    传递参数与返回值(Ro-R3)

    保存栈顶地址(R13/SP)

    保存函数的返回地址(R14/LR)

    程序计数器R15(PC)

    状态寄存器CPSR

    ARM处理器:

      ARM状态(执行32位对齐指令的ARM指令)

      Thumb状态(执行16位对齐的Thumb指令)

    补充:常用ARM指令集及汇编

    Link:https://www.cnblogs.com/farwish/p/15226741.html

  • 相关阅读:
    LINQ标准查询操作符及例子(转载)
    Winform Combox 下拉模糊匹配
    在RowDataBound事件中取值的几种方法 转载
    shell脚本作业练习题8.6
    7.31.... 简单的python代码
    shell 脚本——第一节课 bash的基本特性
    shell 脚本——第二节课 重定向和管道符
    730
    应用范例:解析 Yahoo 奇摩股市的各档股票资讯HtmlAgilityPack
    微软一个罕为人知的无敌命令
  • 原文地址:https://www.cnblogs.com/farwish/p/15226741.html
Copyright © 2011-2022 走看看