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

一、目标

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

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

91fans.com.cn/post/androi…

Sekiro + Xposed 签名解决方案

91fans.com.cn/post/sekiro…

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

二、步骤

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

91fans.com.cn/post/smallv…

先运行服务器端

官网在这里 github.com/virjar/seki…

git clone下来;

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

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

oss.virjar.com/sekiro/seki…

把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 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 官方文档

sekiro.virjar.com/sekiro-doc/…

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

www.qinless.com/387

学习计划安排

我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣~

点击链接即可免费领取:网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!!!

①网络安全学习路线 ②上百份渗透测试电子书 ③安全攻防357页笔记 ④50份安全攻防面试指南 ⑤安全红队渗透工具包 ⑥HW护网行动经验总结 ⑦100个漏洞实战案例 ⑧安全大厂内部视频资源 ⑨历年CTF夺旗赛题解析

点击链接即可免费领取:网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值