还是用之前写的一个实例,界面包含2个文本框,2个按钮,判断2个文本框中内容是否相等,相等返回成功,不等返回失败,使用apktool工具获取反编译后的smali文件,本实例中只包含3个smail文件,MainActivity.smail,MainActivity$1.smail,MainActivity$2.smail,其中1个为MainActivity.smail为MainActivity.java所对应的反编译代码,其它2个为内部类产生的代码。带$符合的说明都是内部类产生的类。
access$0由外部调用的合成方法。
.method static synthetic access$0(Lcom/example/testtwo/MainActivity;Ljava/lang/String;Ljava/lang/String;)
.locals 1
.parameter
.parameter
.parameter
.prologue
.line 12
invoke-direct {p0, p1, p2}, Lcom/example/testtwo/MainActivity;->checkSN(Ljava/lang/String;Ljava/lang/String;)Z
//添加注释,p0为本类成员,p1为参数1用户名信息,p2为参数2密码信息
move-result v0
return v0
.end method
成员方法判断校验和的代码
.method private checkSN(Ljava/lang/String;Ljava/lang/String;)Z
.locals 1
.parameter "userName"
.parameter "passWord"
.prologue
.line 14
invoke-virtual {p1, p2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
//调用判断2个string是否相等,下面是如果返回值为0则直接返回0,否则返回1。
move-result v0
if-eqz v0, :cond_0
.line 16
const/4 v0, 0x1
.line 18
:goto_0
return v0
:cond_0
const/4 v0, 0x0
access$0由外部调用的合成方法。
.method static synthetic access$0(Lcom/example/testtwo/MainActivity;Ljava/lang/String;Ljava/lang/String;)
.locals 1
.parameter
.parameter
.parameter
.prologue
.line 12
invoke-direct {p0, p1, p2}, Lcom/example/testtwo/MainActivity;->checkSN(Ljava/lang/String;Ljava/lang/String;)Z
//添加注释,p0为本类成员,p1为参数1用户名信息,p2为参数2密码信息
move-result v0
return v0
.end method
成员方法判断校验和的代码
.method private checkSN(Ljava/lang/String;Ljava/lang/String;)Z
.locals 1
.parameter "userName"
.parameter "passWord"
.prologue
.line 14
invoke-virtual {p1, p2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
//调用判断2个string是否相等,下面是如果返回值为0则直接返回0,否则返回1。
move-result v0
if-eqz v0, :cond_0
.line 16
const/4 v0, 0x1
.line 18
:goto_0
return v0
:cond_0
const/4 v0, 0x0