吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5873|回复: 28
收起左侧

[Android 原创] Xposed 插件如何很好的通信?

  [复制链接]
behindeye 发表于 2021-2-28 12:56
本帖最后由 behindeye 于 2021-2-28 13:18 编辑

做 xposed 插件的时候,经常会遇到通信的问题,其实这就涉及跨进程通信了,其实也就是多进程通信

通信方式

常用通信方式,当然有更好的方式记得评论

1.文件通信存储,将要存储的数据,写到一个公用的文件,读取数据,可行,欠缺灵活性
2.AIDL通信、Message,不方便插件使用,主要是 aidl 文件的问题
3.ContentProvider,不方便插件使用,还得搞数据库的代码
4.广播,可以很好的找到hook点,并且进行数据传输,适用插件形式

广播通信

这里主要介绍广播的形式进行通信

hook 点,直接找到 application 的 oncreate 方法,进行 hook,并注册广播,插件直接发生广播过去,就能把数据接收

 XposedHelpers.findAndHookMethod(Application.class, "onCreate", new XC_MethodHook() {
                @Override
                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                    super.beforeHookedMethod(param);
                }

                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    super.afterHookedMethod(param);
                    Application application = (Application) param.thisObject;

                    Ct = application;
                    Utils.init(application);

                    String currentProcessName = ProcessUtil.getCurrentProcessName(Ct);
//                    log("进程:" + currentProcessName);
                        IntentFilter filter = new IntentFilter("action_task");
                        filter.addAction("action_gorgon");
                        application.registerReceiver(mrev, filter);

                }
            });

案例

例如:一个 App 某个接口需要某个加密算法,可以把加密函数的参数发送广播过去,配合多线程的 wait、notify,可以很好的进行数据传输。解密完成之后,发送广播给插件App,这样可以不去分析加密函数的实现流程。如某音的:x-gorgon 算法(仅供学习分析使用)。

参考链接:https://bbs.pediy.com/thread-259906.htm

// 发送广播过去,告诉解密,并传参过去
Intent action_task = new Intent("action_xgorgon");
action_task.putExtra("url", url);
sendBroadcast(action_task);
synchronized (lock) {
       while (gorgon == null) {
                //子线程等待
                  lock.wait();
       }
}

//解密完之后,发送广播回来接收
BroadcastReceiver receiver = new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent intent) {
                         if (intent.getAction().equals("action_gorgon_resq")) {
                                 gorgon = intent.getStringExtra("gorgon");
                                        synchronized (lock) {
                                                //通知子线程继续走下去
                                             lock.notifyAll();
                                          }
                                  }
                }
};        

免费评分

参与人数 5吾爱币 +11 热心值 +4 收起 理由
qtfreet00 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
穿透骨頭撫摸妳 + 1 + 1 <font style="vertical-align: inherit;"><font style=
鹏哥666 + 1 + 1 我很赞同!
梁山伯与猪过夜 + 1 我很赞同!
debug_cat + 1 + 1 大佬这个方法不错

查看全部评分

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

yAYa的表哥 发表于 2021-2-28 15:41
大佬,有写好的一个框架吗 ?除了HOOK那个,就是用网页去伪造参数传输过去,然后把加密传回后台使用,这样的框架吗?主要是对andriod并不太会。最近有个操作就是类似这样拿的,HOOK的地方我没问题
 楼主| behindeye 发表于 2021-5-16 12:22
yAYa的表哥 发表于 2021-2-28 15:41
大佬,有写好的一个框架吗 ?除了HOOK那个,就是用网页去伪造参数传输过去,然后把加密传回后台使用,这样 ...

没有哦,这个应该还用不到框架吧,代码不多
头像被屏蔽
冰棍好烫啊 发表于 2021-2-28 13:15
ezro 发表于 2021-2-28 13:18
学习一下,长知识了
xuwen_1993 发表于 2021-2-28 13:19
xposed是好东西,需要root权限!这就很无奈
yl08126653 发表于 2021-2-28 13:20
厉害啊。学习了
yunjy 发表于 2021-2-28 13:22
想法不错
THEStaRY 发表于 2021-2-28 13:32
长知识了
wswgy315 发表于 2021-2-28 13:33
长知识了
学习一下
花花冷月葬花人 发表于 2021-2-28 13:33
感谢分享
fallerL 发表于 2021-2-28 13:48

厉害啊。长知识了,感谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-28 13:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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