Android SO逆向学习教程

一般的android apk反编译这里就不多做说明了,以下教程讲的是so文件的逆向

我们用的手机大部分是ARM架构的

所以在学习前有必要了解下ARM

建议看下ARM入门教程,后面资料里有相关的pdf教程

第二章 NDK环境

第三章 初探ARM

ARM寄存器

MOV 指令

数值表示

ADD 指令

SUB指令

第四章 寻址方式

知识点

ARM 处理器寻址方式

移位指令:LSL、LSR、ASR、ROR、RRX

LDR/STR指令

LDM/STM 指令

立即寻址

多用于给寄存器赋值 e.g. mov r0,#100 r0=100

寄存器寻址

操作数在寄存器中,指令执行时直接在寄存器中取数据

MOV R0,R1                R0=R1

MOV R1,R2                 R1=R2

寄存器移位寻址

移位指令:LSL、LSR、ASR、ROR、RRX

常用:LSL 逻辑左移 (<<)

一般用法:LSL #2

逻辑左移乘方定律

如果 A=B<<n 则A=B*2^n

e.g.  MOV r0,r1,LSL #2      r0=r1*2^2 即r0=r1*4 常用于数组寻址,r1作下标

int a[5];   *(a+下标*4)

LDR指令

LDR用于从储存器(内存)加载数据到寄存器。

LDR{type}{cond} Rd,label{!}

LDRD{cond} Rd,Rd2,label{!}  (一次加载双字(64位)) {!}

是否将寻址结果写入寄存器中

type 取值:

B  无符号字节

SB 有符号字节

H 无符号半字

SH 有符号半字

label为内存地址

STR指令

将寄存器的值写入到内存

e.g.  STR R0,[R1]

LDM指令

LDM指令是批量从内存加载数据到寄存器列表

LDM{addr_mode}{cond} Rn{!} reglist

addr_mode类型。用于数据的存储和读取有一下几种情况:

                IA        每次传送后地址值加

                IB        每次传送前地址值加

                DA        每次传送后地址值减

                DB        每次传送前地址值减

对于堆栈操作有如下几种情况:

                FD        满递减堆栈

                ED        空递减堆栈

                FA        满递增堆栈

                EA        满递增堆栈

第五章 跳转指令

第六章 逆向表达式

第七章 流程控制语句逆向

第八章 函数的框架

第九章 数组和重定位

第十章 结构体链表逆向

好了,想要了解更多去下载吧

链接:https://pan.baidu.com/s/1UUAhc5V4fgD3R_-s6mo4Fw 
提取码:ujl7

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我是大咸鱼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值