
汇编
JafarOne
iOS开发者
Android开发者
React-Native开发者
移动安全攻防
展开
-
寄存器
不同的CPU,寄存器的结构和个数是不同的。ARM64有31个64位的寄存器,x0~x30,通常用来存放一般性的数据,被称为通用寄存器。w0~w28是32位的寄存器,因为64位是兼容32位的,所以可以使用64位寄存器的低32位,w0就是x0的低32位。通常CPU会将内存中的数据存储在寄存器中,然后对通用寄存器中的数据进行计算。mov只是读取内存的值,但是不会对内存中的值进行修...原创 2018-04-23 23:10:32 · 971 阅读 · 0 评论 -
状态寄存器
测试状态寄存器也称之为标记寄存器,其实都是一个东西。那么这个标记寄存器可以很方便的帮助我们进行破解,那么怎么破解呢?俗称暴力破解先看断点处的汇编代码:发现cpsr的地址为16进制:0x80000000那么 0x80000000的二进制是多少呢?0x1000 0000 0000那么我想把此寄存器地址改为 0x0100 0000 0000 怎...原创 2018-05-06 22:53:30 · 8348 阅读 · 0 评论 -
循环&选择
cmp(Compare)比较指令 CMP 把一个寄存器的内容和另一个寄存器的内容或立即数进行比较。但不存储结果,只是正确的更改标志。 一般CMP做完判断后会进行跳转,后面通常会跟上B指令!BL 标号:跳转到标号处执行B.GT 标号:比较结果是大于(greater than),执行标号,否则不跳转B.GE 标号:比较结果是大于等于(greater than or equ...原创 2018-05-12 13:58:14 · 307 阅读 · 0 评论 -
还原高级代码
通过Main函数一段代码来测试#import <UIKit/UIKit.h>#import "AppDelegate.h"int glabel = 12;int func(int a,int b) { printf("haha"); return a + b + glabel;}int main(int argc, char * argv[]) {...原创 2018-05-12 11:18:56 · 764 阅读 · 0 评论 -
栈
栈栈:是一种具有特殊的访问方式的存储空间(后进先出, Last In Out Firt,LIFO)SP和FP寄存器sp寄存器在任意时刻会保存我们栈顶的地址.fp寄存器也称为x29寄存器属于通用寄存器,但是在某些时刻我们利用它保存栈底的地址!() 注意:ARM64开始,取消32位的 LDM,STM,PUSH,POP指令! 取而代之的是ldr\ldp str\st...原创 2018-04-25 22:38:58 · 508 阅读 · 0 评论 -
CPU与内存
寻址能力决定了什么?决定了你需要多大的内存条,也就是你的CPU一定要和内存条相匹配。如果CPU地址很低,装了很大的内存条,那么发挥不出应有的性能。64位CPU就有64个总线。...原创 2018-04-20 00:19:48 · 476 阅读 · 0 评论 -
函数的参数和返回值
函数的参数和返回值ARM64下,函数的参数是存放在X0到X7(W0到W7)这8个寄存器里面的.如果超过8个参数,就会入栈. 函数的返回值是放在X0 寄存器里面的.模拟函数的参数和返回值//// main.m// 5.1huibian//// Created by 贾元发 on 2018/5/1.// Copyright © 2018年 贾元发. All ...原创 2018-05-01 18:47:52 · 606 阅读 · 0 评论 -
汇编初识
安装在手机上的App本质是可执行的二进制文件由CPU执行汇编语言的发展机器语言由0和1组成的机器指令汇编语言:使用助记符代理机器语言。高级语言:Object、Swift、Java等汇编语言种类8086汇编Win32 Win64 ARM汇编 (嵌入式、Mac、iOS )CPU硬件结构App的执行过程...原创 2018-04-19 23:57:44 · 275 阅读 · 0 评论 -
函数的本质
关于CPU的补充寄存器CPU除了有控制器、运算器还有寄存器。其中寄存器的作用就是进行数据的临时存储。 CPU的运算速度是非常快的,为了性能CPU在内部开辟一小块临时存储区域,并在进行运算时先将数据从内存复制到这一小块临时存储区域中,运算时就在这一小快临时存储区域内进行。我们称这一小块临时存储区域为寄存器。对于arm64系的CPU来说, 如果寄存器以x开头则表明的是一个64...原创 2018-04-23 23:54:20 · 801 阅读 · 0 评论 -
内存分区
代码区可读可写可执行栈区 放参数和局部变量 也是可读可写堆区域 可读可写 动态申请 全局变量区域 可读可写 常量区域 所谓只读 逆向可读可写 因为都是IDE的限制而已...原创 2018-05-07 18:10:57 · 212 阅读 · 0 评论