首页 > 其他分享 >sekiro RPC框架的安装与简单使用(转)

sekiro RPC框架的安装与简单使用(转)

时间:2023-06-12 17:55:44浏览次数:58  
标签:sekiro business 框架 com RPC api import virjar

前言

上篇介绍了下平头哥的安装使用,这篇再来介绍下渣总的只狼(sekiro)框架

然后再简单讲下如何通过平头哥注入sekiro,实现RPC调用

一、sekiro是什么
1. 简介
sekiro是由邓维佳(渣总)写的一个基于长链接和代码注入的 API 服务暴露框架

sekiro即可以用于app逆向,又可以用在js逆向

找好注入位置时机的话,可以秒杀许多网站的加密算法(大厂也不例外)

详细介绍:https://sekiro.virjar.com/sekiro-doc/
项目地址:https://github.com/virjar/sekiro

2. 逻辑结构
框架主要分为两个方面:

server:
暴露TCP端口和HTTP端口
管理TCP连接的client
处理user发来的HTTP请求

client:
通过TCP与server连接
响应server发来的TCP请求

3. 运行流程
启动server服务,开发client业务脚本
client通过TCP和server建立长连接
user发送HTTP请求给server
server根据用户发来的HTTP请求的参数,通过TCP将请求转发给client
client收到请求后,根据业务逻辑响应server
server将从client收到的请求返回给user

 

上图为单个client示意图,实际上可以注册许多个client
4. 下载和部署
构建:
在mac/linux上,执行脚本 build_demo_server.sh,得到产出发布压缩包:sekiro-service-demo/target/sekiro-release-demo.zip
如果是windows,或者不想自己构建,可以在这里直接下载:https://oss.virjar.com/sekiro/sekiro-demo

部署:
1.安装java(自行安装)
2.打开cmd,运行下列指令,启动server
mac/linux: ./bin/sekiro.sh
windows : ./bin/sekiro.bat

二、如何开发sekiro客户端
1.打开平头哥项目
xposed和平头哥ratel都是强大的Hook框架,如果对xposed框架比较熟悉的话也可以使用xposed框架进行RPC注入,此处使用平头哥框架进行RPC脚本的注入

不熟悉平头哥的可以看下这篇文章 :
平头哥ratel安卓Hook框架的安装与简单使用

可以直接使用上篇文章的插件例子来改写sekiro的注入

2.编写Hook插件
  1.放入依赖 (build.gradle)

implementation 'com.virjar.sekiro.business:sekiro-business-api:1.4'

  

  1. 打开网络权限 (AndroidManifest.xml)
 <uses-permission android:name="android.permission.INTERNET" />

 

  1. 开发handler函数 (被请求时调用的逻辑)
package com.example.ratel_plugs;

import com.virjar.sekiro.business.api.interfaze.RequestHandler;
import com.virjar.sekiro.business.api.interfaze.SekiroRequest;
import com.virjar.sekiro.business.api.interfaze.SekiroResponse;

@Action("testHandler")
public class TestHandler implements RequestHandler {
    @Override
    public void handleRequest(SekiroRequest sekiroRequest, SekiroResponse sekiroResponse) {
        // 根据业务逻辑来写,此处以获取时间戳作为例子
        // 当rpc调用时获取手机当前时间戳返回
        sekiroResponse.success("手机现在的时间是:" + System.currentTimeMillis());
    }
}

  4.在HookEntry入口函数处,实例化 sekiroClient,注册handler
  关于group、SekiroClient、action、clientId等基础概念的介绍可移步作者的开发文档:
  https://sekiro.virjar.com/sekiro-doc/01_user_manual/2.basic.html

package com.example.ratel_plugs;

import android.os.Build;
import android.util.Log;

import com.virjar.ratel.api.rposed.IRposedHookLoadPackage;
import com.virjar.ratel.api.rposed.callbacks.RC_LoadPackage;
import com.virjar.sekiro.business.api.SekiroClient;
import com.virjar.sekiro.business.api.interfaze.HandlerRegistry;
import com.virjar.sekiro.business.api.interfaze.SekiroRequest;
import com.virjar.sekiro.business.api.interfaze.SekiroRequestInitializer;

public class HookEntry implements IRposedHookLoadPackage {
    private static final String TAG = "Ratelplugs";

    @Override
    public void handleLoadPackage(final RC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
        Log.d(TAG, "enter hook");
        Log.d(TAG, "handleLoadPackage: " + lpparam.packageName);
        startSekiro(lpparam);  // 调用startSekiro方法
    }

    // 连接sekiro服务器server
    private static void startSekiro(RC_LoadPackage.LoadPackageParam lpparam){
        // 获取设备的唯一标识 CLIENTID
        final String CLIENTID = Build.BRAND + "_" + Build.MODEL;
        // 创建SekiroClient对象 - 倒数第二个参数写电脑本机ip,用于该插件在手机安装后连接上电脑端开启的服务
        SekiroClient sekiroClient = new SekiroClient("test", CLIENTID,"192.168.1.8",5620);
        // 调用setupSekiroRequestInitializer方法 初始化
        sekiroClient.setupSekiroRequestInitializer(new SekiroRequestInitializer() {
            @Override
            public void onSekiroRequest(SekiroRequest sekiroRequest, HandlerRegistry handlerRegistry) {
                // 将上面开发好的Handler注册到client上
                handlerRegistry.registerSekiroHandler(new TestHandler());
            }
        });
        // 启动创建的sekiro客户端
        sekiroClient.start();
    }

}

