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
改掉判断
# 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
改掉判断
相关文章推荐
- Android "Read -Only System"问题解决方法
- Android Day01-电话拨号器案例&Android开发流程
- Android studio 报错 Failed to complete Gradle execution already disposed:module:'***'
- Android 命令
- Android中安装asset文件下的apk
- Android v7 包导入报错问题
- 获取Android控件的宽和高
- Android Day02-Android中单元测试(junit测试)&monkey测试
- android 从broadcastReceiver的onReceive方法中启动activity
- android当蓝牙设备连接或者断开时候的广播事件处理
- 使用AndroidFrameworks开发和应用隐藏类 or Android使用自定义framework开发与应用
- Android笔记之多个Activity的生命周期交互
- Android 开发 实现复选
- Android ListView表单实现多选删除,高度随表单项多少变化
- Android_线程_多线程下载
- android Json数据解析(API数据进行解析),基于URLConnection
- 在android创建bitmap避免低记忆法
- android string.xml格式化
- Handler
- Android之——多线程断点续传下载示例