抖音数据支罗教程,Android群控黑盒挪用,Sekiro运用手册0x0 前言
之前检验测验用过virjar大佬的hermesagent, 厥后大佬又迭代出新的基于长链接的Sekiro, 接续想看都被延误了, 原日正好抽空检验测验一下, 顺便写篇笔记, 有舛错的处所大佬们请斧正哈
0x1 Sekiro引见SEKIRO 是一个android下的API效逸露出框架,可以用正在app逆向、app数据抓与、android群控等场景
和其余群控框架相比的特点如下:
对网络环境要求低,sekiro运用长链接支理效逸,使得Android手机可以分布于全国各地,以至寰球各地。手机掺折正在普通用户群体,便捷真现反抓冲破,愈加符折获与下沉数据。
不依赖hook框架,就已经的Hermes系统来说,和xposed框架深度集成,正在当今hook框架到处开花的环境下,框架无奈便捷迁移。所以正在Sekiro的设想中,只供给了RPC罪能了。
杂异步挪用,正在Hermes和其余已经显现过的框架中,根柢都是同步挪用。尽管说签名计较可以抵达上百QPS,但是假如用来功课务办法挪用的话,由于挪用历程穿透到目的app的效逸器,会有大质乞求占用线程。系统吞吐存正在上线(hermes系统抵达2000QPS的时候,根柢无奈横向扩容和机能劣化了)。但是Sekiro全程运用NIO,真践上其吞吐可以把资源占满。
client真时形态,正在Hermes系统我运用http停行挪用转发,通过手机上报心跳感知手机存活形态。心跳光阳至少20s,那招致效逸器调治层面对手机正在线形态感知不实时,乞求过大的时候大质转发挪用由于client掉线timeout。正在Sekiro长链接支理下,手机掉线可以真时感知。不再显现由于框架层面机制招致timeout
Sekiro架构
server: 露出一个TCP端口和两个HTTP端口 打点通过TCP连贯的client和user发来的http 乞求 client: 通过TCP和server连贯,响应server发来的乞求 工做流程是那样的: 1. client通过TCP和server建设长连贯 2. user发送http乞求给server 3. server依据用户发来的http乞求的参数,通过TCP将乞求转发给client 4. client支到乞求并响应server 5. server将从client支到的乞求返回给user具体的可以去看项宗旨readme, 说的很是具体: 名目传送门
0x2 效逸端陈列克隆名目: git clone [https://github.com/virjar/sekiro.git](https://github.com/virjar/sekiro.git)
批改settings.gradle的内容为: include ':sekiro-server', ':sekiro-lib' ,增掉appdemo避免编译它
启动效逸器前留心事项
执止号令:./gradlew sekiro-server:bootJar 便可正在 sekiro-server/build/libs/sekiro-server-0.0.1-SNAPSHOT.jar找到all-in-one的jar包
通过nohup java -jar sekiro-server/build/libs/sekiro-server-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &启动server
先筹备一个测试的Demo, 很简略便是个加法, 留心Demo必须有加android.permission.INTERNET权限
public class MainActivity extends AppCompatActivity { public static int Add(int n1, int n2) { return n1 + n2; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toast.makeText(MainActivity.this, "3 + 2 = " + Add(3, 2), Toast.LENGTH_LONG).show(); } }正在Xposed的handleLoadPackage中启动client链接server,并添加办理变乱的handler, 用于挪用Add函数
Log.i(TAG, "connect server...."); //效逸端host String testHost = "your_host"; //客户端标识 String clientId = UUID.randomUUID().toString(); //接口组称呼 String groupName = "addDemoTest2"; //露出的接口称呼 String actionName = "myAdd"; //拿classloader clzLoader = lpparam.classLoader; //连贯效逸端并且注册办理的handler SekiroClient.start(testHost, clientId, groupName) .registerHandler(actionName, new SekiroRequestHandler(){ @Override public void handleRequest(SekiroRequest sekiroRequest, SekiroResponse sekiroResponse){ //当效逸端分配任务时, 那里办理逻辑, 并把结因返回给效逸端, 效逸端再返回给挪用者 Class<?> clz = XposedHelpers.findClass("com.example.administrator.adddemo.MainActivity", clzLoader); int arg1 = sekiroRequest.getInt("arg1"); int arg2 = sekiroRequest.getInt("arg2"); Log.i(TAG, String.format("arg1 : %d, arg2 : %d", arg1, arg2)); Object result = XposedHelpers.callStaticMethod(clz, "Add", arg1, arg2); Log.i(TAG, "result : " + result); sekiroResponse.success(result); } });编译舛错More than one file was found with OS independent path处置惩罚惩罚
打开app后, 运用阅读器查察group列表能否注册乐成:
[your_server_ip]:[server.port]/groupList
挪用接口查察结因:
格局: your_server_ip:[natHttpServerPort]/[invoke_type]?group=[group_id]&action=[action_name]¶m1=[arg] 例子: https://x.x.x.x:5602/asyncInvoke?group=addDemoTest2&action=myAdd&arg1=300&arg2=300client的挪用日志
【置顶】旺财宝盒独家揭秘:菜鸟如何快速在网上赚到第一桶金!...
浏览:6273 时间:2022-08-252023离散行业自动化(逻辑算法)六部十层电梯程序设计思路与...
浏览:15 时间:2024-05-14债券业务中联席主承与牵头主承的法律责任差异 债券业务中 ...
浏览:20 时间:2024-05-14