yml2213
|
1a6711c180
|
docs: 绕过配方状态更正 (bypass_all 未验证, 以原版三脚本为准) + 三层健康检查工具
|
2026-08-29 11:44:54 +08:00 |
|
yml2213
|
5fa1f6d082
|
feat(dfp): 🔑 RC4 key=APK内嵌appkey常量(datadiv@3912240), 全流程零设备依赖闭环 (R38-R39)
|
2026-08-29 11:01:51 +08:00 |
|
yml2213
|
4868a3b0e8
|
feat(dfp): 🏆 dfpReport 加密完全攻破 — RC4+gzip, 12/12 密文解密+逐字节回验 (R35-R37)
|
2026-08-29 10:13:08 +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
|
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
|
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
|
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
|
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
|
e5a615f480
|
feat(huya): safe_auth定性为udbrtt滑块-已有solver可自动过
|
2026-08-25 19:46:30 +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
|
783032419a
|
feat(huya): 纯Python hypasswordLogin包服务器接受(HTTP200) - 传输层全通!
|
2026-08-25 18:12:43 +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 |
|
yml2213
|
e7edfcee5c
|
feat(huya): MsgRequestLoginPassport完整JSON载荷捕获 - password=SHA1
|
2026-08-25 16:56:06 +08:00 |
|
yml2213
|
4c35e741ef
|
feat(huya): cred来源定位 - HandlerResponseLoginPassport护照登录响应
- backtrace实锤: saveLoginData<-HandlerResponseLoginPassport<-JceInputStream
- cred随护照登录响应一次性下发(BusBeansLoginData), 非独立消息
- HTTPS passwordLogin简化通道响应无cred(二次扫描确认)
- 下一步: 对比App真实登录请求字段 / 长连接WSP复刻 / 混合采集兜底
|
2026-08-25 16:18:20 +08:00 |
|
yml2213
|
d24666ab2a
|
feat(huya): hyCred签发链侦察 - saveLoginData落盘捕获+长连接消息族定位
- 证实cred长寿命(晨间cred午后仍有效), 每账号一次采集即可
- 密码登录响应不含cred; 签发走cdn.wup长连接(MsgRequestLgnCred族)
- getCred纯本地读; 落盘链: saveLoginData->JSON->AES->writeFileEx
- 三路线评估: A混合采集(可用)/B wsapi复刻/C长连接复刻, 下次从笔记抓手继续
|
2026-08-25 16:07:33 +08:00 |
|
yml2213
|
9aed5847dd
|
feat(huya): 铸证活体验证通过 - 换cred重铸证书bind成功
- 实验C: 原nonce+原指纹+旧轮换hyCred -> 全新密文证书 -> bind stage=2
uid=1199666914671 + 344B biztoken
- 证明: 服务端校验nonce合法性但不校验时效; 身份完全由cert内cred决定
- gen_biz_token trace: enum=0x78, 入参(uid串,sessHex32),
xxtea明文16B=[t][t<<16]结构, enpack_body组装P1顺序实锤
- => 拿到任意账号有效hyCred(114B)即可铸其证书
|
2026-08-25 15:37:42 +08:00 |
|
yml2213
|
a0ba2fe020
|
feat(huya): 证书算法完全闭环 - 差分法证明标准AES-128-ECB并复现铸证
- NativeFunction直调差分: FIPS-197 KAT逐位一致, UdbAESUtil无魔改
- 证书 = b64([0x0C][key_idx][AES128-ECB(key16, zeropad(P1_187B))])
- P1结构: [010400][5008][u16+20B随机][u16+40B指纹hex][u16+114B hyCred]
- 密钥: rodata默认三条(AESkeyMgr id=3/4/5) + 服务端下发会话钥(key_idx区分)
- tools/cert_forge.py 重铸证书与活体密文 FULL MATCH
|
2026-08-25 15:21:11 +08:00 |
|
yml2213
|
2076510df9
|
feat(huya): frida证书生成链逆向 - 全链路hook工具与文档
- 定位完整调用链: HYUDBMSDKCommon桥接 -> MsgGetH5InfoEx(184549387)
-> HandlerGetH5InfoEx::onHandler@0x38d548 -> getOtp@0x2689f4
-> hyudb_otp_encrypt@0x32fa24 -> createWupRequestData@0x38dab0
- 实测参数表: otp(uid串,2,轮换idx,'5008',SESS_HEX32,hyCred114B,4,nonce)
- 密钥字符串确认: 'HuyaUdb1928374650qwertyuiop' (encrypt x3 参数)
- Java桥直呼触发: LoginProxy.getQUrlData/getH5InfoEx/getCred 可编程调用
- 稳定时序固化: spawn挂起->bypass->resume->10s->patch_guard->hooks
(attach已运行进程必被检测闪退)
- 发现App登录态JSON含现成web cookie.biztoken(344B)
|
2026-08-25 14:21:06 +08:00 |
|
yml2213
|
9aea9851bd
|
test(huya): 风控场景/代理/扫码闭环探针与逆向文档
- probe_huya_login_scene: 各 appId/UA 组合的风控策略探测
- probe_huya_proxy: 走代理源对比直连的风控策略
- probe_huya_qr_bind: 扫码登录闭环(getQrId->scanQrPicNotify->
bindQrLoginUser->tryQrLogin), 实测出有效web会话; 含wupData
结构地图与证书定位实验结论(见 docs/虎牙扫码登录闭环逆向.md)
|
2026-08-25 11:51:01 +08:00 |
|
yml2213
|
09efb23f58
|
迁移前自动升级 SQLite 结构
|
2026-07-25 10:37:02 +08:00 |
|
yml2213
|
2c4ff6901f
|
修复容器迁移脚本导入路径
|
2026-07-25 10:33:37 +08:00 |
|
yml2213
|
32f9eadfdb
|
支持 MySQL 迁移与性能优化
|
2026-07-25 10:23:19 +08:00 |
|