主动调用-Java层主动调用并暴漏至公网
0x00 pyenv更新
当有Python新版本更新后,如果旧版本pyenv没有集成进去的话,需要手动更新一下pyenv版本,方便安装。
Windows
win比较简单,直接 pyenv update
就行
Linux
参考:GitHub - pyenv/pyenv-update: update pyenv and plugins
1、安装pyenv的更新扩展
git clone https://github.com/pyenv/pyenv-update.git $(pyenv root)/plugins/pyenv-update |
2、更新
pyenv update |
0x01 Demo介绍
代码介绍
1、定义两个方法 method01和method02,分别用来进行AES加密和解密。
其中method01为静态方法;method02为实例方法。
2、进到so层中查看具体函数实现,会发现这两个函数是做了动态绑定的(java层和so层的函数名不要求一样,会在代码中进行动态绑定的)
3、在java代码中,会调用method01和method02对StringFromJNI2返回的内容进行加密和解密
StringFromJNI2函数返回的内容为“Hello from c++ StringFromJNI2”
到这,整个demo的逻辑就清楚了~~~
参数构造和主动调用核心原则
第一步:Hook
主动调用之前先hook,hook本身就是一个主动调用的过程。
android hooking list classes |
# hook类中所有方法 |
第二步,主动调用
1、首先,method01是静态方法,可以直接调用
运行之后发现,打印出来的result 为 undefined????这是啥原因
这是因为,我们将 var result 定义到了Java.preform的虚拟机中了,这样在主动调用的时候,是传不到外面来的。
所以,修改代码如下:
成功打印:
2、method02是非静态方法,所以,需要先找到它的实例对象,再调用method02方法
使用Java.choose进行查找。
这块就可以保证在JS代码中主动调用正常运行了
第三步:rpc
rpc.exports={ |
基于IP构建Frida-server集群
使用Python来调用上面的Frida脚本
import frida |
0x02 配置flask实现Http接口调用
[原创]frida-rpc 远程调用SO里面的加解密算法-Android安全-看雪-安全社区|安全招聘|kanxue.com
apk拖到jadx里面,找到我们需要调用的方法
我们就不去分析他的so了 我们要使用的是frida-rpc远程调用接口。。。
看一下,这两个方法的具体代码:
传string参数 返回byte[]
直接调用encryptSrc 传string返回string,decryptSrc 同理
上frida rpc代码
test.js
python 代码 我们要远程调用API接口,
直接在GitHub下载的 别人代码改了一下,全POST接口方法传参数
flask框架
启动我们手机里面的frida-server 服务,我改名为fs 用后台启动
看图
运行我们的flask框架
调用一下加解密,接迷的API接口看看
0x03 配置NPS实习外网调用fs或http接口
https://blog.csdn.net/qq_41813208/article/details/113760249
0x04 压力测试Http接口并发性能
siege压力测试工具,可参考如下: