Sekiro + Xposed 签名黑盒解决方案

背景

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

sekiro-server端配置

链接: 项目地址
这个是已经打好的jar包直接使用就行
在这里插入图片描述

xposed模块编写

  1. 导入sekiro依赖包
    在app的build.gradle文件dependencies标签导入
implementation 'com.virjar:sekiro-api:1.0.1'
  1. 在xposed标签的 handleLoadPackage方法中进行注册,这里面的代码我只是进行简单的调用,后续我会用某个app进行实战演示,大家可以关注下。
        Log.i(TAG, "connect server....");
        //服务端host
        String testHost = "192.168.0.106";
        //客户端标识
        String clientId = UUID.randomUUID().toString();
        //接口组名称
        String groupName = "addDemoTest2";
        //暴露的接口名称
        String actionName = "myAdd";
        //拿classloader
        final ClassLoader classLoader = 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", 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);
                        String addNum = Integer.toString(arg1+arg2);
                        Log.i(TAG, "result : " + addNum);
                        sekiroResponse.success(addNum);
                    }
                });
  1. 打包编译
    TIP: 如果编译错误 More than one file was found with OS independent path 解决,build.gradle文件下的android配置下增加以下代码,剔除一些重复资源
    // 去除重复文件
    packagingOptions {

        exclude 'META-INF/*******'

        exclude 'META-INF/INDEX.LIST'

        exclude 'META-INF/io.netty.versions.properties'

    }

调用结果展示

  • http://127.0.0.1:5602/groupList 展示当前系统中注册过的所有 group
    在这里插入图片描述
  • http://127.0.0.1:5602/natChannelStatus?group=addDemoTest2 注册过的设备展示
    在这里插入图片描述* http://127.0.0.1:5601/asyncInvoke?group=addDemoTest2&action=myAdd&arg1=300&arg2=300 接口调用展示

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ks_coder

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值