IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 手把手教你搭个Frida + Sekiro Rpc框架 -> 正文阅读

[网络协议]手把手教你搭个Frida + Sekiro Rpc框架

一、目标

联手机签名是个比较取巧的方案,之前我们介绍过

android连真机签名公网ip更新方案

http://91fans.com.cn/post/androidipsend/

Sekiro + Xposed 签名解决方案

http://91fans.com.cn/post/sekiroone/

现在frida用的比较多,并且Sekiro也升级了新版本,我们今天就来手把手教你搭个 Frida + Sekiro Rpc框架。

二、步骤

我们以这个手机号加密算法为例

http://91fans.com.cn/post/smallvideosignthr/

先运行服务器端

官网在这里 https://github.com/virjar/sekiro

git clone下来;

在Linux或者mac上,执行脚本 build_demo_server.sh,之后得到发布压缩包:sekiro-service-demo/target/sekiro-release-demo.zip

如果是windows,或者不想自己构建,可以在这里直接下载

https://oss.virjar.com/sekiro/sekiro-demo

把zip包传到服务器上去解压

sekirorun.png

window下运行 sekiro.bat

Linux/mac下运行 sekiro.sh

这样服务器端就跑起来。

firda开发sekiro客户端

sekiro是个相当牛X的库,基本上就是开箱即用了。

// 在普通Android应用中使用sekiro
new SekiroClient("test-android", UUID.randomUUID().toString())
        .setupSekiroRequestInitializer(new SekiroRequestInitializer() {
            @Override
            public void onSekiroRequest(SekiroRequest sekiroRequest, HandlerRegistry handlerRegistry) {
                handlerRegistry.registerSekiroHandler(new ClientTimeHandler());
            }
        }).start();

在Android代码里面这样一条api就可以了,然后在ClientTimeHandler类里面写逻辑

frida使用就稍稍有点复杂,复杂的点就在于要创建一个java类 ClientTimeHandler 来处理调用逻辑。

function initSekiro() {
    const SekiroClient = Java.use('com.virjar.sekiro.business.api.SekiroClient');
    const ActionHandler = Java.use('com.virjar.sekiro.business.api.interfaze.ActionHandler');
    const SekiroRequestInitializer = Java.use('com.virjar.sekiro.business.api.interfaze.SekiroRequestInitializer');

	//  注册一个ClientTimeHandler类,继承 ActionHandler
    const ClientTimeHandler = Java.registerClass({
        name: 'ClientTimeHandler',
        implements: [ActionHandler],
        methods: {
            action: function () {
                return 'mobile';
            },
            handleRequest: function (sekiroRequest, sekiroResponse) {
				const requestJsonData = sekiroRequest.getJsonModel();
				const requestData = JSON.parse(requestJsonData)['requestData'];

				if(!requestData){
					sekiroResponse.failed(JavaString.$new('requestData 不能为空'));
				}else{
					try{
						sekiroResponse.success(callMobile(requestData));
					}catch(error){
						sekiroResponse.failed(JavaString.$new(error.stack));
						throw error;
					}
				}
            }
        }
    })
	
  // 注册一个 SekiroRequestDefault类, 继承SekiroRequestInitializer
    const SekiroRequestDefault = Java.registerClass({
        name: "SekiroRequestDefault",
        implements: [SekiroRequestInitializer],
        methods: {
            onSekiroRequest: function (sekiroRequest, handlerRegistry) {
                handlerRegistry.registerSekiroHandler(ClientTimeHandler.$new());
            }
        }
    });

    const clientID = guid();
    const group = 'fridaHook_atlasEncrypt';
    const ip = '110.42.246.110';

	 // 服务端端口号 默认是 conf/config.properties 里面配置5620, 这里改成了 8989
    const sekiro = SekiroClient.$new(group, clientID, ip, 8989);
    sekiro.setupSekiroRequestInitializer(SekiroRequestDefault.$new());
    sekiro.start();
}

这就可以了,挂上frida跑起来

sekiro状态查看和访问服务

http://110.42.246.110:8989/business-demo/groupList 展示当前系统中注册过的所有 group

{"data":["fridaHook_atlasEncrypt"],"ok":true,"status":0}

http://110.42.246.110:8989/business-demo/clientQueue?group=fridaHook_atlasEncrypt 展示特定 group 下,注册过那些客户端/手机。

{"data":["65c8e8b5-1a67-2036-5b38-769cb670aeb3"],"ok":true,"status":0}

执行一下看看结果

# -*- coding: utf-8 -*-

import requests

url = 'http://110.42.246.110:8989/business-demo/invoke'

mobileid = '18913872618'

data = {
    'group': 'fridaHook_atlasEncrypt',
    'action': 'mobile',
    'requestData': mobileid
    }

res = requests.post(url,json=data).json()
print(res['data'])

结果很完美

3sCt3iAAMzIwOTAxMjA4AM8HAO7Jtk8ia8xTExAAAACFS7z70nRA3Ppgtdz9Kefb

收工上鲜啤

三、总结

基本上java的库,frida都可以无缝利用。比Xposed玩起来方便多了。

有个小小的问题是 frida hook的app有崩溃的几率, 这个就需要搞个看门狗来实现了。

sekiro 官方文档

https://sekiro.virjar.com/sekiro-doc/index.html

frida 加载 sekiro dex 文件 实现与服务端交互

https://www.qinless.com/387

ffshow.jpeg

这才知道我全部的努力,不过是完成了普通的生活。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-26 15:24:43  更:2022-05-26 15:25:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 12:21:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码