InjectAssetManager.smali
.class public Lcom/cmcm/adsdk/dynamic/InjectAssetManager;
.super Ljava/lang/Object;
.source "InjectAssetManager.java"
# static fields
.field private static mInstance:Lcom/cmcm/adsdk/dynamic/InjectAssetManager;
# direct methods
.method public constructor <init>()V
.registers 1
.prologue
.line 16
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static declared-synchronized getInstance()Lcom/cmcm/adsdk/dynamic/InjectAssetManager;
.registers 2
.prologue
.line 21
const-class v1, Lcom/cmcm/adsdk/dynamic/InjectAssetManager;
monitor-enter v1
:try_start_3
sget-object v0, Lcom/cmcm/adsdk/dynamic/InjectAssetManager;->mInstance:Lcom/cmcm/adsdk/dynamic/InjectAssetManager;
if-nez v0, :cond_e
.line 22
new-instance v0, Lcom/cmcm/adsdk/dynamic/InjectAssetManager;
invoke-direct {v0}, Lcom/cmcm/adsdk/dynamic/InjectAssetManager;-><init>()V
sput-object v0, Lcom/cmcm/adsdk/dynamic/InjectAssetManager;->mInstance:Lcom/cmcm/adsdk/dynamic/InjectAssetManager;
.line 24
:cond_e
sget-object v0, Lcom/cmcm/adsdk/dynamic/InjectAssetManager;->mInstance:Lcom/cmcm/adsdk/dynamic/InjectAssetManager;
:try_end_10
.catchall {:try_start_3 .. :try_end_10} :catchall_12
monitor-exit v1
return-object v0
.line 21
:catchall_12
move-exception v0
monitor-exit v1
throw v0
.end method
.method private getSelfApkPath(Landroid/content/Context;)Ljava/lang/String;
.registers 6
.prologue
.line 109
const/4 v0, 0x0
.line 111
:try_start_1
invoke-virtual {p1}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
move-result-object v1
invoke-virtual {p1}, Landroid/content/Context;->getPackageName()Ljava/lang/String;
move-result-object v2
const/16 v3, 0x2000
invoke-virtual {v1, v2, v3}, Landroid/content/pm/PackageManager;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
move-result-object v1
iget-object v0, v1, Landroid/content/pm/ApplicationInfo;->sourceDir:Ljava/lang/String;
:try_end_11
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_11} :catch_12
.line 115
:goto_11
return-object v0
.line 112
:catch_12
move-exception v1
.line 113
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "get apk path error:"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-static {v1}, Landroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Lcom/cmcm/adsdk/dynamic/AdLog;->i(Ljava/lang/String;)V
goto :goto_11
.end method
.method private hookAssetManager(Landroid/content/Context;)V
.registers 9
.prologue
.line 54
const-string v0, "hook assetmanager..."
invoke-static {v0}, Lcom/cmcm/adsdk/dynamic/AdLog;->i(Ljava/lang/String;)V
.line 56
:try_start_5
invoke-static {p1}, Lcom/cmcm/adsdk/dynamic/FileUtils;->getFilePath(Landroid/content/Context;)Ljava/lang/String;
move-result-object v2
.line 57
const-class v0, Landroid/content/res/AssetManager;
invoke-virtual {v0}, Ljava/lang/Class;->newInstance()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/content/res/AssetManager;
.line 58
invoke-virtual {v0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v1
const-string v3, "addAssetPath"
const/4 v4, 0x1
new-array v4, v4, [Ljava/lang/Class;
const/4 v5, 0x0
const-class v6, Ljava/lang/String;
aput-object v6, v4, v5
invoke-virtual {v1, v3, v4}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v3
.line 59
invoke-direct {p0, p1}, Lcom/cmcm/adsdk/dynamic/InjectAssetManager;->getSelfApkPath(Landroid/content/Context;)Ljava/lang/String;
move-result-object v1
.line 60
const/4 v4, 0x1
new-array v4, v4, [Ljava/lang/Object;
const/4 v5, 0x0
aput-object v1, v4, v5
invoke-virtual {v3, v0, v4}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/Integer;
.line 61
const/4 v4, 0x1
new-array v4, v4, [Ljava/lang/Object;
const/4 v5, 0x0
aput-object v2, v4, v5
invoke-virtual {v3, v0, v4}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/Integer;
.line 62
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "hook res1:"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, ",res2:"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/cmcm/adsdk/dynamic/AdLog;->i(Ljava/lang/String;)V
:try_end_5f
.catch Ljava/lang/Throwable; {:try_start_5 .. :try_end_5f} :catch_60
.line 105
:goto_5f
return-void
.line 102
:catch_60
move-exception v0
.line 103
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "asset error:"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-static {v0}, Landroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/cmcm/adsdk/dynamic/AdLog;->i(Ljava/lang/String;)V
goto :goto_5f
.end method
# virtual methods
.method public initAssetManager(Landroid/content/Context;)V
.registers 5
.prologue
.line 28
invoke-static {}, Lcom/cleanmaster/hpsharelib/base/util/system/RuntimeCheck;->IsWorkerProcess()Z
move-result v0
.line 29
invoke-static {}, Lcom/cleanmaster/hpsharelib/base/util/system/RuntimeCheck;->IsServiceProcess()Z
move-result v1
.line 30
invoke-static {}, Lcom/cleanmaster/hpsharelib/base/util/system/RuntimeCheck;->IsUIProcess()Z
move-result v2
.line 31
if-eqz v0, :cond_26
.line 32
const-string v0, "is workder process..."
invoke-static {v0}, Lcom/cmcm/adsdk/dynamic/AdLog;->i(Ljava/lang/String;)V
.line 41
:goto_13
:try_start_13
invoke-static {p1}, Lcom/cmcm/adsdk/dynamic/FileUtils;->getFilePath(Landroid/content/Context;)Ljava/lang/String;
move-result-object v0
.line 42
new-instance v1, Ljava/io/File;
invoke-direct {v1, v0}, Ljava/io/File;-><init>(Ljava/lang/String;)V
.line 43
invoke-virtual {v1}, Ljava/io/File;->exists()Z
move-result v1
if-eqz v1, :cond_3c
.line 44
invoke-direct {p0, p1}, Lcom/cmcm/adsdk/dynamic/InjectAssetManager;->hookAssetManager(Landroid/content/Context;)V
:try_end_25
.catch Ljava/lang/Throwable; {:try_start_13 .. :try_end_25} :catch_53
.line 51
:goto_25
return-void
.line 33
:cond_26
if-eqz v1, :cond_2e
.line 34
const-string v0, "is service process..."
invoke-static {v0}, Lcom/cmcm/adsdk/dynamic/AdLog;->i(Ljava/lang/String;)V
goto :goto_13
.line 35
:cond_2e
if-eqz v2, :cond_36
.line 36
const-string v0, "is ui process..."
invoke-static {v0}, Lcom/cmcm/adsdk/dynamic/AdLog;->i(Ljava/lang/String;)V
goto :goto_13
.line 38
:cond_36
const-string v0, "is other process..."
invoke-static {v0}, Lcom/cmcm/adsdk/dynamic/AdLog;->i(Ljava/lang/String;)V
goto :goto_13
.line 46
:cond_3c
:try_start_3c
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "dex file not exist..."
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/cmcm/adsdk/dynamic/AdLog;->i(Ljava/lang/String;)V
:try_end_52
.catch Ljava/lang/Throwable; {:try_start_3c .. :try_end_52} :catch_53
goto :goto_25
.line 48
:catch_53
move-exception v0
.line 49
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "asset error:"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-static {v0}, Landroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Lcom/cmcm/adsdk/dynamic/AdLog;->i(Ljava/lang/String;)V
goto :goto_25
.end method