yml2213
|
d2adfb25ad
|
feat(huya): doLaunch live对拍定案 - 信封/键/路径被服务端接受, tReq值恒定拒绝
- App侧全细节确认: a09.getRequestKey=tReq / UniPacket(true)=v3 / 值=write(struct,0)
/ URL=/launch/doLaunch / getOtherParams追加 platform/version/channel/uid 键
/ 传输类型服务端动态下发(HTTP是否真渠道未定)
- live诊断: E(空值)->require field / F(缺键)->not found key / G(0x0c)->完全复现
'read struct type mismatch tag0 type12' -> 服务端确实解析tReq值, 语义与本地djce不同
- 工具升级: --live 用5键 App同等 map; 悬而未决点=需App真实doLaunch帧(约束内路径全探)
- logcat无klog / xlog+mmap2 mars压缩不解 / 冷启动走缓存不发网络launch / 禁pm clear
- 可选项: 代理+CA被动抓包 / 模拟器新装 / 继续抠mars xlog
|
2026-08-28 19:13:36 +08:00 |
|
yml2213
|
44109aa408
|
feat(huya): doLaunch wire 离线还原 + GUID铸币复放器原型 (huya_launch_mint.py)
- JCE 规格: LiveLaunchReq{tId,tLiveUB,bSupportDomain}/LiveUserbase{eSource,eType,tUAEx}
LiveAppUAEx{sIMEI,sAPN,sNetType,sDeviceId,sMId}/UserId{lUid..sQIMEI}/LiveLaunchRsp{t0=sGuid}
(classes9/11 dex writeTo 精确还原)
- 信封: UniPacket, servant=launch (@WupServant), func=doLaunch, sBuffer key=_wup_data
- tools/huya_launch_mint.py: 请求构造 + 响应解析(sGuid_candidates 递归兜底) + self-test 回环 PASS
- 传输(hyns/KiwiServant)与响应形态留待 live 实测校准; 禁设备侧活动
|
2026-08-28 18:36:47 +08:00 |
|
yml2213
|
bed53a6586
|
feat(huya): isNative定案NativeBridge纯Java + GUID值流还原(服务端sGuid签发) + unidbg金测试恢复
- dex直读判定: NativeBridge.b/a/c/g/h/klog全为Java(classes5), NativeEntry全native; .data描述符块=GetStaticMethodID反向调Java的name/sig常量表
- GUID值流完整还原: native getGUID=纯缓存getter(pref hydeviceid_guid -> WupHelper.getGuid() -> b(100) -> 回写)
YYProtoSdkModule.initHuyaUdbSdk(classes17)->HyDeviceProxy.j(appid,WupHelper.getGuid(),mid)->pnc.a
WupHelper.getGuid->HalImpl.getGuid->sGuidProperty<--live-launch服务端LiveLaunchRsp.sGuid(32hex硬校验)
- 修正结论: GUID非本地指纹公式, 铸币=服务端doLaunch/device_register按虚拟设备指纹签发sGuid
- unidbg: 新harness回归根因=C++ locale/facet在unidbg libc++上ABI崩溃; 旧harness+当前merged恢复金测试MATCH, 实证native缓存写回流
- 新工具: tools/dex_probe_native.py(dex access_flags判定), tools/dex_scan_calls.py(跨dex调用点扫描)
|
2026-08-28 18:15:46 +08:00 |
|
yml2213
|
27c71a3ad2
|
feat(huya): hook阶段结论 - NativeBridge排除动态JNI与各库RN, 静态物证=内联描述符块; 双库unidbg打通; 设备稳定注意
- 排除: Java_导出扫描/各库dlopen JNI_OnLoad RN拦截/健康进程重触发RN = 全0命中
- unidbg verbose: hydeviceid仅FindClass+NewGlobalRef; udb仅注册HuyaAuthCore
- 物证: hydeviceid .data@0x3e21e4 内联方法描述符块(klog/b/c/g/h+getDataDir/getPath) + 类名字符串
- 双库: udb(JNI_OnLoad@0x262620)解密合并 unidbg 加载成功; merge 升级段驱动+动态保留+init_array置零+仅重定位槽清理
- 新输入: udb_deviceID/udb_deviceID_encode/oaid prefs + b(104) + Build.*字段
- 设备稳定: pm clear+frida attach 探测致闪退, 后续禁用; 无frida冷启动健康
- 静态还原重启点: isNative定讫 -> 注册函数(运行期建表模式) 或 Java逻辑; unidbg差分oracle + fnPtr兜底
|
2026-08-28 17:19:45 +08:00 |
|
yml2213
|
5ba70d5b4e
|
feat(logging): improve local and docker log handling
|
2026-08-28 16:49:00 +08:00 |
|
yml2213
|
70621cff8f
|
feat(huya): unidbg 金测试打通 - 采集器加密可复现(androidId=PDSuHx..)/GUID=0a7dfa..一致
- 输入图定案: 库内零硬件文件读, 种子=ANDROID_ID+服务端hydeviceid_config+MID, 属性层无关(X1/X2)
- 真机全段解密 dump(phone_dump_hydev_full) + merge_decrypted 合入原文件 → unidbg 可直接加载
- unidbg(JDK21+patch) harness: JNI 桩(SharedPreferences日志化/Settings.Secure/NativeBridge)
金测试: androidId 加密态与 getGUID 全部与真机一致
- 遗留: NativeBridge.b(100) 原生归属库未定(非hydeviceid/udb/device-util), 当前桩替顶
- 修正结论: '单机不可铸造'判断错误, GUID=b(100)=f(androidId密, config, MID) 输入全可控
|
2026-08-28 16:06:25 +08:00 |
|
yml2213
|
6ded82ac8b
|
fix(douyu): reject invalid activity cookies
|
2026-08-28 15:51:59 +08:00 |
|
yml2213
|
9ee4e49a50
|
feat(douyu): support elite handbook lock orders
|
2026-08-28 14:06:11 +08:00 |
|
yml2213
|
49aae8b74c
|
docs(huya): 算法生成路径分析 - 标准密码学原语定位/固定密钥候选/决定性实验/双路径(静态对拍+unidbg)
- dump 静态取证: AES S-box@0x36be82 / MD5 IV@0x36c190 / SHA1 K@0x36c1a0 / base64@0x3e8880
- .data 明文密钥候选: 7jbF5...(=AES-256 key) / HuyaUdb1928374650qwertyuiop / 865a4924...×2 / 961c151d...(SHA1)
- getGUID(0x20f8c8) 反汇编确认标准 OLLVM 平坦化 + 内部调用锚点 0x46140/0x1d6e68
- 指出'单机不可铸造'实验未覆盖 fileshydckey/全清数据/IMEI/qimei → 种子集可能可再生成
- 决定性实验 E1-E4(输入图+差分语料) + 路径A(纯Python黑盒对拍, 不需要解全部OLLVM) + 路径B(unidbg 仿真金测试)
- 服务端验收闭环: 铸币→dfpReport注册→WUP登录, 从第一天起验证
|
2026-08-28 12:55:20 +08:00 |
|
yml2213
|
022357ad79
|
docs(huya): 分析 getGUID 生成机制 - getter读缓存/init生成/硬锚底层硬件
- phone_stalk_getguid: Stalker 跟踪 getGUID(0x20f8c8) 执行, 揭示内部调用
(art::JNI::NewStringUTF 外层, libhydeviceid 内部函数+jsemalloc, 不读属性)
- phone_getguid_ioctl: getGUID 窗口 ioctl/openat/property_get 追踪 -> ioctl=0, 确认是 getter 非生成器
- phone_init_ioctl: init()(0x20e6e4) 窗口追踪 -> 巨大 ioctl 噪音(App启动) + open fileshydckey(设备密钥)
- getguid_stalk/ioctl/init 证据
结论: 32hex GUID = init 时用底层硬件指纹(SoC序列号等不可改)+hydckey经OLLVM保护算法生成并缓存;
getGUID 只是读取。单机不可铸造(种子为不可改硬件ID)。
|
2026-08-28 12:36:17 +08:00 |
|
yml2213
|
0c6aff6a6d
|
docs(huya): 逆向定位 32hex hdid = NativeEntry.getGUID() + 真机注入通道证据
核心结论:
- 32hex hdid (WUP 登录帧 field1.tag0) = com.huya.security.hydeviceid.NativeEntry.getGUID()
- 金样本 ed0db8 为金样本设备 GUID; 当前真机 M2102J2SC getGUID()=0a7dfaa882938a6ab502511452142c57(稳定)
- NativeEntry 全字段: getGUID(32hex)/getCDID(40hex)/getHDID(40hex)/getMID(16hex)/getSDID(base64 safedeviceid)
- 单机不可铸造: 改 serialno/ANDROID_ID/删files/hydevice持久化 均不变(硬锚底层硬件)
- libhydeviceid.so 为 OLLVM+datadiv 壳; 用 dlopen->JNI_OnLoad->RegisterNatives(env表索引215) 绕开混淆
脚本: phone_probe_registernatives2(注册表)/phone_java_call_nativeentry(Java读getGUID)/phone_read_hdid(native hook)
phone_dump_hydev(dump解密so)/phone_probe_login_frame(登录帧)/arm64_disasm(反汇编)
证据: hdid_regtable/java_nativeentry/hdid_read/login_frames/hdid_probe* + libhydeviceid_{original,dump}.so
|
2026-08-28 12:30:34 +08:00 |
|
yml2213
|
45b5e9128c
|
docs(huya): 新增总览去困惑地图 + 代码风险标记 + 真机 Frida 稳定注入通道
- docs/HUYA_APP_OVERVIEW.md: 整体流程/三形态hdid区分/登录入口盘点/随机化矩阵/风险清单/真机Frida现状
- core/huya 各模块 docstring 加风险标记与 hdid 名称混淆提示, 指向总览
- tools/app_login_flow 标注已过时(未接注册链), tools/huya_device_profile 标注与 core 策略关系
- scripts/phone_stable_capture.py + diag_phone_lifecycle.py: 真机 spawn+art_callsite 稳定抓帧/四组诊断
- evidence/diag_phone/: 真机基线/attach/稳定抓帧实验证据 (90s 存活无 EGL 崩)
|
2026-08-28 10:44:56 +08:00 |
|
yml2213
|
49c5c36c05
|
docs(huya): 模拟器存活闪退诊断报告与 Frida 探测脚本证据
- 诊断报告: attach 主进程静默退出/EGL 崩溃, 仅约 4s 窗口可抓帧
- scripts: attach/spawn/hook/emu 系列 Frida 脚本与抓帧/验证工具
- evidence: identity/reqchain/frame/inputbuf/magic_buf/propedge 抓取样本,
emu_* 存活对比, diag_* 策略实验, baseline 裸测基准
|
2026-08-27 17:58:32 +08:00 |
|
yml2213
|
36b5d78050
|
docs(huya): 记录 dfpReport 零设备生成突破与生成器工具
- 破解进度: 服务端不校验 cw 内容, 随机 4146B cw 即可 200 + 签发新 t2/t5
- 生成流程: 零设备注册链 getDfpConfig->selectOperator->dfpReport 打法
- tools/dfp_gen.py: cw/body 构建器 (TAF 4226B 结构)
- tools/dfp_cli.py: 注册链 CLI
- evidence: cw JSON 段/collection 段抓取样本
|
2026-08-27 17:57:38 +08:00 |
|
yml2213
|
0c86e182b0
|
feat(huya): 零设备 dfpReport 注册链迁入 core/huya 并接入生产登录
- 新增 core/huya/dfp_register: 随机 4146B cw 生成 + 注册响应解析 (t1/t2/t5),
修复 JSON 模板 %s 数不匹配的 TypeError bug
- app_login 每次 WUP 登录前执行注册链取新 safedeviceid/device_id,
不再读取画像旧固定值; 注册失败抛 HuyaAppLoginError 终止, 不静默回退旧链
- device_profile 移除固定 SAFEDEVICEID_DEFAULT, 画像只承载 soft 字段
- tools/huya_device_register 同步零设备生成链路 (--gen/--gen-login)
- 新增 tests/test_huya_dfp_register (9 项), 扩展 test_huya_app_login 注册接线 (4 项)
|
2026-08-27 17:47:53 +08:00 |
|
yml2213
|
36325cf639
|
继续破解进度
|
2026-08-26 18:28:33 +08:00 |
|
yml2213
|
da2cf5a61d
|
feat(huya): 整合 App 协议登录获取 Cookie 全链路并与 Web 登录解耦
- core/huya: 新增 app_login, wup_encoder, nonce_forge, cert_forge, envelope_forge, device_profile, udb_aes
- core/huya/__init__.py: 导出 login_huya_app_password 与 HuyaAppPasswordLogin
- web/backend: 新增 /accounts/app-password-login 与 /accounts/app-password-login/selected 路由及 Schema,与原 Web 密码登录独立分开
- web/frontend: 增加 App 登录 API 与前端界面“App 登录选中”操作,弹窗结果明确区分
- tests: 新增 test_huya_app_login.py 单元测试覆盖全链路
|
2026-08-26 15:51:30 +08:00 |
|
yml2213
|
4eec01568f
|
dfpReport: 确定加密为逐字节XOR(动态keystream)+同步pair捕获+IDA导出线索, 记录破解进度
|
2026-08-26 14:17:58 +08:00 |
|
yml2213
|
acb0a737eb
|
定位并实现设备注册链: wsapi.huya.com getDfpConfig->selectOperator->dfpReport
- 纯Python直连三接口(无登录门槛), 重放与真机HAR一致
- 实测: dfpReport响应 t5=登录帧device_id, t2=登录帧safedeviceid(服务端签发)
- 注册链新action+t5登录 -> cred✅; t1非hdid(硬错); 改selectOperator指纹不触发重注册
- 设备身份锚=dfpReport加密体(10B魔数+加密采集数据), 生成算法未破解
- hdid=libhydeviceid.so native setDeviceInfo上报, 不走HTTP, 不可铸造
- tools/huya_device_register.py + evidence/dfp_chain_golden.json
|
2026-08-26 11:19:40 +08:00 |
|
yml2213
|
c2d578a3e0
|
hdid 溯源实测: libhydeviceid.so设备ID, 纯代码不可铸造; 共用登录无碍仅设备维度关联风险
- df/collect 响应含40hex hdid(每次新值)但 WUP 登录拒绝(652B) -> 非同一体系
- runner.js 输出 __HDID__, get_huya_sdid 一并返回
- 文档: hdid 来源/可铸造性/共用风险评估 + 设备池方案
|
2026-08-26 11:01:50 +08:00 |
|
yml2213
|
1557760a20
|
多账号设备画像: 设备/指纹/风控数据归类 + 每账号独立画像全链接入
- 实测校验矩阵: hdid+app_version 硬锚(APP_SIGN_NOT_MATCH), fingerprint
换→safe_auth滑块(自动过), device_id/机型/safedeviceid 直接过
- 定位注册接口: df/token+collect(sdid每次新值), wsapi dfpReport链(未破解)
- tools/huya_device_profile.py: 每账号画像生成/持久化(幂等)
- app_login_flow.login_cred / full_web_cookie 接入画像, 端到端出全套cookie
|
2026-08-26 10:50:04 +08:00 |
|
yml2213
|
8efd3b8d02
|
纯Python活动页TAF服务端验证登录态: webActUI WS通道 + 金样本对拍
- tools/huya_activity_verify.py: 认证帧+getActUserTaskDetail两帧即验证
(200请求成功+6任务项=已登录; 无cookie对照905=未登录)
- 信封格式定论: L2=len(value), L1=L2+14, 身份一致性要求, actId尾字段=11 62 2f
- HTTP cdnws端点被volc-dcdn封锁非浏览器TLS, WS wsapi可纯Python直连
- evidence: 金样本(逐字节)+ 浏览器当前会话帧 + 验证结果
|
2026-08-26 02:35:42 +08:00 |
|
yml2213
|
97e6d14139
|
feat(huya): nonce生成机制完全破解 - 任意账号零设备出完整CK闭环
动态hook实锤(scripts/hook_nonce_chain.py):
rnd = XXTEA(pack(st) + pack(counter|st<<16), key=MD5hex(uid_str + k1)[:16])
- st=毫秒时间戳, counter同st内递增
- k1=设备常量865a4924...(不随账号变, evidence/nonce_k1.json)
- Python复刻(tools/nonce_forge.py)对设备两轮rnd逐字节MATCH
推翻v2误判(X2'nonce账号绑定令牌'实为nonce内编码uid):
- 换账号用目标uid重算nonce而非复用旧nonce!
- 纯随机nonce必40020因解不出合法st/counter结构
实测: 同账号+跨账号(hy_300024708从未设备登录)本地nonce铸证bind均通过,
full_web_cookie/full_auto_safe 任意账号密码->全套cookie(udb_cred/udb_biztoken)
|
2026-08-26 00:49:01 +08:00 |
|
yml2213
|
da9937707c
|
feat(huya): wupData信封规则定论 - 原nonce必带/t3-cred一致/session不可动 + 交接文档更新
|
2026-08-25 21:22:19 +08:00 |
|
yml2213
|
44b50bb503
|
feat(huya): safe_auth滑块自动过验闭环 - 新账号密码登录也全自动
|
2026-08-25 21:22:19 +08:00 |
|
yml2213
|
0019e5f7a1
|
docs: 纯Python全自动登录总结与交接文档
|
2026-08-25 19:47:58 +08:00 |
|
yml2213
|
e5a615f480
|
feat(huya): safe_auth定性为udbrtt滑块-已有solver可自动过
|
2026-08-25 19:46:30 +08:00 |
|
yml2213
|
72932d02ff
|
fix(huya): safe_auth风控账号友好提示
|
2026-08-25 19:33:21 +08:00 |
|
yml2213
|
e69194b841
|
feat(huya): 一键网页cookie工具 - 密码->cred->铸证->bind->cookie/verify全套
|
2026-08-25 19:25:06 +08:00 |
|
yml2213
|
d1a2b6aa8b
|
feat(huya): 一键全自动测试脚本(密码->cookie)
|
2026-08-25 19:14:34 +08:00 |
|
yml2213
|
d29290ae0e
|
feat(huya): 纯Python密码->cred->铸证->bind全链路贯通! 零设备闭环达成
|
2026-08-25 19:12:35 +08:00 |
|
yml2213
|
b7719bc093
|
feat(huya): 干净流水线仍40020 - 登录响应cred与cert-cred为两态, 转换步骤待抓
|
2026-08-25 19:01:46 +08:00 |
|
yml2213
|
55a2d6fe16
|
feat(huya): 对照实验-每次登录铸新cred, 钥代次轮换模式发现(0x20/30/40/50)
|
2026-08-25 18:50:05 +08:00 |
|
yml2213
|
460e067afd
|
feat(huya): 真密码端到端实测完成 - cred字段形态差异已锁定为最后问题
|
2026-08-25 18:44:38 +08:00 |
|
yml2213
|
1bf94f3c20
|
feat(huya): 真密码登录成功返回数据 - cred字段识别待精确化
|
2026-08-25 18:41:37 +08:00 |
|
yml2213
|
61408c5774
|
feat(huya): R8 - 纯Python登录链路全通, 待真密码终验
|
2026-08-25 18:38:14 +08:00 |
|
yml2213
|
dae24b513a
|
feat(huya): cred切片待锚点校正(113/114偏差)
|
2026-08-25 18:35:56 +08:00 |
|
yml2213
|
3811f14192
|
feat(huya): 响应bean解析成功 - 114B hyCred与344B biztoken定位!
|
2026-08-25 18:31:33 +08:00 |
|
yml2213
|
092fd5a04f
|
feat(huya): 响应sBuffer布局精确对齐(915B bean)
|
2026-08-25 18:27:55 +08:00 |
|
yml2213
|
afbd86d4ae
|
feat(huya): 登录响应bean部分解码 - uid实锤于tag0
|
2026-08-25 18:25:16 +08:00 |
|
yml2213
|
ec8fb880e3
|
feat(huya): 纯Python登录包获服务器返回真实登录数据(uid/token)!
|
2026-08-25 18:23:34 +08:00 |
|
yml2213
|
cc8589a7aa
|
feat(huya): 响应解析通过(id=4097回显) - APP_SIGN缺口定位到AESkeyMgr钥KFWAH
|
2026-08-25 18:16:09 +08:00 |
|
yml2213
|
783032419a
|
feat(huya): 纯Python hypasswordLogin包服务器接受(HTTP200) - 传输层全通!
|
2026-08-25 18:12:43 +08:00 |
|
yml2213
|
93365e22c7
|
feat(huya): createWupPackage签名破解 - TAF RequestPacket结构对上
|
2026-08-25 18:00:15 +08:00 |
|
yml2213
|
0bba1e6af2
|
feat(huya): 登录流量走wup.huya.com长连接 - 锁定createWupPackage@0x274ea4为帧格式突破口
|
2026-08-25 17:56:59 +08:00 |
|
yml2213
|
de35a34d52
|
feat(huya): 纯Python护照客户端骨架 - 信封构建+盲发探测(待真实包对齐)
|
2026-08-25 17:28:51 +08:00 |
|
yml2213
|
8ce65684c0
|
feat(huya): 纯Python路线确认 - wupudbrequest_v0透传通道
|
2026-08-25 17:27:46 +08:00 |
|
yml2213
|
2661d9587f
|
feat(huya): 全链路终局验证通过 - 活体cred采集+铸证+绑定闭环
|
2026-08-25 17:23:32 +08:00 |
|
yml2213
|
0ade681881
|
feat(huya): Java桥主动调getCred成功 - 活体hyCred(152b64/114B)到手并铸出新证书
|
2026-08-25 17:16:40 +08:00 |
|
yml2213
|
69c089fdeb
|
feat(huya): bean为指针对象 - 定位getCred@0x265524出口为最终抓点
|
2026-08-25 17:04:36 +08:00 |
|