iOS逆向基础篇--汇编

2018-04-21  本文已影响0人  hello_iOS程序媛

逆向开发是建立在分析二进制指令上面,二进制指令与汇编语言一一对应。通过分析app二进制反汇编的汇编语言来推测逻辑,最后达到高级代码还原。

汇编语言的发展

机器语言

由0和1组成的机器指令.

汇编语言(assembly language)

使用助记符代替机器语言
如: mov x0,#0xa0
汇编编译器器将汇编语言转换为机器码

高级语言(High-level programming language)

C\C++\Java\OC\Swift,更加接近人类的自然语言
比如C语言: int a = b;
高级语言的编译器将高级语言转换为汇编语言

我们的代码在终端设备上是这样的过程:


高级语言--汇编语言--机器语言

汇编语言的种类

架构 设备
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 iPhone5S 以后 iPhoneX , iPad Air, iPad mini2以后

几个必要的常识

要想学好汇编,首先需要了解CPU等硬件结构
APP/程序的执行过程

APP/程序的执行过程

总线

内存

各类存储区的逻辑连接 各类存储器的逻辑连接-物理地址对应图 各类存储器的物理地址情况

数据的宽度

数学上的数字,是没有大小限制的,可以无限的大。但在计算机中,由于受硬件的制约,数据都是有长度限制的(我们称为数据宽度),超过最多宽度的数据会被丢弃。

int a = 0X1ffffffff;
超过最多宽度的数据被丢弃
上一篇下一篇

猜你喜欢

热点阅读