• 64阅读
  • 1回复

任鸟飞安卓手游逆向----arm汇编寄存器 [复制链接]

上一主题 下一主题
离线任鸟飞
 

微信公众号:任鸟飞逆向
以后会更新多个系列的文章和视频
游戏安全,手游逆向,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不完全是),它们可以在常规操作中使用,来存储临时变量或地址。
离线retn

只看该作者 沙发  发表于: 12-04
支持下.什么时候分析下神武3游戏内存数据?
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个