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

    本篇文章,我们来说说 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);
                }
            }
        });
    }

 

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

 

 

转载于:https://my.oschina.net/Rayn/blog/2052177

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值