硕士生
 
- 金币
- 3204
- 好评
- 35
- 信誉
- 97
|
本帖最后由 Tbs 于 2026-2-8 01:06 编辑
官方下载链接
打开App时,就要记得开始mt记录活动
看以上图片,所有活动包括高级版都是在xyz.tberghuis.floatingtimer.MainActivity类
打开这个类的时候就会发现有checkPremium方法
但是这个方法是由onCreate方法去调用的
意思打开应用就首先检查有没有购买高级版了。
再次看到checkPremium方法
看到了它还发起新的类方法去检查
这么说这一切都是有打开应用就要初始化检查有没有购买高级版了
接下来就是修改xyz.tberghuis.floatingtimer.MainActivity$checkPremium$1类的invokeSuspend方法就能实现破解高级版
以下是我修改好的官方版和修改版对比
复制如下代码,直接粘贴覆盖即可
- # classes3.dex
- .class final Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;
- .super Lkotlin/coroutines/jvm/internal/SuspendLambda;
- .source "MainActivity.kt"
- # interfaces
- .implements Lkotlin/jvm/functions/Function2;
- # annotations
- .annotation system Ldalvik/annotation/EnclosingMethod;
- value = Lxyz/tberghuis/floatingtimer/MainActivity;->checkPremium()V
- .end annotation
- .annotation system Ldalvik/annotation/InnerClass;
- accessFlags = 0x18
- name = null
- .end annotation
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "Lkotlin/coroutines/jvm/internal/SuspendLambda;",
- "Lkotlin/jvm/functions/Function2<",
- "Lkotlinx/coroutines/CoroutineScope;",
- "Lkotlin/coroutines/Continuation<",
- "-",
- "Lkotlin/Unit;",
- ">;",
- "Ljava/lang/Object;",
- ">;"
- }
- .end annotation
- .annotation runtime Lkotlin/Metadata;
- d1 = {
- "\u0000\n\n\u0000\n\u0002\u0010\u0002\n\u0002\u0018\u0002\u0010\u0000\u001a\u00020\u0001*\u00020\u0002H\n"
- }
- d2 = {
- "<anonymous>",
- "",
- "Lkotlinx/coroutines/CoroutineScope;"
- }
- k = 0x3
- mv = {
- 0x2,
- 0x1,
- 0x0
- }
- xi = 0x30
- .end annotation
- .annotation runtime Lkotlin/coroutines/jvm/internal/DebugMetadata;
- c = "xyz.tberghuis.floatingtimer.MainActivity$checkPremium$1"
- f = "MainActivity.kt"
- i = {
- 0x1
- }
- l = {
- 0x1b,
- 0x1c,
- 0x1f,
- 0x20
- }
- m = "invokeSuspend"
- n = {
- "purchased"
- }
- s = {
- "Z$0"
- }
- .end annotation
- # instance fields
- .field final synthetic $preferencesRepository:Lxyz/tberghuis/floatingtimer/data/PreferencesRepository;
- .field Z$0:Z
- .field label:I
- .field final synthetic this$0:Lxyz/tberghuis/floatingtimer/MainActivity;
- # direct methods
- .method constructor <init>(Lxyz/tberghuis/floatingtimer/MainActivity;Lxyz/tberghuis/floatingtimer/data/PreferencesRepository;Lkotlin/coroutines/Continuation;)V
- .registers 4
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "(",
- "Lxyz/tberghuis/floatingtimer/MainActivity;",
- "Lxyz/tberghuis/floatingtimer/data/PreferencesRepository;",
- "Lkotlin/coroutines/Continuation<",
- "-",
- "Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;",
- ">;)V"
- }
- .end annotation
- iput-object p1, p0, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->this$0:Lxyz/tberghuis/floatingtimer/MainActivity;
- iput-object p2, p0, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->$preferencesRepository:Lxyz/tberghuis/floatingtimer/data/PreferencesRepository;
- const/4 p1, 0x2
- invoke-direct {p0, p1, p3}, Lkotlin/coroutines/jvm/internal/SuspendLambda;-><init>(ILkotlin/coroutines/Continuation;)V
- return-void
- .end method
- # virtual methods
- .method public final create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
- .registers 5
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "(",
- "Ljava/lang/Object;",
- "Lkotlin/coroutines/Continuation<",
- "*>;)",
- "Lkotlin/coroutines/Continuation<",
- "Lkotlin/Unit;",
- ">;"
- }
- .end annotation
- new-instance p1, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;
- iget-object v0, p0, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->this$0:Lxyz/tberghuis/floatingtimer/MainActivity;
- iget-object v1, p0, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->$preferencesRepository:Lxyz/tberghuis/floatingtimer/data/PreferencesRepository;
- invoke-direct {p1, v0, v1, p2}, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;-><init>(Lxyz/tberghuis/floatingtimer/MainActivity;Lxyz/tberghuis/floatingtimer/data/PreferencesRepository;Lkotlin/coroutines/Continuation;)V
- check-cast p1, Lkotlin/coroutines/Continuation;
- return-object p1
- .end method
- .method public bridge synthetic invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
- .registers 3
- check-cast p1, Lkotlinx/coroutines/CoroutineScope;
- check-cast p2, Lkotlin/coroutines/Continuation;
- invoke-virtual {p0, p1, p2}, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
- move-result-object p1
- return-object p1
- .end method
- .method public final invoke(Lkotlinx/coroutines/CoroutineScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
- .registers 3
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "(",
- "Lkotlinx/coroutines/CoroutineScope;",
- "Lkotlin/coroutines/Continuation<",
- "-",
- "Lkotlin/Unit;",
- ">;)",
- "Ljava/lang/Object;"
- }
- .end annotation
- invoke-virtual {p0, p1, p2}, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->create(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
- move-result-object p1
- check-cast p1, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;
- sget-object p2, Lkotlin/Unit;->INSTANCE:Lkotlin/Unit;
- invoke-virtual {p1, p2}, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
- move-result-object p1
- return-object p1
- .end method
- .method public final invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;
- .registers 8
- invoke-static {}, Lkotlin/coroutines/intrinsics/IntrinsicsKt;->getCOROUTINE_SUSPENDED()Ljava/lang/Object;
- move-result-object v0
- iget v1, p0, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->label:I
- const/4 v2, 0x4
- const/4 v3, 0x3
- const/4 v4, 0x2
- const/4 v5, 0x1
- if-eqz v1, :cond_2f
- if-eq v1, v5, :cond_2b
- if-eq v1, v4, :cond_25
- if-eq v1, v3, :cond_21
- if-ne v1, v2, :cond_19
- invoke-static {p1}, Lkotlin/ResultKt;->throwOnFailure(Ljava/lang/Object;)V
- goto/16 :goto_73
- :cond_19
- new-instance p1, Ljava/lang/IllegalStateException;
- const-string v0, "call to \'resume\' before \'invoke\' with coroutine"
- invoke-direct {p1, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
- throw p1
- :cond_21
- invoke-static {p1}, Lkotlin/ResultKt;->throwOnFailure(Ljava/lang/Object;)V
- goto :goto_65
- :cond_25
- iget-boolean v1, p0, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->Z$0:Z
- invoke-static {p1}, Lkotlin/ResultKt;->throwOnFailure(Ljava/lang/Object;)V
- goto :goto_44
- :cond_2b
- invoke-static {p1}, Lkotlin/ResultKt;->throwOnFailure(Ljava/lang/Object;)V
- goto :goto_34
- :cond_2f
- invoke-static {p1}, Lkotlin/ResultKt;->throwOnFailure(Ljava/lang/Object;)V
- const/4 v1, 0x1
- goto :goto_34
- .line 27
- :goto_34
- iget-object p1, p0, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->$preferencesRepository:Lxyz/tberghuis/floatingtimer/data/PreferencesRepository;
- move-object v5, p0
- check-cast v5, Lkotlin/coroutines/Continuation;
- iput-boolean v1, p0, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->Z$0:Z
- iput v4, p0, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->label:I
- invoke-virtual {p1, v1, v5}, Lxyz/tberghuis/floatingtimer/data/PreferencesRepository;->updateHaloColourPurchased(ZLkotlin/coroutines/Continuation;)Ljava/lang/Object;
- move-result-object p1
- if-ne p1, v0, :cond_44
- goto :goto_72
- :cond_44
- :goto_44
- new-instance p1, Ljava/lang/StringBuilder;
- const-string v4, "MainActivity checkPremium purchased "
- invoke-direct {p1, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
- invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
- move-result-object p1
- invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
- move-result-object p1
- invoke-static {p1}, Lxyz/tberghuis/floatingtimer/UtilKt;->logd(Ljava/lang/String;)V
- goto :goto_73
- iget-object p1, p0, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->$preferencesRepository:Lxyz/tberghuis/floatingtimer/data/PreferencesRepository;
- move-object v1, p0
- check-cast v1, Lkotlin/coroutines/Continuation;
- iput v3, p0, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->label:I
- invoke-virtual {p1, v1}, Lxyz/tberghuis/floatingtimer/data/PreferencesRepository;->resetHaloColour(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
- move-result-object p1
- if-ne p1, v0, :cond_65
- goto :goto_72
- :cond_65
- :goto_65
- iget-object p1, p0, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->$preferencesRepository:Lxyz/tberghuis/floatingtimer/data/PreferencesRepository;
- move-object v1, p0
- check-cast v1, Lkotlin/coroutines/Continuation;
- iput v2, p0, Lxyz/tberghuis/floatingtimer/MainActivity$checkPremium$1;->label:I
- invoke-virtual {p1, v1}, Lxyz/tberghuis/floatingtimer/data/PreferencesRepository;->resetBubbleScale(Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
- move-result-object p1
- if-ne p1, v0, :cond_73
- :goto_72
- return-object v0
- :cond_73
- :goto_73
- sget-object p1, Lkotlin/Unit;->INSTANCE:Lkotlin/Unit;
- return-object p1
- sget-object p1, Lkotlin/Unit;->INSTANCE:Lkotlin/Unit;
- return-object p1
- .end method
复制代码
破解版下载
↓↓↓↓
成品下载
还有这个软件的国际版破解高级版,就直接复制invokeSuspend方法粘贴覆盖即可(切记!不用全部复制,只要invokeSuspend方法就行)
修改后如下
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|