b.smali
.class public Lz7/b;
.super Ljava/lang/Object;
.source "RootBeer.java"
# instance fields
.field public final a:Landroid/content/Context;
.field public b:Z
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Landroid/content/Context;)V
.registers 3
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, 0x1
iput-boolean v0, p0, Lz7/b;->b:Z
iput-object p1, p0, Lz7/b;->a:Landroid/content/Context;
return-void
.end method
# virtual methods
.method public a()Z
.registers 2
new-instance v0, Lcom/scottyab/rootbeer/RootBeerNative;
invoke-direct {v0}, Lcom/scottyab/rootbeer/RootBeerNative;-><init>()V
invoke-virtual {v0}, Lcom/scottyab/rootbeer/RootBeerNative;->a()Z
move-result v0
return v0
.end method
.method public a(Ljava/lang/String;)Z
.registers 9
sget-object v0, Lz7/a;->c:[Ljava/lang/String;
array-length v1, v0
const/4 v2, 0x0
const/4 v3, 0x0
:goto_5
if-ge v2, v1, :cond_3b
aget-object v4, v0, v2
new-instance v5, Ljava/lang/StringBuilder;
invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
new-instance v6, Ljava/io/File;
invoke-direct {v6, v4, p1}, Ljava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V
invoke-virtual {v6}, Ljava/io/File;->exists()Z
move-result v4
if-eqz v4, :cond_38
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v4, " binary detected!"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-static {v3}, La8/a;->b(Ljava/lang/Object;)V
const/4 v3, 0x1
:cond_38
add-int/lit8 v2, v2, 0x1
goto :goto_5
:cond_3b
return v3
.end method
.method public final a(Ljava/util/List;)Z
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"Ljava/lang/String;",
">;)Z"
}
.end annotation
iget-object v0, p0, Lz7/b;->a:Landroid/content/Context;
invoke-virtual {v0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
move-result-object v0
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p1
const/4 v1, 0x0
const/4 v2, 0x0
:goto_c
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-eqz v3, :cond_33
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
check-cast v3, Ljava/lang/String;
:try_start_18
invoke-virtual {v0, v3, v1}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v4, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v3, " ROOT management app detected!"
invoke-virtual {v4, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-static {v3}, La8/a;->a(Ljava/lang/Object;)V
:try_end_2f
.catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_18 .. :try_end_2f} :catch_31
const/4 v2, 0x1
goto :goto_c
:catch_31
nop
goto :goto_c
:cond_33
return v2
.end method
.method public a([Ljava/lang/String;)Z
.registers 4
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
sget-object v1, Lz7/a;->b:[Ljava/lang/String;
invoke-static {v1}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->addAll(Ljava/util/Collection;)Z
if-eqz p1, :cond_1a
array-length v1, p1
if-lez v1, :cond_1a
invoke-static {p1}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
move-result-object p1
invoke-virtual {v0, p1}, Ljava/util/ArrayList;->addAll(Ljava/util/Collection;)Z
:cond_1a
invoke-virtual {p0, v0}, Lz7/b;->a(Ljava/util/List;)Z
move-result p1
return p1
.end method
.method public b()Z
.registers 12
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
const-string v1, "ro.debuggable"
const-string v2, "1"
invoke-interface {v0, v1, v2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
const-string v1, "ro.secure"
const-string v2, "0"
invoke-interface {v0, v1, v2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
invoke-virtual {p0}, Lz7/b;->l()[Ljava/lang/String;
move-result-object v1
const/4 v2, 0x0
if-nez v1, :cond_1b
return v2
:cond_1b
array-length v3, v1
const/4 v4, 0x0
:goto_1d
if-ge v2, v3, :cond_7e
aget-object v5, v1, v2
invoke-interface {v0}, Ljava/util/Map;->keySet()Ljava/util/Set;
move-result-object v6
invoke-interface {v6}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v6
:cond_29
:goto_29
invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z
move-result v7
if-eqz v7, :cond_7b
invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v7
check-cast v7, Ljava/lang/String;
invoke-virtual {v5, v7}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v8
if-eqz v8, :cond_29
invoke-interface {v0, v7}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v8
check-cast v8, Ljava/lang/String;
new-instance v9, Ljava/lang/StringBuilder;
invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
const-string v10, "["
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v9, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v8, "]"
invoke-virtual {v9, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v8
invoke-virtual {v5, v8}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v9
if-eqz v9, :cond_29
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v4, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v7, " = "
invoke-virtual {v4, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v4, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v7, " detected!"
invoke-virtual {v4, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-static {v4}, La8/a;->b(Ljava/lang/Object;)V
const/4 v4, 0x1
goto :goto_29
:cond_7b
add-int/lit8 v2, v2, 0x1
goto :goto_1d
:cond_7e
return v4
.end method
.method public b([Ljava/lang/String;)Z
.registers 4
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
sget-object v1, Lz7/a;->a:[Ljava/lang/String;
invoke-static {v1}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->addAll(Ljava/util/Collection;)Z
if-eqz p1, :cond_1a
array-length v1, p1
if-lez v1, :cond_1a
invoke-static {p1}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
move-result-object p1
invoke-virtual {v0, p1}, Ljava/util/ArrayList;->addAll(Ljava/util/Collection;)Z
:cond_1a
invoke-virtual {p0, v0}, Lz7/b;->a(Ljava/util/List;)Z
move-result p1
return p1
.end method
.method public c()Z
.registers 2
const-string v0, "magisk"
invoke-virtual {p0, v0}, Lz7/b;->a(Ljava/lang/String;)Z
move-result v0
return v0
.end method
.method public d()Z
.registers 17
invoke-virtual/range {p0 .. p0}, Lz7/b;->k()[Ljava/lang/String;
move-result-object v0
const/4 v1, 0x0
if-nez v0, :cond_8
return v1
:cond_8
array-length v2, v0
const/4 v3, 0x0
const/4 v4, 0x0
:goto_b
if-ge v3, v2, :cond_7d
aget-object v5, v0, v3
const-string v6, " "
invoke-virtual {v5, v6}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v6
array-length v7, v6
const/4 v8, 0x4
if-ge v7, v8, :cond_2e
new-instance v6, Ljava/lang/StringBuilder;
invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
const-string v7, "Error formatting mount line: "
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
invoke-static {v5}, La8/a;->a(Ljava/lang/Object;)V
goto :goto_79
:cond_2e
const/4 v7, 0x1
aget-object v8, v6, v7
const/4 v9, 0x3
aget-object v6, v6, v9
sget-object v9, Lz7/a;->d:[Ljava/lang/String;
array-length v10, v9
const/4 v11, 0x0
:goto_38
if-ge v11, v10, :cond_79
aget-object v12, v9, v11
invoke-virtual {v8, v12}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v13
if-eqz v13, :cond_74
const-string v13, ","
invoke-virtual {v6, v13}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v13
array-length v14, v13
const/4 v15, 0x0
:goto_4a
if-ge v15, v14, :cond_74
aget-object v1, v13, v15
const-string v7, "rw"
invoke-virtual {v1, v7}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_6f
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v1, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v4, " path is mounted with rw permissions! "
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v1}, La8/a;->b(Ljava/lang/Object;)V
const/4 v4, 0x1
goto :goto_74
:cond_6f
add-int/lit8 v15, v15, 0x1
const/4 v1, 0x0
const/4 v7, 0x1
goto :goto_4a
:cond_74
:goto_74
add-int/lit8 v11, v11, 0x1
const/4 v1, 0x0
const/4 v7, 0x1
goto :goto_38
:cond_79
:goto_79
add-int/lit8 v3, v3, 0x1
const/4 v1, 0x0
goto :goto_b
:cond_7d
return v4
.end method
.method public e()Z
.registers 7
invoke-virtual {p0}, Lz7/b;->a()Z
move-result v0
const/4 v1, 0x0
if-nez v0, :cond_d
const-string v0, "We could not load the native library to test for root"
invoke-static {v0}, La8/a;->a(Ljava/lang/Object;)V
return v1
:cond_d
sget-object v0, Lz7/a;->c:[Ljava/lang/String;
array-length v0, v0
new-array v2, v0, [Ljava/lang/String;
const/4 v3, 0x0
:goto_13
if-ge v3, v0, :cond_2f
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
sget-object v5, Lz7/a;->c:[Ljava/lang/String;
aget-object v5, v5, v3
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v5, "su"
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
aput-object v4, v2, v3
add-int/lit8 v3, v3, 0x1
goto :goto_13
:cond_2f
new-instance v0, Lcom/scottyab/rootbeer/RootBeerNative;
invoke-direct {v0}, Lcom/scottyab/rootbeer/RootBeerNative;-><init>()V
:try_start_34
iget-boolean v3, p0, Lz7/b;->b:Z
invoke-virtual {v0, v3}, Lcom/scottyab/rootbeer/RootBeerNative;->setLogDebugMessages(Z)I
invoke-virtual {v0, v2}, Lcom/scottyab/rootbeer/RootBeerNative;->checkForRoot([Ljava/lang/Object;)I
move-result v0
:try_end_3d
.catch Ljava/lang/UnsatisfiedLinkError; {:try_start_34 .. :try_end_3d} :catch_40
if-lez v0, :cond_40
const/4 v1, 0x1
:catch_40
:cond_40
return v1
.end method
.method public f()Z
.registers 6
const/4 v0, 0x0
const/4 v1, 0x0
:try_start_2
invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime;
move-result-object v2
const-string v3, "which"
const-string v4, "su"
filled-new-array {v3, v4}, [Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/Runtime;->exec([Ljava/lang/String;)Ljava/lang/Process;
move-result-object v1
new-instance v2, Ljava/io/BufferedReader;
new-instance v3, Ljava/io/InputStreamReader;
invoke-virtual {v1}, Ljava/lang/Process;->getInputStream()Ljava/io/InputStream;
move-result-object v4
invoke-direct {v3, v4}, Ljava/io/InputStreamReader;-><init>(Ljava/io/InputStream;)V
invoke-direct {v2, v3}, Ljava/io/BufferedReader;-><init>(Ljava/io/Reader;)V
invoke-virtual {v2}, Ljava/io/BufferedReader;->readLine()Ljava/lang/String;
move-result-object v2
:try_end_24
.catchall {:try_start_2 .. :try_end_24} :catchall_2d
if-eqz v2, :cond_27
const/4 v0, 0x1
:cond_27
if-eqz v1, :cond_2c
invoke-virtual {v1}, Ljava/lang/Process;->destroy()V
:cond_2c
return v0
:catchall_2d
nop
if-eqz v1, :cond_33
invoke-virtual {v1}, Ljava/lang/Process;->destroy()V
:cond_33
return v0
.end method
.method public g()Z
.registers 2
const/4 v0, 0x0
invoke-virtual {p0, v0}, Lz7/b;->a([Ljava/lang/String;)Z
move-result v0
return v0
.end method
.method public h()Z
.registers 2
const/4 v0, 0x0
invoke-virtual {p0, v0}, Lz7/b;->b([Ljava/lang/String;)Z
move-result v0
return v0
.end method
.method public i()Z
.registers 3
sget-object v0, Landroid/os/Build;->TAGS:Ljava/lang/String;
if-eqz v0, :cond_e
const-string v1, "test-keys"
invoke-virtual {v0, v1}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_e
const/4 v0, 0x1
goto :goto_f
:cond_e
const/4 v0, 0x0
:goto_f
return v0
.end method
.method public j()Z
.registers 2
invoke-virtual {p0}, Lz7/b;->h()Z
move-result v0
if-nez v0, :cond_3b
invoke-virtual {p0}, Lz7/b;->g()Z
move-result v0
if-nez v0, :cond_3b
const-string v0, "su"
invoke-virtual {p0, v0}, Lz7/b;->a(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_3b
invoke-virtual {p0}, Lz7/b;->b()Z
move-result v0
if-nez v0, :cond_3b
invoke-virtual {p0}, Lz7/b;->d()Z
move-result v0
if-nez v0, :cond_3b
invoke-virtual {p0}, Lz7/b;->i()Z
move-result v0
if-nez v0, :cond_3b
invoke-virtual {p0}, Lz7/b;->f()Z
move-result v0
if-nez v0, :cond_3b
invoke-virtual {p0}, Lz7/b;->e()Z
move-result v0
if-nez v0, :cond_3b
invoke-virtual {p0}, Lz7/b;->c()Z
move-result v0
if-eqz v0, :cond_39
goto :goto_3b
:cond_39
const/4 v0, 0x0
goto :goto_3c
:cond_3b
:goto_3b
const/4 v0, 0x1
:goto_3c
return v0
.end method
.method public final k()[Ljava/lang/String;
.registers 4
const/4 v0, 0x0
:try_start_1
invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime;
move-result-object v1
const-string v2, "mount"
invoke-virtual {v1, v2}, Ljava/lang/Runtime;->exec(Ljava/lang/String;)Ljava/lang/Process;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Process;->getInputStream()Ljava/io/InputStream;
move-result-object v1
if-nez v1, :cond_12
return-object v0
:cond_12
new-instance v2, Ljava/util/Scanner;
invoke-direct {v2, v1}, Ljava/util/Scanner;-><init>(Ljava/io/InputStream;)V
const-string v1, "\\A"
invoke-virtual {v2, v1}, Ljava/util/Scanner;->useDelimiter(Ljava/lang/String;)Ljava/util/Scanner;
move-result-object v1
invoke-virtual {v1}, Ljava/util/Scanner;->next()Ljava/lang/String;
move-result-object v1
const-string v2, "\n"
invoke-virtual {v1, v2}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v0
:try_end_27
.catch Ljava/io/IOException; {:try_start_1 .. :try_end_27} :catch_2a
.catch Ljava/util/NoSuchElementException; {:try_start_1 .. :try_end_27} :catch_28
return-object v0
:catch_28
move-exception v1
goto :goto_2b
:catch_2a
move-exception v1
:goto_2b
invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V
return-object v0
.end method
.method public final l()[Ljava/lang/String;
.registers 4
const/4 v0, 0x0
:try_start_1
invoke-static {}, Ljava/lang/Runtime;->getRuntime()Ljava/lang/Runtime;
move-result-object v1
const-string v2, "getprop"
invoke-virtual {v1, v2}, Ljava/lang/Runtime;->exec(Ljava/lang/String;)Ljava/lang/Process;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Process;->getInputStream()Ljava/io/InputStream;
move-result-object v1
if-nez v1, :cond_12
return-object v0
:cond_12
new-instance v2, Ljava/util/Scanner;
invoke-direct {v2, v1}, Ljava/util/Scanner;-><init>(Ljava/io/InputStream;)V
const-string v1, "\\A"
invoke-virtual {v2, v1}, Ljava/util/Scanner;->useDelimiter(Ljava/lang/String;)Ljava/util/Scanner;
move-result-object v1
invoke-virtual {v1}, Ljava/util/Scanner;->next()Ljava/lang/String;
move-result-object v1
const-string v2, "\n"
invoke-virtual {v1, v2}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;
move-result-object v0
:try_end_27
.catch Ljava/io/IOException; {:try_start_1 .. :try_end_27} :catch_2a
.catch Ljava/util/NoSuchElementException; {:try_start_1 .. :try_end_27} :catch_28
return-object v0
:catch_28
move-exception v1
goto :goto_2b
:catch_2a
move-exception v1
:goto_2b
invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V
return-object v0
.end method