首页
社区
课程
招聘
[原创]Xposed callMethod 如何传入接口参数
发表于: 2020-1-7 17:52 12537

[原创]Xposed callMethod 如何传入接口参数

2020-1-7 17:52
12537

看到论坛有人问如何hook接口类参数 我这里总结分享一下

Xposed有时候我们遇上方法调用方法需要传入接口作为参数,由于无法直接 newInstance 生成接口类。一般我们有两种方法

1.靠别人实现---查看是否有接口的实现类
2.靠自己实现---使用动态代理实现接口

被 hook的app代码

已有实现类 OkCallBack 直接使用

非常简单 但是有个缺点就是要得到数据 还要hook OkCallBack 的 onResponse 函数

如果实现方法简单,我更倾向于第二种方案,调用流程清晰。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (9)
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
BGM
2
没看太懂,我一般就是直接用反射加socket
2020-1-7 20:21
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
111
2020-4-4 03:18
0
雪    币: 239
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4

下面发个例子,楼主看下这种场景如何处理回调

最后于 2020-6-9 14:13 被wx_落雪年华编辑 ,原因: 贴上代码例子
2020-6-9 14:07
0
雪    币: 239
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5
public abstract class Fox{
    public abstract void fetch();
    public abstract onResponse(Call call, Response response)

}

Object foxCallback = Proxy.newProxyInstance(classLoader, new Class[]{Fox.class}, h);

碰上回调类是抽象类的时候没办法动态代理实现接口呢,应该没办法了吧
2020-6-9 14:11
0
雪    币: 910
活跃值: (165)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
通过jdk动态代理处理这情况,确实妙
2020-6-9 15:31
0
雪    币: 1867
活跃值: (3953)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
wx_落雪年华 public abstract class Fox{ public abstract void fetch(); public abstract onResponse(Call c ...
这种dexmaker一样可以搞
2020-6-9 16:23
0
雪    币: 239
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
用的xposed loadClass("xxx.xxx") 获取到抽象类利用dexmaker还是无法代理抽象类,javassist ProxyFactory也试过不行,请教下你有什么好方法可以代理
2020-6-10 23:20
0
雪    币: 3020
活跃值: (160119)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
小黄鸭牛逼,感谢小黄鸭
2021-1-21 17:47
0
雪    币: 2123
活跃值: (4512)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
wx_落雪年华 public abstract class Fox{ public abstract void fetch(); public abstract onResponse(Call c ...
抽象类的论坛里已经有解决方案了 就是自定义一个实现类合到目标dex里面去。具体的你搜索一下
2021-4-1 10:24
0
游客
登录 | 注册 方可回帖
返回
//