2016-08-26 9 views
2

Существует только одно логическое значение, которое мне нужно установить в значение false. Это значение затем возвращается при вызове этого метода. Но у меня нет опыта Смали, поэтому мне нужна помощь. Я декомпилировал apk как для java-кода (чтобы знать, что искать), так и для Smali (для редактирования и перекомпиляции). Вот метод в Java-код:Как установить boolean в false в методах в коде Smali

public PendingResult<Status> setMockMode(GoogleApiClient client, boolean isMockMode) { 
     return client.zzb(new C06163(this, client, isMockMode)); 
    } 

Я хочу изменить isMockMode в return к false, но его очень запутанным в smali. Вот smali код того же кода Java:

.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$3; 

    invoke-direct {v0, p0, p1, p2}, Lcom/google/android/gms/location/internal/zzd$3;-><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 для меня понять. Так что помогите пожалуйста :)

+0

@Vince Emigh, пожалуйста, помогите человеку, я знаю, что его услуга не очень хорошо работает. Нет никаких хороших гидов, чтобы начать изучать smali. И мне просто нужно отредактировать этот файл. –

ответ

2

Надеюсь, следующее пояснительно.

.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$3; 

    # 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$3;-><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 
+0

Спасибо мужчине и жаль, что я забыл выбрать его как ответ XD –