王者营地 Token获取:从 SSL Pinning 绕过到 Frida 动态插桩

news2026/5/7 7:01:25
王者营地官方英雄战力数据抓包实战从 SSL Pinning 绕过到 Frida 动态插桩获取Token背景近期在研究王者荣耀英雄战力数据时需要通过王者营地 App 获取官方战力榜接口参数。过程中遇到了 HTTPS 抓包失败、SSL Pinning 拦截等问题最终通过 Frida 动态插桩成功绕过完整记录下这次技术探索过程。文章目录王者营地官方英雄战力数据抓包实战从 SSL Pinning 绕过到 Frida 动态插桩获取Token一、目标与需求二、初步尝试直接抓包2.1 环境准备2.2 操作抓包2.3 遇到的问题三、解决方案选择四、Frida 环境搭建4.1 安装 Frida 工具链4.2 部署 frida-server 到手机4.3 启动 frida-server4.4 验证连接五、编写 SSL Pinning 绕过脚本5.1 脚本原理5.2 完整脚本ssl-bypass.js5.3 关键方法解析六、执行 Hook 与抓包6.1 Attach 到运行中的进程6.2 配合 Fiddler 抓包6.3 配合 HttpCanary 抓包七、获取到的接口参数请求示例八、完整技术总结8.1 问题解决路径8.2 核心知识点8.3 注意事项九、参考资源一、目标与需求需要获取王者营地 App 中英雄战力榜的官方接口参数用于查询全国/省/市/区各级榜单英雄最低上榜战力英雄排名数据其实本篇主要是抓取UserID和Token本来就想用一下王者荣耀官方战力查询接口但是获取不到参数这能忍吗不能忍。参考 分享王者荣耀官方战力查询接口直接调用王者营地API获取英雄战力数据目标接口POSThttps://kohcamp.qq.com/honor/ranklist Content-Type:application/json这是目前最权威、最稳定的战力数据来源很多开源项目包括类似工具都使用这个接口请求参数JSON{adcode:310000,// 地区代码如上海310000roleId:116581781,// 玩家角色IDareaId:3,// 大区1QQ安卓, 2iOS安卓, 3微信安卓, 4微信iOSheroId:146,// 英雄代码如146露娜recommendPrivacy:0}请求头需要token从王者营地 App 抓包获取userId营地用户ID⚠️ 这个接口需要有效的 token通常需要从王者营地 App 抓包获取且 token 可能会过期。二、初步尝试直接抓包2.1 环境准备推荐方案在 PC 上使用 雷电模拟器/夜神模拟器 Fiddler操作最方便。工具抓包工具Fiddler5.0、 HttpCanary 雷电模拟器9Android 9.0 ADB调试工具配置模拟器 WiFi 代理指向 Fiddler端口 8888证书Fiddler 根证书已安装到模拟器用户证书目录Fiddler5.0可以去吾爱论坛下载HttpCanary 尽量找找高级版。ADB从官网下载了解压后添加个环境变量即可。我最终Fiddler还是没抓到包但是HttpCanary 可以。2.2 操作抓包配置抓包环境以 Fiddler 模拟器为例步骤 1配置 Fiddler 下载安装 Fiddler 打开 Tools → Options → HTTPS 勾选 Decrypt HTTPS traffic 点击 Actions → Trust Root Certificate 安装证书 切换到 Connections 标签勾选 Allow remote computers to connect 记住 Fiddler 的监听端口默认 8888 步骤 2配置模拟器代理 打开模拟器的 WiFi 设置 长按当前 WiFi → 修改网络 → 高级选项 代理选择 手动 输入你电脑的 IP 地址 和端口 8888 步骤 3安装 Fiddler 证书到模拟器 在模拟器浏览器中访问http://你的电脑IP:8888 下载并安装 Fiddler 根证书打开Fiddler【工具】-【选项】-【HTTPS】勾选抓取HTTPS连接和解密HTTPS流量可以选择仅从远程客户端抓取因为我们只要模拟器的流量。连接这里配置监听端口默认8888还有勾选允许远程计算机连接。打开模拟器配置模拟器代理记得使用桥接网络模式然后点击wifi配置代理首先查一下你的电脑的ip地址这个时候你的抓包软件应该能捕获到http的流量了之后打开浏览器地址栏输入你的代理IP端口我这里是192.168.10.121:8888,会出现以下界面点击下载完成后安装CA证书。安装好之后代理就配置完成了打开王者营地你会发现根本抓不到需要的包同时还有告警提示打开HttpCanary看看点击设置、选择目标应用、安装CA证书后发现还是一样的甚至应用界面都无法打开了。具体的分析和处理见下面。2.3 遇到的问题抓包时发现所有 HTTPS 请求都显示为CONNECT 隧道无法解密甚至都抓不到HTTPS的流量这个我怀疑是抓包工具的问题后面换成HttpCanary正常的CONNECT galileotelemetry.tencent.com:443 HTTP/1.1 Host: galileotelemetry.tencent.com:443 Connection: Keep-Alive User-Agent: okhttp/4.9.1 A SSLv3-compatible ClientHello handshake was found...原因分析王者营地 App 使用了SSL Pinning证书锁定技术检测到 Fiddler 的中间人证书后拒绝连接导致 Fiddler 只能看到 TCP 握手层无法获取应用层 HTTP 内容。三、解决方案选择方案原理难度适用性Xposed JustTrustMe模块绕过证书校验中需要 Root XposedFrida 动态插桩运行时 Hook 修改验证逻辑中高无需 Xposed更灵活HttpCanary内置 SSL Pinning 绕过低部分版本需 Root降级 Android 版本低版本默认信任用户证书低功能可能受限这里我最终选择Frida原因无需安装 Xposed 框架可以精确 Hook 目标方法对系统侵入性较小对其它感兴趣的伙伴也可以动手试一下四、Frida 环境搭建4.1 安装 Frida 工具链首先你的电脑环境得先安装了python。# 电脑端安装 frida-toolspipinstallfrida-tools# 验证版本frida--version# 输出17.9.5# 查看adb连接情况这里模拟器设置里面要先开启adb调试adb devices# 输出List of devices attached# emulator-5554 device # 这个就是模拟器设备信息4.2 部署 frida-server 到手机frida-server下载 https://github.com/frida/frida/releases# 查看手机架构adb shell getprop ro.product.cpu.abi# 输出x86_64 不同的模拟器不同# 根据上面输出的信息下载对应版本 frida-server# https://github.com/frida/frida/releases# frida-server-17.9.5-android-x86_64.xz# 解压并重命名也可以用自己电脑解压软件解压如7-zip、Bandizipxz-dfrida-server-17.9.5-android-x86_64.xzmvfrida-server-17.9.5-android-x86_64 frida-server# 推送到手机adb push frida-server /data/local/tmp/# 赋予执行权限adb shellchmod 755 /data/local/tmp/frida-server4.3 启动 frida-server# adb shell /data/local/tmp/frida-server # 需要 Root 权限启动adb shellsu -c /data/local/tmp/frida-server 如果遇到报错“Unable to save SELinux policy to the kernel: Permission denied”这是SELinux 权限问题用 Root 权限启动。adb shellsu/data/local/tmp/frida-serveradb root adb shell/data/local/tmp/frida-server 常见问题Address already in usefrida-server 已在运行无需重复启动Permission denied未获取 Root 权限4.4 验证连接frida-ps-U看到手机进程列表说明连接成功。如果报错先杀掉旧的 frida-server后重新启动adb shellsu -c killall frida-serveradb shellsu -c /data/local/tmp/frida-server frida-ps-U五、编写 SSL Pinning 绕过脚本5.1 脚本原理SSL Pinning 绕过核心思想Hook 住 App 中验证服务器证书的方法让其永远返回验证通过。王者营地使用的技术栈HTTP 客户端OkHttp 4.9.1SSL 验证Android 系统 TrustManagerImpl域名验证HostnameVerifier一句话总结Frida 脚本让 App 对 Fiddler 的假证书睁一只眼闭一只眼但 Fiddler 自己还需要被 Android 系统信任才能解密内容。5.2 完整脚本ssl-bypass.jsJava.perform(function(){console.log( Hooking 王者营地 SSL);// 1. Hook 系统级证书校验核心varTrustManagerImplJava.use(com.android.org.conscrypt.TrustManagerImpl);varArrayListJava.use(java.util.ArrayList);TrustManagerImpl.checkTrustedRecursive.implementationfunction(){console.log([] checkTrustedRecursive() bypassed);// 直接返回空列表跳过所有证书链校验returnArrayList.$new();};// 2. Hook OkHttp 证书锁定try{varCertificatePinnerJava.use(okhttp3.CertificatePinner);CertificatePinner.check.overload(java.lang.String,java.util.List).implementationfunction(){console.log([] OkHttp CertificatePinner bypassed);};}catch(e){console.log([-] OkHttp CertificatePinner not found);}// 3. Hook 域名验证try{varhostnameVerifierJava.use(javax.net.ssl.HostnameVerifier);varMyHostnameVerifierJava.registerClass({name:com.example.MyHostnameVerifier,implements:[hostnameVerifier],methods:{verify:function(hostname,session){console.log([] Hostname verified: hostname);returntrue;// 任何域名都通过}}});varHttpsURLConnectionJava.use(javax.net.ssl.HttpsURLConnection);HttpsURLConnection.setDefaultHostnameVerifier(MyHostnameVerifier.$new());}catch(e){console.log([-] HostnameVerifier hook failed);}console.log( Hooks ready);});替代的Python脚本hook.pyimportfridaimportsysdefon_message(message,data):print(message)devicefrida.get_usb_device()piddevice.spawn([com.tencent.gamehelper.smoba])sessiondevice.attach(pid)withopen(ssl-bypass.js,r,encodingutf-8)asf:scriptsession.create_script(f.read())script.on(message,on_message)script.load()device.resume(pid)sys.stdin.read()5.3 关键方法解析Hook 目标原始功能Hook 后效果TrustManagerImpl.checkTrustedRecursive()递归验证证书链是否可信直接返回空列表跳过校验CertificatePinner.check()OkHttp 验证证书指纹空实现不执行校验HostnameVerifier.verify()验证域名与证书匹配永远返回 true六、执行 Hook 与抓包6.1 Attach 到运行中的进程先手动打开王者营地 App# 1. 确认 frida-server 在运行adb shellsu -c ps | grep frida# 2. 查看进程 PIDfrida-ps-U|findstr 王者营地# 输出ID 王者营地# 3. Attach 并加载脚本frida-U-p上面的ID-lC:\Users\yxn\Downloads\ssl-bypass.js成功后会看到[] Hostname verified: galileotelemetry.tencent.com [] Hostname verified: galileotelemetry.tencent.com6.2 配合 Fiddler 抓包注意Frida 绕过了 App 的证书校验但 Fiddler 还需要被 Android 系统信任。证书安装步骤# 导出 Fiddler 证书到桌面# Tools → Options → HTTPS → Actions → Export Root Certificate# 推送到系统证书目录模拟器已 Rootadb root adb remount adb push FiddlerRoot.cer /system/etc/security/cacerts/ adb shellchmod 644 /system/etc/security/cacerts/FiddlerRoot.ceradbrebootFiddler 里全是 Tunnel to 说明 HTTPS 解密没生效Frida 虽然绕过了 App 的 SSL Pinning但 Fiddler 本身没能解密流量。6.3 配合 HttpCanary 抓包如果 Fiddler 证书一直搞不定直接在模拟器里装 HttpCanary下载 HttpCanary APK 安装到模拟器HttpCanary 设置 → 安装根证书 → 选择 System Trusted需要 RootHttpCanary 有内置 SSL Pinning 绕过功能开启抓包 → 打开王者营地 → 操作战力查询在 HttpCanary 里直接看明文请求成功了可以看到捕获到了kohcamp.qq.com相关的数据随便点一个进去里面就有我们要的内容七、获取到的接口参数请求示例POST https://kohcamp.qq.com/honor/ranklist HTTP/1.1 Host: kohcamp.qq.com token: eyJhbGciOiJIUzI1NiIs... userId: 123456789 openid: oABC123... appid: 1104466820 version: 8.94.0417 Content-Type: application/json { adcode: 310000, // 地区代码上海 roleId: 116581781, // 角色ID areaId: 3, // 大区3微信安卓 heroId: 146, // 英雄ID146露娜 recommendPrivacy: 0 } # python请求头 DEFAULT_HEADERS { Content-Type: application/json, Accept: */*, Host: kohcamp.qq.com, Connection: keep-alive, User-Agent: ( Mozilla/5.0 (Linux; Android 14; PLR110 Build/UKQ1.230917.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/121.0.6167.178 Mobile Safari/537.36 ), }关键参数说明参数位置说明tokenHeader营地登录态令牌userIdHeader营地用户IDopenidHeader微信/QQ OpenIDroleIdBody游戏角色IDareaIdBody大区代码1QQ安卓, 2iOS, 3微信安卓, 4微信iOSheroIdBody英雄ID可从 herolist.json 获取adcodeBody行政区划代码100000全国, 310000上海等编写一点python代码战力数据查询请求成功舒服了。八、完整技术总结8.1 问题解决路径直接抓包失败CONNECT 隧道 ↓ 识别 SSL Pinning 问题 ↓ 选择 Frida 动态插桩方案 ↓ 搭建 Frida 环境frida-server 客户端 ↓ 编写 Hook 脚本绕过证书校验 ↓ Attach 到目标进程 ↓ 配合 Fiddler 系统证书 ↓ 使用HttpCanary抓包获取 ↓ 成功获取明文接口参数8.2 核心知识点SSL PinningApp 将服务器证书指纹硬编码防止中间人攻击Frida 动态插桩运行时修改内存中的方法实现无需修改 APKTrustManagerImplAndroid 底层证书链验证核心类OkHttp CertificatePinner应用层额外的证书指纹校验8.3 注意事项法律合规仅供学习研究勿用于商业或恶意用途账号安全token 等凭证有有效期勿泄露请求频率避免高频调用防止被封接口变动官方可能随时更新接口需持续关注九、参考资源Frida 官方文档OkHttp SSL 文档Android TrustManager 源码SSL Pinning 绕过技术总结结语这次探索从抓包失败到深入理解 SSL Pinning 机制再到掌握 Frida 动态插桩技术收获颇丰。移动安全领域还有很多值得深挖的方向保持好奇心持续学习。有了战力数据后面我们就可以做很多的事情了比如战区修改推荐合适的战区分析那个战区容易上榜等具体的开发见后续文章创作不易点赞收藏支持一下吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2590705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…