如何在 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