170716 逆向-Smali文件信息及指令简析

本文深入解析Smali文件,包括包信息、内部类声明、寄存器使用以及成员变量的get和put指令。通过实例展示了如何获取和设置对象变量,并解释了在非静态和静态函数中参数寄存器的差异。明日计划将继续探讨安卓逆向知识。
摘要由CSDN通过智能技术生成

1625-5 王子昂 总结《2017年7月16日》 【连续第287天总结】
A. Smali文件深入
B.
包信息:
  .class public Lcom/aaaaa;
  .super Lcom/bbbbb;
  .source “ccccc.java”
  意思为:
  这是一个由ccccc.java编译得到的smali文件
  它是com.aaaaa这个package下的一个类
  继承自com.bbbbb这个类
声明信息:
  #annotations
  .annotation system Ldalvik/annotation/MemberClasses;
  value={
  Lcom/aaa$qqq;
  Lcom/aaa$www;
  }
  .end annotation
  这个声明是一个内部类的声明:aaa这个类有两个成员内部类:qqq和www
寄存器:
  本地寄存器用v表示,如v0,v1,v2…
  参数寄存器用p表示,如p0,p1,p2…
  特别注意的是p0不一定是函数的第一个参数,在非static函数中,p0代表this,p1表示第一个参数;
  而在static函数中p0表示第一个参数(因为JAVA的static方法中没有this方法)
成员变量指令简析:
  sget-object v0,Lcom/aaa;->ID:Ljava/lang/String;
    sget-object就是用来获取这个变量值并保存到紧接着的参数的寄存器中
    本例中它获取ID这个string类型的成员变量并放入v0这个寄存器中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值