三、如何使用sekiro
服务端(server)
启动server
mac/linux: ./bin/sekiro.sh
windows : ./bin/sekiro.bat
客户端(client)
将写好的插件安装到手机上并打开,然后访问下列链接(该链接是展示当前系统中注册过的所有 group)

http://127.0.0.1:5620/business-demo/groupList

访问结果如下所示即手机和电脑建立连接成功

{“status”:0,“data”:[“test”],ok":true}

http://127.0.0.1:5620//business-demo/invoke?group=test&action=testHandler (调用业务逻辑)

{“clientId”:“Xiaomi_MI 8”,“message”:null,“status”:0,“data”:“手机现在的时间是:1662714345424”}

data里面成功拿到了我们想要的设备时间,sekiro调用成功

总结
本文主要介绍了以下内容:
一、sekiro是什么
1.简介
2.逻辑结构
3.运行流程
4.下载和部署

二、如何开发sekiro客户端
1.打开平头哥项目
2.编写Hook插件

三、如何使用sekiro
服务端(server)
客户端(client)

原文链接:https://blog.csdn.net/m0_51159233/article/details/126770751

标签:sekiro,business,框架,com,RPC,api,import,virjar
From: https://www.cnblogs.com/tjp40922/p/17475725.html

相关文章

  • Sekiro RPC框架部署使用--web(油猴脚本)
    点击进入JsRpc项目地址一,下载地址下载地址(https://oss.iinti.cn/sekiro/sekiro-demo)二,运行(依赖java环境,自行安装)#win运行bin/sekiro.bat#linux运行bin/sekiro.sh三,编写油猴脚本(1)编写好油猴脚本框架//==UserScript==//@nameSekiro//......
  • 转:翻译:REST 和 gRPC 详细比较
    转自:https://www.cnblogs.com/YGYH/p/17471039.html译者注:在微服务架构设计,构建API和服务间通信技术选型时,对REST和gRPC的理解和应用还存在知识盲区,近期看到国外的这篇文章:AdetailedcomparisonofRESTandgRPC,将二者进行了详细对比。周末有时间翻译过来,希望能帮到大家!......
  • .net core 微服务 集成Ocelot 和Nacos 之后使用grpc 如何实现服务与服务之间的调用
    在.NETCore微服务中使用gRPC调用其他服务,你需要完成以下步骤:1.定义服务契约:你需要定义你的服务、方法以及消息类型,以便客户端和服务端协商通信。2.生成代码:你需要使用gRPC工具生成客户端和服务端的代码,这样你就可以在应用程序中使用它们。3.实现服务:你需要实现......
  • 【浅谈JavaEE框架】Spring常用注解,自动扫描装配Bean
    1.引入context命名空间(在Spring的配置文件中)配置文件如下: Xml代码 1.xmlns:context="http://www.springframework.org/schema/context"2.http://www.springframework.org/schema/context3.http://www.springframework.org/schema/context/spring-context-2.5.xsd......
  • pytest + yaml 框架 -37.mark 标记对用例运行时长断言
    前言pytest执行用例的时候,我们希望对用例的运行时间断言,当用例执行时长大于预期标记此用例失败。@pytest.mark.runtime(1)运行时长单位是秒此插件已打包上传到pypihttps://pypi.org/project/pytest-runtime-yoyo/1.0.0/环境准备pipinstallpytest-yaml-yoyo此功能在v1.......
  • REST 和 RPC 有什么本质差异?
    随着Web应用程序和分布式系统的不断发展,面向服务的架构和分布式系统的设计变得越来越重要。在这个领域中,REST和RPC是两种广泛使用的架构风格。本文将分别介绍REST和RPC的概念和特点,然后从丰富的角度来分析REST与RPC的差异。最后,我们将分析REST和RPC的适用场景,并展望它们未来的发展......
  • gtest框架的介绍与应用
    【摘要】在本文中,作者根据之前使用gtest框架进行测试的经验,总结了一些使用方式和案例。在这些案例中,我们可以了解到gtest框架的基本使用方法以及在我们日常测试中的应用,同时也能促进我们对于百度的btest的了解。在我们之后的测试工作中,可以根据各个项目的特点以及gtest、btest等......
  • 微信ipad协议/微信个人协议/个微协议/ipad8.0.37协议/ipad协议/gewe框架
    目前微信社群比较火,市面上社群管理工具也是有各式各样的,但是最终都不开微信的协议,协议样式也有很多,例如web、PCHook、模拟机、Xposed等。但是目前各类协议的稳定性有待考究。目前微信8.0.37协议稳定不封号,安全性好,功能满足,行业占有率高。gewe框架已将8.03.7协议封装为统一的框架服......
  • SSM框架 使用逆向工程生成Bean、XxxMapper 和XxxMapper.xml【MyBatis Generator 】
    在properties配置文件中,数据库用户名的键不能设为username,你随便改个其他的应该都可以,例如jdbc.username,甚至拼错usernaem都可以jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8jdbc.u......
  • XXL-JOB手工执行任务报错:msg:xxl-rpc remoting error(Connection refused (Connection
    【问题描述】XXL-JOB手工执行任务报错:msg:xxl-rpcremotingerror(Connectionrefused(Connectionrefused)),forurl  【原因分析】 在xxl-job服务端所在的服务器上面去telnetxxl-job所在的客户端服务器的9986端口,提示拒绝连接:对于端口拒绝连接的问题,应该是网络的问......