屏蔽GMS的Dialog提示

作者: LiuJP | 来源:发表于2019-03-04 14:25 被阅读8次

    接到一个活儿,是让屏蔽谷歌gms的dialog提示,屏蔽游戏中的ShareButton,CloudSaveButton,屏蔽UnityAd
    1、屏蔽CloudSaveButton,在相应的未知加入以下IL:

    805 ldarg.0 
    806 ldfld   UnityEngine.UI.Button MainMenuController::CloudSaveButton
    811 callvirt    UnityEngine.GameObject UnityEngine.Component::get_gameObject()
    816 ldc.i4.0    
    817 callvirt    System.Void UnityEngine.GameObject::SetActive(System.Boolean)
    

    2、屏蔽UnityAd,也是找到相应ContinueClick()方法,修改判断逻辑

    3、屏蔽Dialog:

     com.google.android.gms.common.GoogleApiAvailability.zza();
    

    返回是Dialog;
    修改smali,返回null;

    hook代码:

      try {
            Method methodzza = null;
            Class<?> a   =target.getClassLoader().loadClass("com.google.android.gms.common.GoogleApiAvailability");
            for (Method method : a.getDeclaredMethods()) {
                if ("zza".equals(method.getName())) {
                    Log.e("gamea", ":" + method.getName() + ":" + method.getReturnType().getName());
                    if (method.getReturnType().getName().equals("android.app.Dialog")) {
                        methodzza = method;
                    }
                }
            }
             if (methodzza != null) {
                DexposedBridge.hookMethod(methodzza, new XC_MethodHook() {
                    @Override
                    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                        super.beforeHookedMethod(param);
                        Log.e("gamea", "param:" + param.args[2]);
                    }
    
                    @Override
                    protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                        super.afterHookedMethod(param);
                        Log.e("gamea", ":" + param.getResult());
                        param.setResult(null);
                    }
                });
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    

    若是华为手机,手机上装有gms,还需要屏蔽PackageManager的“com.google.android.gms”查找
    在这个app 中的位置是

    com.google.android.gms.common.GoogleApiAvailability.isGoogleGmsAvailability();

    相关文章

      网友评论

        本文标题:屏蔽GMS的Dialog提示

        本文链接:https://www.haomeiwen.com/subject/ktqiuqtx.html