痞孑 发表于 2018-3-23 21:49

洽谈APK剔除除谷歌商店必要性

本帖最后由 痞孑 于 2018-3-23 21:57 编辑





主要讲解 APK剔除谷歌商店的必要性剔除后可以达到无需谷歌商店也可正常运行游戏,不会出现游戏停止运行或者加载卡住等异常现象!
实验游戏:That Level Again 2 (又是这关2)
(0X1)1. 关键搜索字符:com.android.vending (谷歌商店包名)
2. 关键函数:startSetup                           
3. 关键类名:IabHelper                              
(0X2)1.先来安装下未做任何修改的APK
2. 根据 0X1 中信息搜索关键字符(谷歌商店包名):com.android.vending
出现以下几个搜索结果


通过寻找,我们把目标修改文件定位到这个路径里
ru\iamtagir\thatlevelagain2\android\util\Iabhelper.smali


3. 双击打开定位到 startSetup这个函数里
以下是关于这个函数的相关代码

.method publicstartSetup(Lru/iamtagir/thatlevelagain2/android/util/IabHelper$OnIabSetupFinishedListener;)V.locals 4.param p1, "listener" #Lru/iamtagir/thatlevelagain2/android/util/IabHelper$OnIabSetupFinishedListener;.prologue.line 203invoke-direct {p0},Lru/iamtagir/thatlevelagain2/android/util/IabHelper;->checkNotDisposed()V.line 204iget-boolean v1, p0,Lru/iamtagir/thatlevelagain2/android/util/IabHelper;->mSetupDone:Zif-eqz v1, :cond_0new-instance v1, Ljava/lang/IllegalStateException;const-string v2, "IAB helper is already set up."invoke-direct {v1, v2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)Vthrow v1.line 207:cond_0const-string v1, "Starting in-app billing setup."invoke-virtual {p0, v1},Lru/iamtagir/thatlevelagain2/android/util/IabHelper;->logDebug(Ljava/lang/String;)V.line 208new-instance v1, Lru/iamtagir/thatlevelagain2/android/util/IabHelper$1;invoke-direct {v1, p0, p1},Lru/iamtagir/thatlevelagain2/android/util/IabHelper$1;-><init>(Lru/iamtagir/thatlevelagain2/android/util/IabHelper;Lru/iamtagir/thatlevelagain2/android/util/IabHelper$OnIabSetupFinishedListener;)Viput-object v1, p0,Lru/iamtagir/thatlevelagain2/android/util/IabHelper;->mServiceConn:Landroid/content/ServiceConnection;.line 263new-instance v0, Landroid/content/Intent;const-string v1, "com.android.vending.billing.InAppBillingService.BIND"invoke-direct {v0, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V.line 264.local v0, "serviceIntent":Landroid/content/Intent;const-string v1, "com.android.vending" 谷歌商店包名      存入字符常量引用到 v1 invoke-virtual {v0, v1},
Landroid/content/Intent;->setPackage(Ljava/lang/String;)Landroid/content/Intent;
设置包名                  
.line 265
iget-object v1, p0,
Lru/iamtagir/thatlevelagain2/android/util/IabHelper;->mContext:Landroid/content/Context;
invoke-virtual {v1},
Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
                              获取包管理         获取包信息                     move-result-object v1const/4 v2, 0x0invoke-virtual {v1, v0, v2},
Landroid/content/pm/PackageManager;->queryIntentServices(Landroid/content/Intent;I)Ljava
/util/List; 查询服务move-result-object v1
invoke-interface {v1}, Ljava/util/List;->isEmpty()Z
                                                                        布尔型,判断是否为空(用户设备有没有谷歌)move-result v1if-nez v1, :cond_2.line 267iget-object v1, p0,Lru/iamtagir/thatlevelagain2/android/util/IabHelper;->mContext:Landroid/content/Context;

iget-object v2, p0,Lru/iamtagir/thatlevelagain2/android/util/IabHelper;->mServiceConn:Landroid/content/ServiceConnection;const/4 v3, 0x1invoke-virtual {v1, v0, v2, v3},Landroid/content/Context;->bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z.line 277:cond_1:goto_0return-void.line 271:cond_2if-eqz p1, :cond_1.line 273new-instance v1, Lru/iamtagir/thatlevelagain2/android/util/IabResult;const/4 v2, 0x3.line 274const-string v3, "Billing service unavailable on device.".line 273invoke-direct {v1, v2, v3},Lru/iamtagir/thatlevelagain2/android/util/IabResult;-><init>(ILjava/lang/String;)V.line 272invoke-interface {p1, v1},Lru/iamtagir/thatlevelagain2/android/util/IabHelper$OnIabSetupFinishedListener;->onIabSetupFinished(Lru/iamtagir/thatlevelagain2/android/util/IabResult;)Vgoto :goto_0.end method(在以上代码中有作注释,自行查看)


举三个例子其一
我们可以把它设置的包名换成APK的包名,查找时就变成该 APK 的包名了,那么我们只要安装了这个的包名了,那么我们只要安装了这个 APK 就必定会成功;
其二
我们也可以删除设置包名的那段调用代码,查找就为无效,从而达到免谷歌;
其三
我们可以删除判断是否为空的那段调用代码,不管查询的结果是怎样的,没有了这个判断也会达到免谷歌效果!

下面是修改实例
A

B

C
那么做到上面任意一种我们就可以成功进入游戏了
该方法可以干掉大部分需要谷歌商店否则出现异常情况的的游戏
还有些游戏是不能只这么搞的,因为还牵扯到谷歌验证以及谷歌服务等
这些问题的解决方法有待研究.不多赘述...


茫然唔错 发表于 2018-3-23 23:14

技术大牛,标题真的不要文科点吗

芥末芥末 发表于 2018-3-24 09:29

闲月疏云 发表于 2018-3-23 22:02
对于懒人来说,貌似幸运破解器也可以达到类似的效果。两者实现思路一致吗?

有些一样,但因为lucky pather它功能太多所以不能以偏概全,它还有很多功能呢

workerkun 发表于 2018-3-23 21:57

方法都明白,就是代码看不懂

痞孑 发表于 2018-3-23 21:58

workerkun 发表于 2018-3-23 21:57
方法都明白,就是代码看不懂

Android逆向基础学好 代码看不懂是不存在的

闲月疏云 发表于 2018-3-23 22:02

对于懒人来说,貌似幸运破解器也可以达到类似的效果。两者实现思路一致吗?

痞孑 发表于 2018-3-23 22:04

闲月疏云 发表于 2018-3-23 22:02
对于懒人来说,貌似幸运破解器也可以达到类似的效果。两者实现思路一致吗?

幸运破解器? 这我倒是没尝试过一般都是在电脑动手{:301_1009:}

痞孑 发表于 2018-3-23 23:17

茫然唔错 发表于 2018-3-23 23:14
技术大牛,标题真的不要文科点吗

我感觉还行阿{:301_986:}

buginwuhan 发表于 2018-3-24 00:02

谷歌全家桶,你值得保留;www

茫然唔错 发表于 2018-3-24 00:03

痞孑 发表于 2018-3-23 23:17
我感觉还行阿

那就行吧:lol。。。。

okity 发表于 2018-3-24 00:41

谢谢分享
页: [1] 2 3 4 5
查看完整版本: 洽谈APK剔除除谷歌商店必要性