您的位置:首页 > 移动开发 > Android开发

android 游戏sdk嫁接方式

2015-07-15 22:56 393 查看
检测是不是模拟器

# 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

改掉判断
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: