手把手教你搭个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包传到服务器上去解压
window下运行 sekiro.bat
Linux/mac下运行 sekiro.sh
这样服务器端就跑起来。
firda开发sekiro客户端
sekiro是个相当牛X的库,基本上就是开箱即用了。
// 在普通Android应用中使用sekiro
new SekiroClient("test-android", UUID.randomUUID().toString()).setupSekiroRequestInitializer(new SekiroRequestInitializer() {@Overridepublic 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类,继承 ActionHandlerconst 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类, 继承SekiroRequestInitializerconst 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, 这里改成了 8989const 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 requestsurl = '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
这才知道我全部的努力,不过是完成了普通的生活。
手把手教你搭个Frida + Sekiro Rpc框架相关推荐
- 如何在 Vue 中使用 Chart.js - 手把手教你搭可视化数据图表
本文首发:<如何在 Vue 中使用 Chart.js - 手把手教你搭可视化数据图表> 使用 Chart.js 在 Vue 搭建的后台管理工具里添加炫酷的图表,是所有数据展示类后台必备的功 ...
- 数据库管理-第七十五期 手把手教你搭19c RAC(20230516)
数据库管理 2023-05-16 第七十五期 手把手教你搭19c RAC 1 基础环境 2 操作系统配置 2.1 /etc/hosts 2.2 配置系统挂载 2.3 配置本地yum源 2.4 操作系统 ...
- 手把手教你搭建网盘系统,给小姐姐换个新家可好?
在数据时代,我们每天都在互联网上生成大量数据,同时也接收着大量数据.随着图片.音乐.影视.课程越来越多,不管是手机.iPad 还是电脑,空间根本不够用,所以很多人会把文件存在各种网盘里. 但近几年,网 ...
- 手把手教你封装一个自己的数据库框架~
本教程将给大家深度剖析数据库框架底层实现的原理,然后采用泛型.反射.注解机制来教大家做一个自己的数据库框架. 前面学习了很多教程,我们转换了一下风格,开始从一个点切入,做更加深入的提升,这也是符合人的 ...
- 知识笔记 - sekiro RPC框架的安装与简单使用
文章旨在学习和记录,若有侵权,请联系删除 文章目录 前言 一.sekiro是什么 1. 简介 2. 逻辑结构 3. 运行流程 4. 下载和部署 二.如何开发sekiro客户端 1.打开平头哥项目 2. ...
- 手把手教你搭APM之Skywalking搭建指南(支持Java/C#/Node.js)
前言 什么是APM?全称:Application Performance Management 可以参考这里: 现代APM体系,基本都是参考Google的Dapper(大规模分布式系统的跟踪系统)的体 ...
- 签名服务器维护中,Unidbg + Web = Unidbg-server 手把手教你搭个签名服务器
一.目标 爆肝+熬夜,终于把so用unidbg跑起来了,总不能放在硬盘里发霉吧.我们得在生成环境下用起来. 最方便的方式就是租台云服务器,然后把Unidbg部署上去,就可以给我们的工作者程序提供云签名 ...
- 手把手教你通过vue-cli搭建手机端框架
前言:欢迎前端的小伙伴们前来围观.学习借鉴,如果你是后端.测试和其他的小伙伴也没关系,如果自己也想玩一下前端,想搭建一个前端的框架,那么不妨静下心来看看这篇文章.如果你不是从事开发工作的人员,内容可能 ...
- Sekiro RPC框架部署使用
相关链接 点击 进入Sekiro框架官网 点击 进入JsRpc 项目地址 点击 进入Sekiro下载地址 点击 进入Sekiro-Client.js源码 一,下载地址 下载地址(https://oss ...
最新文章
- SHARED POOL 原理
- mysql 查询 字段是否为空
- python 获取闭包函数的参数
- 北京/苏州内推 | 微软亚洲互联网工程院招聘算法工程师/应用科学家
- VTK:网格之ClipDataSetWithPolyData
- 单片机开发与Linux开发有何不同?
- 老李分享:接口测试之jmeter
- 监控——《微服务设计》读书笔记
- Android Studio中获取SHA1或MD5的方法
- Python学习笔记之字典(二)
- Google 又又又要“重回中国”了?
- angular cli中的--flat参数
- Bill Gates 2007年哈佛演讲(中/英文)
- Malmquist指数DEAP2.1应用
- VRRP协议 学习笔记
- 家用计算机常见故障及解决方式,计算机常见的五大故障及解决办法
- Android APK瘦身优化
- 大数据课程——Spark SQL
- ORA-01439: 要更改数据类型, 则要修改的列必须为空
- QuickIndex 通讯录快速检索
热门文章
- I want to go hone——变形的Dijkstra
- hone hone clock 人体时钟
- PCI网卡上扩展ROM编程 4.利用8139C网卡读写EPROM
- perplexity 衡量指标_怎样生成语言才能更自然,斯坦福提出超越Perplexity的评估新方法...
- linux安装软件时Stuck at 0% [waiting for headers]错误
- HTTP状态查询,HTTP状态码含义,HTTP头部信息查询,http状态码表
- 服务器远程连接控制以及在Linux环境下安装go编译环境
- Shader Forge 入门学习(一) 基础操作
- woc,把敏感文件上传到git了,咋整
- 【原创】植物大战僵尸全解密---存档篇