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这个寄存器中
170716 逆向-Smali文件信息及指令简析
最新推荐文章于 2023-02-16 13:00:48 发布
本文深入解析Smali文件,包括包信息、内部类声明、寄存器使用以及成员变量的get和put指令。通过实例展示了如何获取和设置对象变量,并解释了在非静态和静态函数中参数寄存器的差异。明日计划将继续探讨安卓逆向知识。
摘要由CSDN通过智能技术生成