鑫郁飞

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 526|回复: 0

任鸟飞安卓手游逆向----arm汇编寄存器

[复制链接]

管理员

Rank: 9Rank: 9Rank: 9

阅读权限
200
积分
109503
精华
71
主题
156
帖子
176
分享
0
日志
0
在线时间
57 小时
最后登录
2018-7-19
注册时间
2016-11-22
听众
0
收听
0
发表于 2017-12-4 13:40:10 | 显示全部楼层 |阅读模式
微信公众号:任鸟飞逆向
以后会更新多个系列的文章和视频
游戏安全,手游逆向,app开发,c++,游戏开发,任鸟飞谈逆向等等
欢迎大家的建议以及投稿
2018.4实地培训火热报名中 报名联系QQ:2217777779 名额有限可能会提前结束招生


我们知道android 的原生程序是运行于linux内核上的 ,并且处理器基于arm
那么我们想要学习安卓手游逆向就要学习arm汇编的基础知识

学习的前提是你已经掌握了一定的0x86汇编基础,在0x86汇编基础上对比学习即可,如果没有一定的端游逆向基础,可以回去看看我之前的端游逆向基础
arm 寄存器
1.r0 函数返回值 ,对应eax的作用
2.arm函数约定中r0-r3来传递参数,多于4个参数再用push传递参数 ,对    应fastcall函数约定寄存器传参以及push 传参,不过寄存器传参数量      不同
3.r4-r11 来保存局部变量,进入更内层函数时一样要保存,出来前还原,       对应0x86堆栈指针表示的局部变量,以及进更内层函数push ebp
  Thumb 指令集 通常只是r4-r7 来保存局部变量
(ARM模式每条指令4字节,Thumb模式每条指令2字节)
  那么Thumb 指令集是什么呢?Thumb 指令可以看作是 ARM 指令       压缩形式的子集,是针对代码密度的问题而提出的,它具有 16 位的代码   密度但是它不如ARM指令的效率高

4.r12既ip寄存器是内部调用暂存寄存器

5.r13既sp寄存器是栈顶指针,它不能用于任何其它用途,对应esp寄存器

6.r14既lr寄存器,保存函数的返回地址,也可以用作他用,对应[ebp+4]里    存放的返回EIP,调用函数时,自动把返回地址放入r14中,例如                  BLxxxx(对应call xxxx) 子程序通过把r14复制到PC(对应EIP)来    实现返回
    例如: MOV PC, LR 或则 BX LR

7.r15 pc 是程序计数器,它不能用于任何其它用途,对应EIP
   arm是流水线优化,pc和EIP不完全相同,EIP时刻指向准备执行的代码    地址 而PC值=当前程序执行位置+8 Thumb模式下等于当前指令地      址加4,因为流水线优化,有3个过程,取指,译指,执行,PC指向取指的代      码,PC-4指向译指的代码,PC-8指向译指的代码

8.r16 CPSR  当前程序状态寄存器   助记符后面跟的S 就是影响这个寄    存器  例如add 和 adds ,adds就是影响状态寄存器的操作,而add不      影响

9.r7 常用于保存系统调用号

10.r11  FP  用于保存栈帧  对应EBP 但是由于返回地址不用EBP负责,      这个寄存器很多时候用做通用寄存器 对应0x86 地位明显降低

11.R0~R12是通用寄存器(R11,R12不完全是),它们可以在常规操        作中使用,来存储临时变量或地址。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|鑫郁飞网络科技有限公司 ( 渝ICP备16011958号-1 )

GMT+8, 2018-7-21 00:19 , Processed in 0.059906 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表