android 游戏sdk嫁接方式

来源:互联网 发布:淘宝零食货源 编辑:程序博客网 时间:2024/04/29 13:43

检测是不是模拟器

# direct methods
.method static constructor <clinit>()V
    .locals 1


    sget-object v0, Lcom/google/android/gms/ads/AdRequest;->DEVICE_ID_EMULATOR:Ljava/lang/String;


    sput-object v0, Lcom/google/ads/AdRequest;->TEST_EMULATOR:Ljava/lang/String;


    return-void
.end method

1:最恶心的一种嫁接方式,就是在启动页面的activity中加入代码,判断他的应用是否存在,不存在就不跳转,

什么也不做,造成游戏玩不了!7723


.method public isMobile_lewanExist()Z

##

if-lt v1,v0,  :cond_0

:goto_1

const/4 v2,0x1

return v2

##


2:还有就是toast !7723、当乐a.d.cn

string v0,"\u78a.d.cn"

##

.show()

##

把.show()去掉就可以去除toast


3:启动页面的修改!当乐a.d.cn、安智、拇指玩

直接就把启动页修改,执行完自己的代码,跳回原来。


 <activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:name="com.icecry.launcher.GoloRunnerStart" android:screenOrientation="landscape" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
  </activity>


##

 <activity android:name="com.muzhiwan.sdk.MzwShellActivity" android:screenOrientation="landscape" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
            <intent-filter>
             <action android:name="android.intent.action.MAIN"/> 主函数
                <category android:name="android.intent.category.LAUNCHER"/>启动页表示
            </intent-filter>

<intent-filter>
                <category android:name="android.intent.category.LEANBACK_LAUNCHER"/>随后启动
            </intent-filter>
      </activity>

##

上边<application ## 标签下的第一个Activity就有可能是原来的启动界面、启动类

<intent-filter/>可能就是原来启动标签写的位置


4:拇指玩的签名检验,在修改完启动页之后游戏出现闪退!Signature

先搜索Signature,


.method private static getSign(Landroid/content/Context;)I
    .locals 5
    .param p0, "context"    # Landroid/content/Context;

    .prologue
    .line 12
    :try_start_0
    invoke-virtual {p0}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;

    move-result-object v2

    .line 13
    invoke-virtual {p0}, Landroid/content/Context;->getPackageName()Ljava/lang/String;

    move-result-object v3

    const/16 v4, 0x40

    .line 12
    invoke-virtual {v2, v3, v4}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;

    move-result-object v1

    .line 14
    .local v1, "info":Landroid/content/pm/PackageInfo;
    iget-object v2, v1, Landroid/content/pm/PackageInfo;->signatures:[Landroid/content/pm/Signature;

    const/4 v3, 0x0

    aget-object v2, v2, v3

    invoke-virtual {v2}, Landroid/content/pm/Signature;->toCharsString()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/String;->hashCode()I
    :try_end_0
    .catch Ljava/lang/Throwable; {:try_start_0 .. :try_end_0} :catch_0

    move-result v2

    .line 18
    .end local v1    # "info":Landroid/content/pm/PackageInfo;
    :goto_0
    return v2

    .line 15
    :catch_0
    move-exception v0

    .line 16
    .local v0, "e":Ljava/lang/Throwable;
    invoke-virtual {v0}, Ljava/lang/Throwable;->printStackTrace()V

    .line 18
    const/4 v2, -0x1

    goto :goto_0
.end method

这个获取签名,然后搜索getSign,在sdk/utils/Env.smali中有俩个getSign,分别是上边那个和下边这个

.method public static checkSign(Landroid/app/Activity;)V
    .locals 3
    .param p0, "context"    # Landroid/app/Activity;

    .prologue
    .line 22
    invoke-static {p0}, Lcom/muzhiwan/sdk/utils/Env;->getSign(Landroid/content/Context;)I

    move-result v0

    .line 24
    .local v0, "sign":I
    const v1, 0x396f215

    #if-ne v0, v1, :cond_0

    .line 31
    :goto_0
    return-void

    .line 29
    :cond_0
    sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;

    const-string v2, "wrong sign!"

    invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V

    .line 30
    invoke-virtual {p0}, Landroid/app/Activity;->finish()V

    goto :goto_0
.end method

改掉判断


0 0
原创粉丝点击