-1

Basically im trying to edit an .apk file, compile it backm, and run it on my phone. However i see its protected. Even if i try to install the original .apk file, i will get a message saying "the app is not installed from Play Store". So i searched the message on vscode and found it mentioned in this .smali file, but its kinda complicated for me to undestand. Here is the text:

.class final Lcom/casualino/base/commands/controllers/a$a$b;
.super Ljava/lang/Object;
.source "CheckEmulatorCommand.kt"

# interfaces
.implements Ljava/lang/Runnable;


# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
    value = Lcom/casualino/base/commands/controllers/a$a;->a(Z)V
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x18
    name = null
.end annotation


# instance fields
.field final synthetic a:Lcom/casualino/base/commands/controllers/a$a;


# direct methods
.method constructor <init>(Lcom/casualino/base/commands/controllers/a$a;)V
    .locals 0

    iput-object p1, p0, Lcom/casualino/base/commands/controllers/a$a$b;->a:Lcom/casualino/base/commands/controllers/a$a;

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method


# virtual methods
.method public final run()V
    .locals 9

    .line 1
    iget-object v0, p0, Lcom/casualino/base/commands/controllers/a$a$b;->a:Lcom/casualino/base/commands/controllers/a$a;

    iget-object v0, v0, Lcom/casualino/base/commands/controllers/a$a;->a:Lcom/casualino/base/commands/controllers/a;

    invoke-virtual {v0}, Lcom/casualino/base/commands/controllers/a;->c()Landroid/app/Activity;

    move-result-object v0

    const v1, 0x7f12001e

    invoke-virtual {v0, v1}, Landroid/app/Activity;->getString(I)Ljava/lang/String;

    move-result-object v0

    const-string v1, "activity.getString(R.string.STORE_PLACEHOLDER)"

    invoke-static {v0, v1}, Lkotlin/jvm/internal/i;->d(Ljava/lang/Object;Ljava/lang/String;)V

    .line 2
    sget-object v1, Lf/a/a/e/k;->a:Lf/a/a/e/k;

    iget-object v2, p0, Lcom/casualino/base/commands/controllers/a$a$b;->a:Lcom/casualino/base/commands/controllers/a$a;

    iget-object v2, v2, Lcom/casualino/base/commands/controllers/a$a;->a:Lcom/casualino/base/commands/controllers/a;

    invoke-virtual {v2}, Lcom/casualino/base/commands/controllers/a;->c()Landroid/app/Activity;

    move-result-object v2

    invoke-virtual {v2}, Landroid/app/Activity;->getApplicationContext()Landroid/content/Context;

    move-result-object v2

    const-string v3, "activity.applicationContext"

    invoke-static {v2, v3}, Lkotlin/jvm/internal/i;->d(Ljava/lang/Object;Ljava/lang/String;)V

    invoke-virtual {v1, v2}, Lf/a/a/e/k;->a(Landroid/content/Context;)Z

    move-result v1

    const-string v2, "java.lang.String.format(format, *args)"

    const/4 v3, 0x0

    const/4 v4, 0x1

    if-eqz v1, :cond_0

    .line 3
    sget-object v1, Lkotlin/jvm/internal/m;->a:Lkotlin/jvm/internal/m;

    iget-object v1, p0, Lcom/casualino/base/commands/controllers/a$a$b;->a:Lcom/casualino/base/commands/controllers/a$a;

    iget-object v1, v1, Lcom/casualino/base/commands/controllers/a$a;->a:Lcom/casualino/base/commands/controllers/a;

    invoke-virtual {v1}, Lcom/casualino/base/commands/controllers/a;->c()Landroid/app/Activity;

    move-result-object v1

    const v5, 0x7f120056

    invoke-virtual {v1, v5}, Landroid/app/Activity;->getString(I)Ljava/lang/String;

    move-result-object v1

    const-string v5, "activity.getString(R.str\u2026ge_NotInstalledFromStore)"

    invoke-static {v1, v5}, Lkotlin/jvm/internal/i;->d(Ljava/lang/Object;Ljava/lang/String;)V

    const/4 v5, 0x2

    new-array v6, v5, [Ljava/lang/Object;

    iget-object v7, p0, Lcom/casualino/base/commands/controllers/a$a$b;->a:Lcom/casualino/base/commands/controllers/a$a;

    iget-object v7, v7, Lcom/casualino/base/commands/controllers/a$a;->a:Lcom/casualino/base/commands/controllers/a;

    invoke-virtual {v7}, Lcom/casualino/base/commands/controllers/a;->c()Landroid/app/Activity;

    move-result-object v7

    const v8, 0x7f120009

    invoke-virtual {v7, v8}, Landroid/app/Activity;->getString(I)Ljava/lang/String;

    move-result-object v7

    aput-object v7, v6, v3

    aput-object v0, v6, v4

    invoke-static {v6, v5}, Ljava/util/Arrays;->copyOf([Ljava/lang/Object;I)[Ljava/lang/Object;

    move-result-object v3

    invoke-static {v1, v3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v1

    invoke-static {v1, v2}, Lkotlin/jvm/internal/i;->d(Ljava/lang/Object;Ljava/lang/String;)V

    goto :goto_0

    .line 4
    :cond_0
    sget-object v1, Lkotlin/jvm/internal/m;->a:Lkotlin/jvm/internal/m;

    iget-object v1, p0, Lcom/casualino/base/commands/controllers/a$a$b;->a:Lcom/casualino/base/commands/controllers/a$a;

    iget-object v1, v1, Lcom/casualino/base/commands/controllers/a$a;->a:Lcom/casualino/base/commands/controllers/a;

    invoke-virtual {v1}, Lcom/casualino/base/commands/controllers/a;->c()Landroid/app/Activity;

    move-result-object v1

    const v5, 0x7f12005b

    invoke-virtual {v1, v5}, Landroid/app/Activity;->getString(I)Ljava/lang/String;

    move-result-object v1

    const-string v5, "activity.getString(R.str\u2026essage_StoreNotInstalled)"

    invoke-static {v1, v5}, Lkotlin/jvm/internal/i;->d(Ljava/lang/Object;Ljava/lang/String;)V

    new-array v5, v4, [Ljava/lang/Object;

    aput-object v0, v5, v3

    invoke-static {v5, v4}, Ljava/util/Arrays;->copyOf([Ljava/lang/Object;I)[Ljava/lang/Object;

    move-result-object v3

    invoke-static {v1, v3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v1

    invoke-static {v1, v2}, Lkotlin/jvm/internal/i;->d(Ljava/lang/Object;Ljava/lang/String;)V

    .line 5
    :goto_0
    iget-object v2, p0, Lcom/casualino/base/commands/controllers/a$a$b;->a:Lcom/casualino/base/commands/controllers/a$a;

    iget-object v2, v2, Lcom/casualino/base/commands/controllers/a$a;->a:Lcom/casualino/base/commands/controllers/a;

    invoke-virtual {v2}, Lcom/casualino/base/commands/controllers/a;->c()Landroid/app/Activity;

    move-result-object v2

    new-instance v3, Lcom/casualino/base/commands/controllers/a$a$b$a;

    invoke-direct {v3, p0, v0, v1}, Lcom/casualino/base/commands/controllers/a$a$b$a;-><init>(Lcom/casualino/base/commands/controllers/a$a$b;Ljava/lang/String;Ljava/lang/String;)V

    invoke-virtual {v2, v3}, Landroid/app/Activity;->runOnUiThread(Ljava/lang/Runnable;)V

    return-void
.end method

Do any of you guys have an idea to disable the function that detects it?

Tedd
  • 1
  • Have you checked if the app uses [this way](https://stackoverflow.com/q/10809438/150978) to check if it has been installed from PlayStore? The posted code belongs to `CheckEmulatorCommand.kt` so I doubt that this is the correct class that performs the check. It simply checks if I get it correctly if PlayStore is installed. – Robert May 18 '22 at 15:42
  • Hi Robert, thanks for your reply! On line 3 on the mentioned file, 0x7f120056 was linked to the string from the error message ( ) and the string Please download %1$s from the official %2$s, or proceed to play on the website. . – Tedd May 18 '22 at 16:06
  • I would start by loading the app into Jadx. If it can decompile the presented method it is much easier to understand than smali code. Or you use the debugging feature of Jadx to check the app values at run-time. – Robert May 18 '22 at 16:11
  • ok, jadx made thing little more clear, but i cant edit in it. Am i? – Tedd May 18 '22 at 17:17

0 Answers0