sekiro实践

感谢这篇文章提供思路。
Android逆向之无加固下的Java层和Native层模拟的调度解决方案

一、背景

现在好多android app的加密都放在了so,逆向so需要的时间成本很高,我一直在想有没有一些通用的方案。参考网上的的方案,我实践了如下三种方案。

二、介绍

sekiro是一个基于长链接和代码注入的Android private API暴露框架。
我之前有类似的想法,没想到已经有写好的。
框架分为两部分:

  • server
    暴露一个TCP端口和两个HTTP端口
    管理通过TCP连接的client和user发来的http 请求
  • client
    通过TCP和server连接,响应server发来的请求

工作流程是这样的:

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

三、实践

1、更改端口

  • server端在sekiro-server/src/main/resources/appliation.properties中可以配置三个服务端端口
  • client在SekiroClient.start(String serverHost, int serverPort, final String clientID, String group)中配置

2、服务器端部署

修改settings.gradle的内容为: include  ':sekiro-server', ':sekiro-lib'
这一步是为了过掉Android app的编译
当前目录执行代码: ./gradlew sekiro-server:bootJar 
即可在 sekiro-server/build/libs/sekiro-server-0.0.1-SNAPSHOT.jar找到all-in-one的jar包
通过命令 java -jar sekiro-server/build/libs/sekiro-server-0.0.1-SNAPSHOT.jar  即可启动服务器

3、client编写

1)build.gradle添加依赖 implementation 'com.virjar:sekiro-api:1.0.1'
image.png
2)在service中启动client,并添加handler
image.png
3)编写handler逻辑代码
image.png

4、测试

测试连接:http://YOUR_IP:7008/asyncInvoke?group=sokiller&action=sjd&phone=17611597503)

image.png

推荐阅读更多精彩内容