Xposed 插件开发(三)—— 我的 hooker 是哪里导致出错了?

原创
2018/09/17 09:25
阅读数 1.3K

    本篇文章,我们来说说 hooker 报错了,我想找到异常的详细信息!

    Xpose 这个工具还是很强大的。可以在任何的地方进行植入自己的代码。对于异常的堆栈信息获取,我这里直接给出代码。 

    在 XC_MethodHook 的回调方法  afterHookedMethod 回调中,打印堆栈信息。

 

   代码详细如下:

public static void exceptionHooker(final XC_LoadPackage.LoadPackageParam lpparam) {
        XposedHelpers.findAndHookMethod("java.lang.Throwable", lpparam.classLoader, "getStackTrace", new XC_MethodHook() {
            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {

                StackTraceElement[] result = (StackTraceElement[]) param.getResult();
                boolean xposedDetected = false;
                for (StackTraceElement localStackTraceElement : result) {
                    if (localStackTraceElement.getClassName().equals("de.robv.android.xposed.XposedBridge")) {
                        //found xposed
                        XposedBridge.log("Now, let's skip the Alipay hook checker, HOHO`` Anti Hook Starting.., skip method name: " + localStackTraceElement.getMethodName());
                        xposedDetected = true;
                        break;
                    }
                }

                if (xposedDetected) {
                    //Replaces the returning value
                    List<StackTraceElement> newResult = new ArrayList<>();
                    for (StackTraceElement localStackTraceElement : result) {
                        if (localStackTraceElement.getClassName().equals("de.robv.android.xposed.XposedBridge")) {
                            //found xposed and skip...
                            continue;
                        }
                        newResult.add(localStackTraceElement);
                    }
                    StackTraceElement[] retval = newResult.toArray(new StackTraceElement[newResult.size()]);
                    XposedBridge.log("Anti Hook returning...");
                    param.setResult(retval);
                }
            }
        });
    }

 

    读者如果有什么疑问的话,随时可以联系我进行技术交流。

 

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部