assemblyLanguage

前言

汇编语言是用助记符,符号和数字等来表示指令的程序设计语言,它与机器语言指令是一一对应的

  • 不同内核的CPU,必须有对应的汇编语言编译器将汇编语言编写的程序编译成对应CPU的机器语言代码,CPU才能正确识别和执行这些代码;不同架构的CPU的汇编指令集并不相同
  • 汇编的本质就是在(寄存器和寄存器)或 (寄存器和内存)之间来回move 数据.
    汇编程序员可以使用指令来读写CPU中的寄存器,从而实现对于CPU的控制
    

8086的寻址方式

  • 8086是用“基础地址(段地址×16) + 偏移地址 = 物理地址”的方式给出物理地址
  • 基于寻址方式,产生了段寄存器
     CS ―― 代码寄存器 
     DS ―― 数据寄存器  
     SS ―― 堆栈寄存器  
     ES ――  附加段器 
    

  • IP,FLAG 属于控制器
     IP――指令指针寄存器(Instruction Pointer),指示要执行指令所在存储单元的地址;IP寄存器是一个专用寄存器。
     FLAG――状态标志,只要控制内存是否溢出
    
  • 通用指令
    AX――累加器(Accumulator),使用频度最高,效率最高 
    BX――基址寄存器(Base Register),常存放存储器地址
    CX――计数器(Count Register),常作为计数器
    DX――数据寄存器(Data Register),存放数据
    SI――源变址寄存器(Source Index),常保存存储单元地址
    DI――目的变址寄存器(Destination Index),常保存存储单元地址
    BP――基址指针寄存器(Base Pointer),表示堆栈区域中的基地址
    SP――堆栈指针寄存器(Stack Pointer),指示堆栈区域的栈顶地址
    
  • 为了向下兼容 数据寄存器分为高8位和低8位
     AX 分为 AH ,AL(AH  表示高8位 ,AL  表示低8位)
    

常用指令

  • 常用指令
    (1)  数据传送指令:MOV/XCHG,PUSH/POP,LEA
    (2)  算数运算类指令:ADD/ADC/INC,SUB/SBB/DEC/CMP/NEG,MUL/IMUL,DIV/IDIV
    (3)  位操作类指令:AND/OR/XOR/NOT/TEST
    (4)  控制转移类指令:JMP/JCC/LOOP,CALL/RET,INT n
    (5)  处理机控制类指令:NOP
    

参考

  • iPhone ARM汇编架构
架构 设备
armv6 iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch
armv7 iPhone3GS, iPhone4, iPhone4S,iPad, iPad2, iPad3(The New iPad), iPad mini, iPod Touch 3G, iPod Touch4
armv7s iPhone5, iPhone5C, iPad4(iPad with Retina Display)
arm64 iPhone6s , iphone6s plus,iPhone6, iPhone6 plus,iPhone5S ,iPad Air, iPad mini2
  • APP/程序的执行过程

mach-o_execution:

  • 汇编码和机器码是1:1的关系

转载请注明: > assemblyLanguage

在操作过程或者文章有问题的话欢迎在 原文 里提问或指正。

赞赏支持

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少
最近的文章

iphoneDaemonTool

前言创建iPhone Daemon的例子iphone/tool 的编写 iphone/tool 创建 #$/opt/theos/bin/nic.pl NIC 2.0 - New Instance Creator[10.] iphone/tool layout文件夹下创建LaunchDaemons配置文件 devzkndeMacBook-Pro:LaunchDaemons devzkn$ echo "<?xml version="1.0"...…

iOSre继续阅读
更早的文章

Passionfruit

前言 我在使用Passionfruit 的时候,安装步骤碰到的问题是fatal error: ‘frida-core.h’ file not found,具体的请看Q&A。 安全审计的工具 我觉得iNalyzer 已经过时了,推荐这款Passionfruit; Passionfruit 通过frida注入代码到目标应用实现了个“动态分析iOS应用”的图形界面。Passionfruit 的实现原理Passionfruit 通过 frida 注入代码到目标应用实现功能,再通过 n...…

iOSre继续阅读
更多