美文网首页
iOS逆向-汇编(二)

iOS逆向-汇编(二)

作者: Stone_熊小叔 | 来源:发表于2017-11-02 14:39 被阅读0次

总线

  • 每一个CPU芯片都有许多管脚,这些管脚和总线相连,CPU通过总线跟外部器件进行交互
  • 总线:一根根导线的集合
  • 总线的分类
    • 地址总线
    • 数据总线
    • 控制总线


      2990730-c58c30d262903e7f.png
举个例子
2990730-bfac743167c4e554.png
  • 地址总线
    • 它的宽度决定了CPU的寻址能力
    • 8086的地址总线宽度是20,所以寻址能力是1M( 2^20 )
  • 数据总线
    • 它的宽度决定了CPU的单次数据传送量,也就是数据传送速度
    • 8086的数据总线宽度是16,所以单次最大传递2个字节的数据
  • 控制总线
    • 它的宽度决定了CPU对其他器件的控制能力、能有多少种控制

数据总线

  • 8088的数据总线宽度是8,8086的数据总线宽度是16,分别向内存中写入89D8H 如下图:注意:这里是16进制,后方的H是单词Hexadecimal的意思
8088.png 8086.png
做个小练习
  1. 一个CPU 的寻址能力为8KB,那么它的地址总线的宽度为____
  2. 8080,8088,80286,80386 的地址总线宽度分别为16根,20根,24根,32根.那么他们的寻址能力分别为多少____KB, ____MB,____MB,____GB?
  3. 8080,8088,8086,80286,80386 的数据总线宽度分别为8根,8根,16根,16根,32根.那么它们一次可以传输的数据为:____B,____B,____B,____B,____B,
  4. 从内存中读取1024字节的数据,8086至少要读____次,80386至少要读取____次.
答案
  1. 13 解:1kb =1024 10根 8= 2^ 3
    10+3=13根
  2. 64 1 16 4
    解:20根 = 1024*1024 = 1M
    24根 = 1M 2^4 = 16M
    16根 = 1kb * 2^6 = 64kb (10根=1kb)
    32根 2^30 == 1G ->>. 2^32 == 1G
    2^2 == 4G
    2^n-1
  3. 1 1 2 2 4
    解:1 Byte == 8 bit.
    即1B==8bit
    1KB== 1024 Byte
    1MB== 1024 *1024 Byte
    4.512 256
    解:1024 Byte *8 = 8192二进制位 /16根 =512
练习答案.png

内存

各类存储区的逻辑连接.png 各类存储器的逻辑连接-物理地址对应图.png 各类存储器的物理地址情况.png
  • 内存地址空间的大小受CPU地址总线宽度的限制。8086的地址总线宽度为20,可以定位2^20个不同的内存单元(内存地址范围0x00000~0xFFFFF),所以8086的内存空间大小为1MB
  • 0x00000~0x9FFFF:主存储器。可读可写
  • 0xA0000~0xBFFFF:向显存中写入数据,这些数据会被显卡输出到显示器。可读可写
  • 0xC0000~0xFFFFF:存储各种硬件\系统信息。只读

寄存器

内部部件之间由总线连接
CPU的典型构成.png
  • 对程序员来说,CPU中最主要部件是寄存器,可以通过改变寄存器的内容来实现对CPU的控制
  • 不同的CPU,寄存器的个数、结构是不相同的(8086是16位结构的CPU)
  • 8086有14个寄存器
    • 都是16位的寄存器
    • 可以存放2个字节
8086内部寄存器.png

通用寄存器

  • AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,称为通用寄存器(有时也有特定用途)

  • 通常,CPU会先将内存中的数据存储到通用寄存器中,然后再对通用寄存器中的数据进行运算

  • 假设内存中有块红色内存空间的值是3,现在想把它的值加1,并将结果存储到蓝色内存空间


    2990730-fbe646fa8c39a45f-2.png
    • CPU首先会将红色内存空间的值放到AX寄存器中:mov ax,红色内存空间
    • 然后让AX寄存器与1相加:add ax,1
    • 最后将值赋值给内存空间:mov 蓝色内存空间,ax
  • AX、BX、CX、DX这4个通用寄存器都是16位的,如下图所示


    2990730-d1848a1f7c5d26be.png
  • 上一代8086的寄存器都是8位的,为了保证兼容, AX、BX、CX、DX都可分为2个独立的8位寄存器来使用

    • H代表高位寄存器
    • L代表低位寄存器


      2990730-8ce4be6955fd524c.png
      2990730-33708f22d03230e3.png

字和字节

  • 在汇编的数据存储中,有2个比较常用的单位
    • 字节:byte,1个字节由8bit组成,可以存储在8位寄存器中
    • 字:word,1个字由2个字节组成,这2个字节分别称为字的高字节和低字节
  • 比如数据20000(4E20H,0100111000100000B),高字节的值是78,低字节的值是32


    2990730-720ba02cbedf1475.png
  • 1个字可以存在1个16位寄存器中,这个字的高字节、低字节分别存储在这个寄存器的高8位寄存器、低8位寄存器中

相关文章

  • iOS最新逆向进阶文章总汇!

    iOS 逆向 汇编相关iOS逆向:初识汇编[https://www.jianshu.com/p/777373e85...

  • ARM汇编基础(iOS逆向)

    ARM汇编基础 在逆向一个功能的时候,往往需要分析大量的汇编代码,在iOS逆向中,ARM汇编是必须掌握的语言,本文...

  • ARM汇编基础(iOS逆向)

    ARM汇编基础 在逆向一个功能的时候,往往需要分析大量的汇编代码,在iOS逆向中,ARM汇编是必须掌握的语言,本文...

  • iOS逆向-汇编(二)

    总线 每一个CPU芯片都有许多管脚,这些管脚和总线相连,CPU通过总线跟外部器件进行交互 总线:一根根导线的集合 ...

  • iOS汇编

    iOS逆向之旅(基础篇) — 汇编(一)— 汇编基础[https://www.jianshu.com/p/19a2...

  • IOS 逆向开发(二十一) 汇编-基础

    @[TOC](IOS 逆向开发(二十一) 汇编-基础) 1. 汇编简介 为啥要需要学习汇编? 大学都学习过汇编语言...

  • 逆向 越狱开发知识

    逆向、反汇编、越狱开发 、dylib 1.iOS逆向工程之Theos http://www.cnblogs.com...

  • iOS逆向之反汇编工具IDA的使用

    1、简介 反汇编工具把二进制文件作为输入,经过处理后输出这个文件的汇编代码。在iOS逆向中,常用的反汇编工具主要是...

  • iOS 逆向

    iOS安全攻防了解iOS 逆向, 需要了解汇编的知识Hook 钩子, 勾住某个方法, 从而修改方法的实现 逆向简介...

  • iOS逆向-汇编基础(二)

    002--函数本质 关于CPU的补充 寄存器 CPU除了有控制器、运算器还有寄存器。其中寄存器的作用就是进行数据的...

网友评论

      本文标题:iOS逆向-汇编(二)

      本文链接:https://www.haomeiwen.com/subject/xlsopxtx.html