【Android视频号③ Xposed插件编写】

这节 就是将frida代码翻译为Xposed 然后利用Sekiro服务进行接口调用

Xposed环境

我的测试环境是 LSPosed 它是完全兼容XP模块的 (免重启调试起来方便一点)下载后用Magisk安装即可.
模块编写可以参考这篇文章 XPosed模块编写教程

翻译代码

首先需要拦截微信进程 然后只加载一次微信插件 因为加载多次 可能就会调用多次!
【Android视频号③ Xposed插件编写】_第1张图片
Xposed代码 没有太多的坑内部做了一定转换 所以调用起来 基本上没有什么坑
【Android视频号③ Xposed插件编写】_第2张图片
由于微信是的请求都是异步的 所以需要主动调用后 然后进行异步拦截hook 存入到缓存
【Android视频号③ Xposed插件编写】_第3张图片
这样我们简单的微信视频号hook Xposed插件就完成了

接口调用

这边使用的是 sekiro

Sekiro
SEKIRO是一个多语言的、分布式、网络拓扑无关的服务发布平台,通过书写各自语言的handler将功能发布到中心API市场,业务系统通过RPC的方式使用远端节点的能力。

更多介绍,请参考详细文档: https://iinti.cn/sekiro/

Sekiro是一个RPC框架 sekiro主要支持多节点的程序调用,所以他归属于RPC(Remote Procedure
Call)框架:API管理、鉴权、分布式、负载均衡、跨语言

在初始化Sekiro的时候需要初始化插件
【Android视频号③ Xposed插件编写】_第4张图片
官方提供了一个简单的handler demo

@Action("clientTime")
public class ClientTimeHandler implements RequestHandler {
    @AutoBind
    private String param1;

    @AutoBind
    private Integer sleep;

    @Override
    public void handleRequest(SekiroRequest sekiroRequest, SekiroResponse sekiroResponse) {
        if (sleep != null && sleep > 0) {
            try {
                Thread.sleep(sleep * 1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        sekiroResponse.success("process: " + MyXposedInit.loadPackageParam.processName + " : now:" + System.currentTimeMillis() + " your param1:" + param1);
    }
}

Action 表示执行的函数
重写 handleRequest 即可调用接口直接执行 如图
【Android视频号③ Xposed插件编写】_第5张图片
这样我们就可以把微信视频号请求的也封为一个接口
上面已经贴出调用例子 只要在handleRequest执行一下刚刚的例子 然后获取返回数据就可以了
【Android视频号③ Xposed插件编写】_第6张图片
调用一下
【Android视频号③ Xposed插件编写】_第7张图片
ok 至此在LSP上跑微信视频号 已经全部完成 接下来就是部署到生产环境~

你可能感兴趣的:(逆向学习,安卓逆向,Xposed,微信视频号,微信Xposed,Sekiro)