android 逆向工程-工具篇 IDA pro入门(七)

注:自行网上下载IDA pro

我安装好的IDA 包含64和32两个版本,经测试 32位支持伪代码,可以F5对照C语言等进行更方便的分析。

用IDA pro打开一个so文件


展示如下(F5查看伪代码)

  • IDA View-A是反汇编窗口
  • HexView-A是十六进制格式显示的窗口
  • Imports是导入表(程序中调用到的外面的函数)
  • Functions是函数表(这个程序中的函数)
  • Structures是结构
  • Enums是枚举
IDA View-A

这里会有流程图(按回车进行切换),判断是执行绿色,判断否执行红色,蓝色为一个执行块。

分析
先展示些ARM汇编的基础
寄存器
  • R0-R3:用于函数参数及返回值的传递
  • R4-R6, R8,R10-R11:没有特殊规定,就是普通的通用寄存器
  • R7:栈帧指针(Frame Pointer).指向前一个保存的栈帧(stack frame)和链接寄存器(link register, lr)在栈上的地址。
  • R9:操作系统保留
  • R12:又叫IP(intra-procedure scratch)
  • R13:又叫SP(stack pointer),是栈顶指针
  • R14:又叫LR(link register),存放函数的返回地址。
  • R15:又叫PC(program counter),指向当前指令地址。
  • CPSR:当前程序状态寄存器(Current Program State Register),在用户状态下存放像condition标志中断禁用等标志的。
  • VFP:(向量浮点运算)相关的寄存器
基本的指令
  • add 加指令
  • sub 减指令
  • str 把寄存器内容存到栈上去
  • ldr 把栈上内容载入一寄存器中
  • .w是一个可选的指令宽度说明符。它不会影响为此指令的行为,它只是确保生成 32 位指令。
  • bl 执行函数调用,并把使lr指向调用者(caller)的下一条指令,即函数的返回地址
  • blx 同上,但是在ARM和thumb指令集间切换。
  • bx bx lr返回调用函数(caller)。
  • bne 数据跳转指令,标志寄存器中Z标志位不等于零时, 跳转到BNE后标签处。
  • CMP 比较命令
  • 无条件跳转
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

二蛋和他的大花

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

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

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

打赏作者

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

抵扣说明:

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

余额充值