1.139
同步自 主仓库 构建产物喵
- Version:
1.139 - VersionCode:
139 - Commit:
b59e37e - Build time:
6m 14s - SHA256:
dc8563c2d0c8b19e7b5d6d9074fe8ac28c1cc1df763299d0e5e77d9c00b7a8a1
Message
fix(native): 适配 API 37 MediaProvider 目录项 ABI #46 #47
API 37 的 MediaProvider 修改了目录项容器布局,GetDirectoryEntries 返回值从 vector<shared_ptr<DirectoryEntry>> 调整为 vector<DirectoryEntry>,导致原有 hook 在新版本上存在 C++ 容器 ABI 不兼容问题。
新增 value-vector 和 shared_ptr 两套 DirectoryEntry wrapper,并通过 addDirectoryEntriesFromLowerFs 的 mangled symbol 判断实际使用的容器类型。保留旧版本 shared_ptr ABI 支持,同时仅在已验证的 arm64 API 37 样本中启用 value-vector 路径。
value-vector 路径不复用旧的目录快照缓存,避免不同 libc++ 实现之间发生容器和字符串所有权转移问题。ABI 无法确认或 profile匹配不可信时跳过相关 hook,避免错误解析 STL 对象导致崩溃。
同时完善 hook profile 校验逻辑:
- 未解析的 RVA 不再回退到 profile 默认值
- 派生偏移要求多个锚点一致确认
- 移除未经验证的 thunk 偏移推导
- 扩展 libc++ string 原始布局解析支持
Signed-off-by: XiaoTong6666 <xiaotong6666666666@gmail.com>
Co-authored-by: HsukqiLee <HsukqiLee@users.noreply.github.com>