uniappapk抓包与获取JS"

admin 2026-10-20 11:44:47 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_imagejadx 反编译

AndroidManifest.xml 查看入口 Activity
io.dcloud.PandoraEntry

adb shell dumpsys window | findstr CurrentFocus

抓包-未证书校验

为进行签名校验时,可以正常抓包
抓包,代理到 yakit 上
抓包-证书校验

从网站https://vue.ruoyi.vip/login导出 crt 证书,然后 crt 转 cer
参考:

  • • 导出证书 https://blog.csdn.net/c5113620/article/details/80384660
  • • 证书转换 https://www.zhihu.com/question/401504013

在RuoYi-App-v1.2.0\\utils\\request.js中配置单向证书校验

uni.configMTLS({
  certificates: [{
      'host': 'vue.ruoyi.vip',
      'server': ['/static/ruoyi.cer'],
  }],
  success ({code}) {}
});

Hbuilder 运行代码到 Android 设备,未代理到 yakit 时
uniapp 抓包

Frida 脚本:https://github.com/windy-purple/uni\_app-Packet-capture

项目中的 uni-app.js 脚本,有一点需要注意的,就是在函数printResponse。该函数的目的是打印响应包,但在打印响应体的时候,用到了

var bodystr = bufferobj.readUtf8();

而在OkHttp中,response.body().source().readUtf8() 这种读取方式是一次性的,一旦你读取了数据流,它就不会再被应用程序读取到了。直接使用上述的脚本,app 无法正常接收响应包。

替换脚本中的函数printResponse,新代码如下:

    function printResponse(response) {
        var code = response.code();
        var Headers = response.headers();
        var message = response.message();
        var Protocol = response.protocol();

        var content_type = Headers.get(\"Content-Type\");
        var headers = Headers.toString();
        var protocol = Protocol.toString();

        console.log(\"[Response]:\")
        console.log(protocol + \" \" + code + \" \" + message);
        console.log(headers);

        var responseBody = response.body();
        if (!responseBody) return response;

        var source = responseBody.source();
        var Long = Java.use(\"java.lang.Long\");
        source.request(Long.MAX_VALUE.value); // 缓冲整个内容

        var buffer = source.buffer().clone();      // 克隆一个新的缓存,不消耗原有的

        if (ContentTypeIsPrint(content_type) == 1) {
            console.log(buffer.readUtf8());
        } else {
            console.log(buffer.readByteString().hex());
        }
        return response;
    }

执行脚本:

frida -U -f com.ruoyi.labs -l uni-app.js

成功打印了请求和响应

./ecapture tls