如何在 Smali 代码的方法中将布尔值设置为 false
How to set boolean to false in methods in Smali code
我只需要将一个布尔值设置为 false。然后在调用此方法时返回此值。但我没有 Smali 的经验,所以我需要帮助。我将 apk 反编译为 java 代码(以了解要查找的内容)和 Smali(以编辑和重新编译)。这是 java 代码中的方法:
public PendingResult<Status> setMockMode(GoogleApiClient client, boolean isMockMode) {
return client.zzb(new C06163(this, client, isMockMode));
}
我想将 return
中的 isMockMode
更改为 false
但是在 smali 中它非常混乱。这是相同 java 代码的 smali 代码:
.method public setMockMode(Lcom/google/android/gms/common/api/GoogleApiClient;Z)Lcom/google/android/gms/common/api/PendingResult;
.locals 1
.parameter "client"
.parameter "isMockMode"
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/gms/common/api/GoogleApiClient;",
"Z)",
"Lcom/google/android/gms/common/api/PendingResult",
"<",
"Lcom/google/android/gms/common/api/Status;",
">;"
}
.end annotation
.prologue
new-instance v0, Lcom/google/android/gms/location/internal/zzd;
invoke-direct {v0, p0, p1, p2}, Lcom/google/android/gms/location/internal/zzd;-><init>(Lcom/google/android/gms/location/internal/zzd;Lcom/google/android/gms/common/api/GoogleApiClient;Z)V
invoke-virtual {p1, v0}, Lcom/google/android/gms/common/api/GoogleApiClient;->zzb(Lcom/google/android/gms/internal/zzlb$zza;)Lcom/google/android/gms/internal/zzlb$zza;
move-result-object v0
return-object v0
.end method
Smali 中的代码太复杂了,我无法理解。所以请帮忙:)
希望以下内容不言自明。
.method public setMockMode(Lcom/google/android/gms/common/api/GoogleApiClient;Z)Lcom/google/android/gms/common/api/PendingResult;
# change here 1 -> 2 to allow for another local variable v1
.locals 2
.prologue
new-instance v0, Lcom/google/android/gms/location/internal/zzd;
# add this line: v1 = 0; 0 is 'false'
const/4 v1, 0x0
# pass v1, which is set to 'false', instead of p2 containing isMockMode
invoke-direct {v0, p0, p1, v1}, Lcom/google/android/gms/location/internal/zzd;-><init>(Lcom/google/android/gms/location/internal/zzd;Lcom/google/android/gms/common/api/GoogleApiClient;Z)V
invoke-virtual {p1, v0}, Lcom/google/android/gms/common/api/GoogleApiClient;->zzb(Lcom/google/android/gms/internal/zzlb$zza;)Lcom/google/android/gms/internal/zzlb$zza;
move-result-object v0
return-object v0
.end method
我只需要将一个布尔值设置为 false。然后在调用此方法时返回此值。但我没有 Smali 的经验,所以我需要帮助。我将 apk 反编译为 java 代码(以了解要查找的内容)和 Smali(以编辑和重新编译)。这是 java 代码中的方法:
public PendingResult<Status> setMockMode(GoogleApiClient client, boolean isMockMode) {
return client.zzb(new C06163(this, client, isMockMode));
}
我想将 return
中的 isMockMode
更改为 false
但是在 smali 中它非常混乱。这是相同 java 代码的 smali 代码:
.method public setMockMode(Lcom/google/android/gms/common/api/GoogleApiClient;Z)Lcom/google/android/gms/common/api/PendingResult;
.locals 1
.parameter "client"
.parameter "isMockMode"
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/gms/common/api/GoogleApiClient;",
"Z)",
"Lcom/google/android/gms/common/api/PendingResult",
"<",
"Lcom/google/android/gms/common/api/Status;",
">;"
}
.end annotation
.prologue
new-instance v0, Lcom/google/android/gms/location/internal/zzd;
invoke-direct {v0, p0, p1, p2}, Lcom/google/android/gms/location/internal/zzd;-><init>(Lcom/google/android/gms/location/internal/zzd;Lcom/google/android/gms/common/api/GoogleApiClient;Z)V
invoke-virtual {p1, v0}, Lcom/google/android/gms/common/api/GoogleApiClient;->zzb(Lcom/google/android/gms/internal/zzlb$zza;)Lcom/google/android/gms/internal/zzlb$zza;
move-result-object v0
return-object v0
.end method
Smali 中的代码太复杂了,我无法理解。所以请帮忙:)
希望以下内容不言自明。
.method public setMockMode(Lcom/google/android/gms/common/api/GoogleApiClient;Z)Lcom/google/android/gms/common/api/PendingResult;
# change here 1 -> 2 to allow for another local variable v1
.locals 2
.prologue
new-instance v0, Lcom/google/android/gms/location/internal/zzd;
# add this line: v1 = 0; 0 is 'false'
const/4 v1, 0x0
# pass v1, which is set to 'false', instead of p2 containing isMockMode
invoke-direct {v0, p0, p1, v1}, Lcom/google/android/gms/location/internal/zzd;-><init>(Lcom/google/android/gms/location/internal/zzd;Lcom/google/android/gms/common/api/GoogleApiClient;Z)V
invoke-virtual {p1, v0}, Lcom/google/android/gms/common/api/GoogleApiClient;->zzb(Lcom/google/android/gms/internal/zzlb$zza;)Lcom/google/android/gms/internal/zzlb$zza;
move-result-object v0
return-object v0
.end method