硕士生
 
- 金币
- 3203
- 好评
- 35
- 信誉
- 97
|
下载
要会员
打开s5.b类,第一个is_premium_user
会员判断代码:
- .line 65
- const-string p1, "is_premium_user"
- .line 67
- invoke-interface {v0, p1, v1}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z
- .line 70
- move-result p1
- .line 71
- if-eqz p1, :cond_4b
复制代码
直接改成如下这样(加入赋值强制永远是会员):
- .line 65
- const-string p1, "is_premium_user"
- .line 67
- invoke-interface {v0, p1, v1}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z
- .line 70
- move-result p1
- # 强行改成已付费会员
- const/4 p1, 0x1
- .line 71
- if-eqz p1, :cond_4b
复制代码
然后再把这个s5.b类的核心校验方法 d() 固定死
把整个 .method public final d(Ljava/util/List;)V 删掉,换成下面这段,就是彻底无视所有购买校验了:
- .method public final d(Ljava/util/List;)V
- .registers 4
- # 强制写入永久会员
- iget-object v0, p0, Ls5/b;->c:Landroid/content/SharedPreferences;
- invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor;
- move-result-object v1
- const-string v2, "is_premium_user"
- const/4 v3, 0x1
- invoke-interface {v1, v2, v3}, Landroid/content/SharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor;
- invoke-interface {v1}, Landroid/content/SharedPreferences$Editor;->apply()V
- return-void
- .end method
复制代码
保存 → 回编译 → 签名,安装后如下图直接就是会员
不懂,我也提供整段s5.b类代码,复制粘贴就行了
- # classes3.dex
- .class public final Ls5/b;
- .super Ljava/lang/Object;
- .source "SourceFile"
- # interfaces
- .implements Ld1/m;
- .implements Landroid/app/Application$ActivityLifecycleCallbacks;
- .implements Ld1/b;
- # static fields
- .field public static final o:Lcom/google/gson/internal/e;
- .field public static volatile p:Ls5/b;
- # instance fields
- .field public final c:Landroid/content/SharedPreferences;
- .field public d:Ljava/util/AbstractCollection;
- .field public e:Ljava/util/AbstractCollection;
- .field public f:Ljava/lang/Object;
- .field public final g:LB7/X;
- .field public final h:LB7/K;
- .field public i:I
- .field public final j:J
- .field public k:J
- .field public final l:Ld1/a;
- .field public final m:Ls5/a;
- .field public final n:Ls5/a;
- # direct methods
- .method static constructor <clinit>()V
- .registers 2
- .line 1
- new-instance v0, Lcom/google/gson/internal/e;
- .line 3
- const/16 v1, 0x15
- .line 5
- invoke-direct {v0, v1}, Lcom/google/gson/internal/e;-><init>(I)V
- .line 8
- sput-object v0, Ls5/b;->o:Lcom/google/gson/internal/e;
- .line 10
- return-void
- .end method
- .method public constructor <init>(Landroid/app/Application;)V
- .registers 9
- .line 1
- invoke-direct {p0}, Ljava/lang/Object;-><init>()V
- .line 4
- const-string v0, "com.teejay.trebedit"
- .line 6
- const/4 v1, 0x0
- .line 7
- invoke-virtual {p1, v0, v1}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;
- .line 10
- move-result-object v0
- .line 11
- iput-object v0, p0, Ls5/b;->c:Landroid/content/SharedPreferences;
- .line 13
- sget-object v2, Ld7/p;->c:Ld7/p;
- .line 15
- iput-object v2, p0, Ls5/b;->f:Ljava/lang/Object;
- .line 17
- sget-object v2, Ls5/d;->d:Ls5/d;
- .line 19
- invoke-static {v2}, LB7/P;->b(Ljava/lang/Object;)LB7/X;
- .line 22
- move-result-object v3
- .line 23
- iput-object v3, p0, Ls5/b;->g:LB7/X;
- .line 25
- new-instance v4, LB7/K;
- .line 27
- invoke-direct {v4, v3}, LB7/K;-><init>(LB7/I;)V
- .line 30
- iput-object v4, p0, Ls5/b;->h:LB7/K;
- .line 32
- const-wide/16 v4, 0x3a98
- .line 34
- iput-wide v4, p0, Ls5/b;->j:J
- .line 36
- new-instance v4, Ld1/a;
- .line 38
- invoke-direct {v4, p1, p0}, Ld1/a;-><init>(Landroid/content/ContextWrapper;Ld1/m;)V
- .line 41
- iput-object v4, p0, Ls5/b;->l:Ld1/a;
- .line 43
- new-instance v5, Ls5/a;
- .line 45
- const/4 v6, 0x0
- .line 46
- invoke-direct {v5, p0, v6}, Ls5/a;-><init>(Ls5/b;I)V
- .line 49
- iput-object v5, p0, Ls5/b;->m:Ls5/a;
- .line 51
- new-instance v5, Ls5/a;
- .line 53
- const/4 v6, 0x1
- .line 54
- invoke-direct {v5, p0, v6}, Ls5/a;-><init>(Ls5/b;I)V
- .line 57
- iput-object v5, p0, Ls5/b;->n:Ls5/a;
- .line 59
- invoke-virtual {v4, p0}, Ld1/a;->g(Ld1/b;)V
- .line 62
- invoke-virtual {p1, p0}, Landroid/app/Application;->registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V
- .line 65
- const-string p1, "is_premium_user"
- .line 67
- invoke-interface {v0, p1, v1}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z
- .line 70
- move-result p1
- const/4 p1, 0x1
- .line 71
- if-eqz p1, :cond_4c
- .line 73
- sget-object v2, Ls5/c;->c:Ls5/c;
- .line 75
- goto :goto_55
- .line 76
- :cond_4c
- invoke-virtual {p0}, Ls5/b;->c()Lt5/b;
- .line 79
- move-result-object p1
- .line 80
- if-nez p1, :cond_53
- .line 82
- goto :goto_55
- .line 83
- :cond_53
- sget-object v2, Ls5/d;->c:Ls5/d;
- .line 85
- :goto_55
- const/4 p1, 0x0
- .line 86
- invoke-virtual {v3, p1, v2}, LB7/X;->g(Ljava/lang/Object;Ljava/lang/Object;)Z
- .line 89
- return-void
- .end method
- # virtual methods
- .method public final a(LO3/a;)V
- .registers 3
- .line 1
- const-string v0, "billingResult"
- .line 3
- invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->e(Ljava/lang/Object;Ljava/lang/String;)V
- .line 6
- iget p1, p1, LO3/a;->b:I
- .line 8
- if-nez p1, :cond_12
- .line 10
- invoke-virtual {p0}, Ls5/b;->e()V
- .line 13
- invoke-virtual {p0}, Ls5/b;->f()V
- .line 16
- const/4 p1, 0x0
- .line 17
- iput p1, p0, Ls5/b;->i:I
- .line 19
- :cond_12
- return-void
- .end method
- .method public final b(LO3/a;Ljava/util/List;)V
- .registers 4
- .line 1
- const-string v0, "billingResult"
- .line 3
- invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->e(Ljava/lang/Object;Ljava/lang/String;)V
- .line 6
- invoke-virtual {p0, p2}, Ls5/b;->d(Ljava/util/List;)V
- .line 9
- return-void
- .end method
- .method public final c()Lt5/b;
- .registers 4
- .line 1
- iget-object v0, p0, Ls5/b;->c:Landroid/content/SharedPreferences;
- .line 3
- const-string v1, "premium_subscription_status_json"
- .line 5
- const/4 v2, 0x0
- .line 6
- invoke-interface {v0, v1, v2}, Landroid/content/SharedPreferences;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
- .line 9
- move-result-object v0
- .line 10
- if-eqz v0, :cond_17
- .line 12
- :try_start_b
- new-instance v1, Lcom/google/gson/i;
- .line 14
- invoke-direct {v1}, Lcom/google/gson/i;-><init>()V
- .line 17
- invoke-virtual {v1, v0}, Lcom/google/gson/i;->b(Ljava/lang/String;)Ljava/lang/Object;
- .line 20
- move-result-object v0
- .line 21
- check-cast v0, Lt5/b;
- :try_end_16
- .catch Lcom/google/gson/q; {:try_start_b .. :try_end_16} :catch_17
- .line 23
- return-object v0
- .line 24
- :catch_17
- :cond_17
- return-object v2
- .end method
- .method public final d(Ljava/util/List;)V
- .registers 4
- iget-object v0, p0, Ls5/b;->c:Landroid/content/SharedPreferences;
- invoke-interface {v0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor;
- move-result-object v1
- const-string p0, "is_premium_user"
- const/4 p1, 0x1
- invoke-interface {v1, p0, p1}, Landroid/content/SharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor;
- invoke-interface {v1}, Landroid/content/SharedPreferences$Editor;->apply()V
- return-void
- .end method
- .method public final e()V
- .registers 5
- .line 1
- const-string v0, "fff"
- .line 3
- iget-object v1, p0, Ls5/b;->l:Ld1/a;
- .line 5
- invoke-virtual {v1, v0}, Ld1/a;->b(Ljava/lang/String;)LO3/a;
- .line 8
- move-result-object v0
- .line 9
- iget v0, v0, LO3/a;->b:I
- .line 11
- if-nez v0, :cond_e
- .line 13
- const/4 v0, 0x1
- .line 14
- goto :goto_f
- .line 15
- :cond_e
- const/4 v0, 0x0
- .line 16
- :goto_f
- iget-object v2, p0, Ls5/b;->n:Ls5/a;
- .line 18
- const-string v3, "inapp"
- .line 20
- if-eqz v0, :cond_29
- .line 22
- new-instance v0, LC0/a;
- .line 24
- invoke-direct {v0}, Ljava/lang/Object;-><init>()V
- .line 27
- iput-object v3, v0, LC0/a;->c:Ljava/lang/String;
- .line 29
- invoke-virtual {v0}, LC0/a;->d()LB0/f;
- .line 32
- move-result-object v0
- .line 33
- invoke-virtual {v1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
- .line 36
- iget-object v0, v0, LB0/f;->d:Ljava/lang/String;
- .line 38
- invoke-virtual {v1, v0, v2}, Ld1/a;->l(Ljava/lang/String;Ld1/l;)V
- .line 41
- return-void
- .line 42
- :cond_29
- invoke-virtual {v1, v3, v2}, Ld1/a;->l(Ljava/lang/String;Ld1/l;)V
- .line 45
- return-void
- .end method
- .method public final f()V
- .registers 5
- .line 1
- const-string v0, "fff"
- .line 3
- iget-object v1, p0, Ls5/b;->l:Ld1/a;
- .line 5
- invoke-virtual {v1, v0}, Ld1/a;->b(Ljava/lang/String;)LO3/a;
- .line 8
- move-result-object v0
- .line 9
- iget v0, v0, LO3/a;->b:I
- .line 11
- if-nez v0, :cond_e
- .line 13
- const/4 v0, 0x1
- .line 14
- goto :goto_f
- .line 15
- :cond_e
- const/4 v0, 0x0
- .line 16
- :goto_f
- iget-object v2, p0, Ls5/b;->m:Ls5/a;
- .line 18
- const-string v3, "subs"
- .line 20
- if-eqz v0, :cond_29
- .line 22
- new-instance v0, LC0/a;
- .line 24
- invoke-direct {v0}, Ljava/lang/Object;-><init>()V
- .line 27
- iput-object v3, v0, LC0/a;->c:Ljava/lang/String;
- .line 29
- invoke-virtual {v0}, LC0/a;->d()LB0/f;
- .line 32
- move-result-object v0
- .line 33
- invoke-virtual {v1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
- .line 36
- iget-object v0, v0, LB0/f;->d:Ljava/lang/String;
- .line 38
- invoke-virtual {v1, v0, v2}, Ld1/a;->l(Ljava/lang/String;Ld1/l;)V
- .line 41
- return-void
- .line 42
- :cond_29
- invoke-virtual {v1, v3, v2}, Ld1/a;->l(Ljava/lang/String;Ld1/l;)V
- .line 45
- return-void
- .end method
- .method public final onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V
- .registers 3
- .line 1
- const-string p2, "activity"
- invoke-static {p1, p2}, Lkotlin/jvm/internal/k;->e(Ljava/lang/Object;Ljava/lang/String;)V
- return-void
- .end method
- .method public final onActivityDestroyed(Landroid/app/Activity;)V
- .registers 3
- .line 1
- const-string v0, "activity"
- invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->e(Ljava/lang/Object;Ljava/lang/String;)V
- return-void
- .end method
- .method public final onActivityPaused(Landroid/app/Activity;)V
- .registers 3
- .line 1
- const-string v0, "activity"
- invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->e(Ljava/lang/Object;Ljava/lang/String;)V
- return-void
- .end method
- .method public final onActivityResumed(Landroid/app/Activity;)V
- .registers 8
- .line 1
- const-string v0, "activity"
- .line 3
- invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->e(Ljava/lang/Object;Ljava/lang/String;)V
- .line 6
- invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
- .line 9
- move-result-wide v0
- .line 10
- iget-wide v2, p0, Ls5/b;->k:J
- .line 12
- sub-long v2, v0, v2
- .line 14
- iget-wide v4, p0, Ls5/b;->j:J
- .line 16
- cmp-long p1, v2, v4
- .line 18
- if-lez p1, :cond_27
- .line 20
- iput-wide v0, p0, Ls5/b;->k:J
- .line 22
- iget-object p1, p0, Ls5/b;->l:Ld1/a;
- .line 24
- invoke-virtual {p1}, Ld1/a;->c()Z
- .line 27
- move-result v0
- .line 28
- if-nez v0, :cond_21
- .line 30
- invoke-virtual {p1, p0}, Ld1/a;->g(Ld1/b;)V
- .line 33
- return-void
- .line 34
- :cond_21
- invoke-virtual {p0}, Ls5/b;->f()V
- .line 37
- invoke-virtual {p0}, Ls5/b;->e()V
- .line 40
- :cond_27
- return-void
- .end method
- .method public final onActivitySaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V
- .registers 4
- .line 1
- const-string v0, "activity"
- invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->e(Ljava/lang/Object;Ljava/lang/String;)V
- const-string p1, "outState"
- invoke-static {p2, p1}, Lkotlin/jvm/internal/k;->e(Ljava/lang/Object;Ljava/lang/String;)V
- return-void
- .end method
- .method public final onActivityStarted(Landroid/app/Activity;)V
- .registers 3
- .line 1
- const-string v0, "activity"
- invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->e(Ljava/lang/Object;Ljava/lang/String;)V
- return-void
- .end method
- .method public final onActivityStopped(Landroid/app/Activity;)V
- .registers 3
- .line 1
- const-string v0, "activity"
- invoke-static {p1, v0}, Lkotlin/jvm/internal/k;->e(Ljava/lang/Object;Ljava/lang/String;)V
- return-void
- .end method
- .method public final onBillingServiceDisconnected()V
- .registers 3
- .line 1
- iget v0, p0, Ls5/b;->i:I
- .line 3
- const/4 v1, 0x2
- .line 4
- if-ge v0, v1, :cond_e
- .line 6
- add-int/lit8 v0, v0, 0x1
- .line 8
- iput v0, p0, Ls5/b;->i:I
- .line 10
- iget-object v0, p0, Ls5/b;->l:Ld1/a;
- .line 12
- invoke-virtual {v0, p0}, Ld1/a;->g(Ld1/b;)V
- .line 15
- :cond_e
- return-void
- .end method
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
-
查看全部评分
总评分:金币 +1
|