uniappapk抓包与获取JS

admin 2026-06-30 07:38:29 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该文档详细介绍了uniapp框架开发的APK应用安全测试方法,包括特征识别(如dc/squareup目录、uni-前缀文件)、反编译入口定位技巧,重点演示了通过Frida脚本绕过客户端证书校验实现抓包,并提供修改后的响应体打印函数解决数据流读取问题。同时给出JS文件导出脚本实现源码提取,涉及yakit、ecapture等工具实战应用。 综合评分: 85 文章分类: 移动安全,逆向分析,渗透测试,WEB安全,安全工具


jadx 反编译

AndroidManifest.xml 查看入口 Activity io.dcloud.PandoraEntry 抓包-未证书校验

为进行签名校验时,可以正常抓包 抓包,代理到 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中配置单向证书校验 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

成功打印了请求和响应 uniapp 导出 JS 文件

原本

if (Java.available) {
    Java.perform(function () {
        let WXSDKInstance = Java.use("com.taobao.weex.WXSDKInstance");
        WXSDKInstance["render"].overload('java.lang.String', 'java.lang.String', 'java.util.Map', 'java.lang.String', 'com.taobao.weex.common.WXRenderStrategy').implementation = function (str, str2, map, str3, wXRenderStrategy) {
            console.log(`WXSDKInstance.render is called: str=${str}, str2=${str2}, map=${map}, str3=${str3}, wXRenderStrategy=${wXRenderStrategy}`);
            this["render"](str, str2, map, str3, wXRenderStrategy);
        };
    });
}

结果 参考资料

  • • UNI-APP 渗透测试-抓包 https://bbs.kanxue.com/thread-282683.htm
  • • https://uniapp.dcloud.net.cn/api/request/request.html#configmtls
  • • 某 Uniapp 框架 App hook 方法 https://bbs.binmt.cc/thread-148015-1-1.html
  • • https://bbs.kanxue.com/thread-279917-1.htm

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:进击的HACK 进击的HACK 进击的HACK《uniapp apk 抓包与获取JS》

评论:0   参与:  0