吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2033|回复: 1
收起左侧

[Android 求助] Android Hook怎么劫持参数是接口并且调用接口里面的方法

[复制链接]
Agx 发表于 2021-8-19 19:06
50吾爱币
[Java] 纯文本查看 复制代码
if(!lpparam?.packageName.equals("com.xxx.xxx")) return
        XposedBridge.log("找到相关应用")
        val onClickListener = lpparam?.classLoader?.loadClass("android.view.View\$OnClickListener")
        XposedHelpers.findAndHookMethod(
            "android.view.View",
            lpparam!!.classLoader,
            "setOnClickListener",
            onClickListener,
            object : XC_MethodHook() {
                override fun beforeHookedMethod(param: MethodHookParam) {
                    super.beforeHookedMethod(param)
                    for (item in param.args){
                        XposedBridge.log(item.toString())
                        if(item is Class<*>){
                            XposedBridge.log("找到相关接口")
                            item.getMethod("onClick").invoke(item,"这里是View")
                        }
                    }
                    param.result = {}
                }
            })
就是类似于android用户点击事件,劫持setOnClickListener方法,并且拿到OnClickListener参数然后执行这个接口参数的onClick的方法。实现用户没有点击,又hook程序主动调用onClick方法骗过应用,让应用以为用户点击了。图片上的只是一个实现例子,现在的问题是这个参数转化不了Class,然后就无法调用里面的方法

最佳答案

查看完整内容

[md] 楼主这个意思吗 ```kotlin if(!lpparam?.packageName.equals("com.xxx.xxx")) return XposedBridge.log("找到相关应用") val cls_onClickListener = lpparam?.classLoader?.loadClass("android.view.View\$OnClickListener") XposedHelpers.findAndHookMethod( "android.view.View", lpparam!!.classLoader, "setOnClickListener", cls_o ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Tsihen 发表于 2021-8-19 19:06
本帖最后由 Tsihen 于 2021-10-31 22:30 编辑

楼主这个意思吗

if(!lpparam?.packageName.equals("com.xxx.xxx")) return
        XposedBridge.log("找到相关应用")
        val cls_onClickListener = lpparam?.classLoader?.loadClass("android.view.View\$OnClickListener")
        XposedHelpers.findAndHookMethod(
            "android.view.View",
            lpparam!!.classLoader,
            "setOnClickListener",
            cls_onClickListener,
            object : XC_MethodHook() {
                override fun beforeHookedMethod(param: MethodHookParam) {
                    super.beforeHookedMethod(param)
                    for (item in param.args){
                        XposedBridge.log(item.toString())
                        if(itemjavaClass.isAssignableFrom(cls_onClickListener)){ // Class<*>.isAssignableFrom(c: Class<*>) 表示获取继承关系。返回 true 表示 this 继承自 c 或者 this 实现了接口 c
                            XposedBridge.log("找到相关接口")
                            // 我记得 onClick 方法不需要额外的参数                                                        
                            item.javaClass.getMethod("onClick").invoke(item,"这里是View")
                        }
                    }
                    param.result = {}
                }            })
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-23 01:31

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表