文章旨在学习和记录,若有侵权,请联系删除

文章目录

  • 前言
  • 一、sekiro是什么
    • 1. 简介
    • 2. 逻辑结构
    • 3. 运行流程
    • 4. 下载和部署
  • 二、如何开发sekiro客户端
    • 1.打开平头哥项目
    • 2.编写Hook插件
  • 三、如何使用sekiro
    • 服务端(sever)
    • 客户端(client)
  • 总结

前言

上篇介绍了下平头哥的安装使用,这篇再来介绍下渣总的只狼(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,运行下列指令,启动sever
    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 {@Overridepublic void handleRequest(SekiroRequest sekiroRequest, SekiroResponse sekiroResponse) {// 根据业务逻辑来写,此处以获取时间戳作为例子// 当rpc调用时获取手机当前时间戳返回sekiroResponse.success("手机现在的时间是:" + System.currentTimeMillis());}
}
  1. 在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";@Overridepublic void handleLoadPackage(final RC_LoadPackage.LoadPackageParam lpparam) throws Throwable {Log.d(TAG, "enter hook");Log.d(TAG, "handleLoadPackage: " + lpparam.packageName);startSekiro(lpparam);  // 调用startSekiro方法}// 连接sekiro服务器severprivate static void startSekiro(RC_LoadPackage.LoadPackageParam lpparam){// 获取设备的唯一标识 CLIENTIDfinal String CLIENTID = Build.BRAND + "_" + Build.MODEL;// 创建SekiroClient对象 - 倒数第二个参数写电脑本机ip,用于该插件在手机安装后连接上电脑端开启的服务SekiroClient sekiroClient = new SekiroClient("test", CLIENTID,"192.168.1.8",5620);// 调用setupSekiroRequestInitializer方法 初始化sekiroClient.setupSekiroRequestInitializer(new SekiroRequestInitializer() {@Overridepublic void onSekiroRequest(SekiroRequest sekiroRequest, HandlerRegistry handlerRegistry) {// 将上面开发好的Handler注册到client上handlerRegistry.registerSekiroHandler(new TestHandler());}});// 启动创建的sekiro客户端sekiroClient.start();}}

三、如何使用sekiro

服务端(sever)

  • 启动sever
    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
服务端(sever)
客户端(client)


相关文章:平头哥ratel安卓Hook框架的安装与简单使用

知识笔记 - sekiro RPC框架的安装与简单使用相关推荐

  1. 手把手教你搭个Frida + Sekiro Rpc框架

    一.目标 联手机签名是个比较取巧的方案,之前我们介绍过 android连真机签名公网ip更新方案 http://91fans.com.cn/post/androidipsend/ Sekiro + X ...

  2. Sekiro RPC框架部署使用

    相关链接 点击 进入Sekiro框架官网 点击 进入JsRpc 项目地址 点击 进入Sekiro下载地址 点击 进入Sekiro-Client.js源码 一,下载地址 下载地址(https://oss ...

  3. 项目笔记——简易RPC框架(待升级)

    后续会迭代 文章目录 模块目录 流程 测试实例 服务端初始化 1.配置端口 2.网络处理模块初始化 3.实例化后续用到的类 注册服务 1.服务信息作为map的key 2.具体服务实例为map的valu ...

  4. Webpack4 学习笔记 - 01:webpack的安装和简单配置

    安装 webpack 新建一个Demo文件夹,执行初始化: npm init 在Demo文件夹里安装 webpack 和 webpack-cli : npm install webpack webpa ...

  5. pyspark学习笔记(1)_安装和简单逻辑回归分类示例

    一.安装 我是Windows系统,使用的是anaconda.如其他系统环境可直接度娘怎么安装,教程很多哟(^U^) 安装方法: 1.下载Spark. 在Apache Spark官网下载Spark,直接 ...

  6. 分布式RPC框架Dubbo详解

    目录 1.架构演进 1.1 单体架构 1.2  垂直架构 1.3 分布式架构 1.4 SOA架构 1.5 微服务架构 2.RPC框架 2.1 RPC基本概念介绍 2.1.1 RPC协议 2.1.2 R ...

  7. Thrift的安装和简单示例

    本文只是简单的讲解Thrift开源框架的安装和简单使用示例,对于详细的讲解,后面在进行阐述. Thrift简述 Thrift是一款由Fackbook开发的可伸缩.跨语言的服务开发框架,该框架已经开源并 ...

  8. 多人网络游戏服务器开发基础学习笔记 I:基本知识 | 游戏设计模式 | 网游服务器层次结构 | 游戏对象序列化 | 游戏 RPC 框架 | 帧同步和状态同步

    今天继续开新坑,尽管过了很多 Unix 套接字编程的坑,但是实际还是有很多不同场景和性能的需求,以及最服务器架构的内容也就接触过 preforking 和 master 带 worker 而已. 所以 ...

  9. Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介

    1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...

最新文章

  1. Oracle --获取绑定变量的值.
  2. oye pandora_我尝试了Pandora出色的功能优先级排序方法。 这是我学到的。
  3. python简单代码画图-Python竟能画这么漂亮的花,帅呆了(代码分享)
  4. python如何判断字典中是否存在某个键_总结:11个Python3字典内置方法大全及示例...
  5. ZetCode 绘图教程
  6. 软齿面主要失效形式_齿轮4种常见故障原因,如何采取预防措施,避免齿轮失效...
  7. sysdate取年取月取日
  8. 《编程之美》1.3一摞烙饼的排序
  9. vue 引入外部less_Vue项目中引入外部文件的方法(css、js、less)
  10. 高中电子技术——指针式万用表调零
  11. 数学趣题——猴子吃桃问题
  12. J2SE基础夯实系列之正则表达式Java
  13. FFmpeg总结(八)windows下用ffmpeg获取视频缩略图
  14. java网上销售外文文献_基于java网上购物论文英文的参考文献欣赏
  15. Http请求的流程原理以及请求详解
  16. linux上的c语言开发环境搭建,c语言开发环境(c语言开发环境搭建)
  17. 作为一个程序员,至少需要掌握哪几种编程语言?
  18. vlc-for-android
  19. 概率分布(probability distribution)
  20. matlab revch,matlab学习1

热门文章

  1. SVM中对偶、凸优化与KTT条件问题
  2. 2018浙大408考研经验(划掉)个人口胡 普通一本+二战(伪)+小跨吧大概
  3. Nodebb 开发1
  4. 区块链——Hyperledger Fabric2.2单点搭建网络
  5. 用java求1000之内的素数_java求1000以内的素数
  6. c语言求最小公倍数和最大公约数三种算法
  7. 暖通工程师有几个级别,以及注册暖通工程师挂靠价格
  8. Coding(码市)教程(一):基础配置
  9. 计算机读光盘出现乱码,解决刻录音乐光盘mp3出现中文乱码的方法
  10. 第七篇 indicators(3)第三方指标库Ta-lib