【游戏基础】安卓手游逆向必须基础

本文介绍了学习安卓手游逆向所需的ARM汇编基础知识,重点讲解了arm寄存器的作用,如r0-r15的用途,并提到了使用IDA工具进行逆向工程的入门步骤。同时,涵盖了Thumb指令集和常见的arm汇编指令,如ldr,mov,str等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们知道android 的原生程序是运行于linux内核上的 ,并且处理器基于arm

那么我们想要学习安卓手游逆向就要学习arm汇编的基础知识,在安卓手游逆向的过程中我们使用最多的工具是IDA,同样我们要先学习IDA的使用

 

学习的前提是你已经掌握了一定的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不完全是),它们可以在常规操作中使用,来存储临时变量或地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

douluo998

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值