Sekiro + Xposed 签名解决方案

简介: Sekiro + Xposed 签名解决方案

一、目标


之前介绍过 android连真机签名公网ip更新方案 ,但是有很多朋友留言说,自己家里的ADSL根本没有公网ip,那就没法玩了。


要解决这个问题,还有一个方案是用 frp内网穿透 来解决,但是实际使用过程中发现不是很稳定。


今天我们要介绍的 sekiro 是一个基于长链接和代码注入的Android Private API暴露框架。


工作流程是这样的:

  • client通过TCP和server建立长连接
  • user发送http请求给server
  • server根据用户发来的http请求的参数,通过TCP将请求转发给client
  • client收到请求并响应server
  • server将从client收到的请求返回给user


二、步骤

先安装服务器端


git clone github.com/virjar/seki…


当前目录执行编译命令:  ./gradlew sekiro-server:bootJar


即可在 sekiro-server/build/libs/sekiro-server-0.0.1-SNAPSHOT.jar 找到 all-in-one的jar包


通过命令 java -jar sekiro-server-0.0.1-SNAPSHOT.jar  即可启动服务器


TIP:   linux下可以用如下命令来后台执行


nohup java -jar sekiro-server-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &


.说明


server端在 sekiro-server/src/main/resources/appliation.properties 中可以配置三个服务端端口, 主要服务端安全策略的出入口需要开放这个三个端口

#tomcat 占用端口
server.port=5602
#长链接服务占用端口
natServerPort=5600
# 异步http占用端口
natHttpServerPort=5601
# websocket占用端口
webSocketServerPort=5603


如果自定义端口,client需要调用SekiroClient.start(String serverHost, int serverPort, final String clientID, String group)中去连接server


App部分


在app的build.gradle添加依赖 implementation 'com.virjar:sekiro-api:1.0.1'

import java.util.UUID;
import com.virjar.sekiro.api.SekiroClient;
import com.virjar.sekiro.api.SekiroRequest;
import com.virjar.sekiro.api.SekiroRequestHandler;
import com.virjar.sekiro.api.SekiroResponse;
// connect sekiro
//服务端host
String testHost = "111.121.132.157";
//客户端标识
String clientId = "googleEx"
//接口组名称
String groupName = "myTestApp";
//暴露的接口名称
String actionName = "getsign";
//拿classloader
// ClassLoader clzLoaderNet = loadPackageParam.classLoader;
//连接服务端并且注册处理的handler
SekiroClient.start(testHost, clientId, groupName)
.registerHandler(actionName, new SekiroRequestHandler(){
    @Override
    public void handleRequest(SekiroRequest sekiroRequest, SekiroResponse sekiroResponse){
    // sekiroResponse.success(" now:"+System.currentTimeMillis()+ " your param1:" + sekiroRequest.getString("param1"));
    //当服务端分配任务时, 这里处理逻辑, 并把结果返回给服务端, 服务端再返回给调用者
    Class<?> clz = XposedHelpers.findClass("com.example.administrator.adddemo.MainActivity", loadPackageParam.classLoader);
      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);
   }
});
// end


TIP:  编译错误 More than one file was found with OS independent path 解决

//build.gradle里android{}添加错误的path
packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/INDEX.LIST'
    exclude ('META-INF/io.netty.versions.properties')
}

试试是否正常


http://111.121.132.157:5602/groupList 展示当前系统中注册过的所有 group

{"status":0,"message":null,"data":["myTestApp"],"clientId":null,"ok":true}


http://111.121.132.157:5602/natChannelStatus?group=myTestApp     展示特定 group 下,注册过那些手机。

{"status":0,"message":null,"data":{"enable":["googleEx"],"disable":[]},"clientId":null,"ok":true}


调用 myTestApp 接口组的 getsign 接口,参数 param1, get/post 都支持


http://111.121.132.157:5601/asyncInvoke?


group=myTestApp&action=getsign&param1=testparam1

{"clientId":"googleEx","data":" now:1618384502944 your param1:testparam1","ok":true,"status":0}



三、总结


Sekiro 更高阶的应用可以参考作者的github中的介绍。基本上 1-2台手机就能搞定的活,自己弄个公网ip搭个就ok。如果规模上去了,还需要调度和均衡负载之类的,Sekiro 就大有用武之地了。67.png


小时候的我们都幻想过自己是带着面具的超级英雄,谁曾想过长大以后,我们成了怪兽出场时四处逃窜的路人。


TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。


关注微信公众号:奋飞安全,最新技术干货实时推送



相关文章
|
4月前
|
Android开发 iOS开发
build.gradle 多渠道打包和用正式签名运行调试
build.gradle 多渠道打包和用正式签名运行调试
|
5月前
|
Linux 数据库 iOS开发
超级签名源码/超级签/ios分发/签名端本地linux服务器完成签名
该系统完全在linux下运行,不存在使用第三方收费工具,市面上很多系统都是使用的是第三方收费系统,例如:某心签名工具,某测侠等,不开源而且需要每年交费,这种系统只是在这些工具的基础上套了一层壳。请需要系统的放大你们的眼睛。
41 0
|
算法 开发工具 Windows
Windows开发签名工具(SignTool)下载
Windows开发签名工具(SignTool)下载
199 0
|
算法 安全 Java
Gradle(10)一篇文章看懂 v1/v2/v3 签名机制
Gradle(10)一篇文章看懂 v1/v2/v3 签名机制
859 0
Gradle(10)一篇文章看懂 v1/v2/v3 签名机制
|
iOS开发
iOS证书及ipa包重签名探究
       iOS证书学习推荐博客代码签名探析,本文重点在于介绍ios8.1.3系统ipa包重签名(如企业证书)无法安装的问题。苹果在iOS8.1.3系统以后加强了对ipa安装包签名的验证,主要区别在于ipa唯一标识在原有Bundle Identifier的基础上增加了证书ID,也就说安装包和手机上已安装APP的Bundle Identifier即使一致,如果两者签名的证书ID不
2065 0
|
算法 安全 JavaScript
IOS 某电商App签名算法解析(二) Frida RPC调用
IOS 某电商App签名算法解析(二) Frida RPC调用
IOS 某电商App签名算法解析(二) Frida RPC调用
|
算法 Android开发 数据安全/隐私保护
【字节码插桩】Android 签名机制 ( 生成 Android 签名文件 | 分析签名文件 | 签名文件两个密码的作用 | 三种签名方式 )(一)
【字节码插桩】Android 签名机制 ( 生成 Android 签名文件 | 分析签名文件 | 签名文件两个密码的作用 | 三种签名方式 )(一)
220 0
【字节码插桩】Android 签名机制 ( 生成 Android 签名文件 | 分析签名文件 | 签名文件两个密码的作用 | 三种签名方式 )(一)
|
Java Android开发 数据安全/隐私保护
【字节码插桩】Android 签名机制 ( 生成 Android 签名文件 | 分析签名文件 | 签名文件两个密码的作用 | 三种签名方式 )(二)
【字节码插桩】Android 签名机制 ( 生成 Android 签名文件 | 分析签名文件 | 签名文件两个密码的作用 | 三种签名方式 )(二)
231 0
【字节码插桩】Android 签名机制 ( 生成 Android 签名文件 | 分析签名文件 | 签名文件两个密码的作用 | 三种签名方式 )(二)
|
算法 安全 Java
【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )(二)
【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )(二)
228 0
【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )(二)
|
安全 算法 Java
【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )(一)
【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )(一)
247 0
【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )(一)