Skip to content

[Rooted Android] 3.x 新版导出令牌的另另一种思路 #2598

Description

@YifePlayte

事先说明,我对安卓开发了解尚浅,有些描述可能有误,请大佬们轻喷

Steam 3.x 使用加密存储 SteamGuardInfo,那我就直接利用Xposed模块拿他解密后的数据不就行了。在这之前没有了解过 React Native,所以我的想法很直接:

  • 大概找到了其存储位置在/data/data/com.valvesoftware.android.steam.community/shared_prefs/SecureStore.xml
  • 在 Steam 的 dex 中搜索哪个方法读取了此 SharedPreferences,顺藤摸瓜找到了几个加解密实现expo.modules.securestore.SecureStoreModule$HybridAESEncrypter expo.modules.securestore.SecureStoreModule$AESEncrypter expo.modules.securestore.SecureStoreModule$LegacySDK20Encrypter
  • 对其中所有的decryptItem方法进行hook,在被调用完毕后分析其调用栈进行筛选,并将所获取到的已解密数据写入到剪切板中并通过Toast进行提示

非常流畅的就获取到了我们所需的 SteamGuardInfo。

我已将此Xposed模块开源至 YifePlayte/SteamGuardDump ,以供使用、参考。
测试环境:LSPosed 1.8.6(6712),MIUI 14 (Android 13),Steam 3.5


补充:Steam 3.7.0 修改了获取解密数据的方式,通过回调函数。模块已更新以适应此变化。
测试环境:LSPosed 1.9.1(6990),MIUI 14 (Android 13),Steam 3.7.0


补充:Steam 3.9.0 使用的 Expo SecureStore 又一次更改了调用方式,模块已更新适配,并通过模块向导出内容中自动补充了uri信息,方便各位使用。
测试环境:LSPosed 1.9.2(7058),HyperOS (Android 14),Steam 3.9.0


补充:从模块的1.2.0版本开始,模块会对获取到的令牌信息做些许修改(完全本地处理),在1.3.2版本及以后,模块将会对令牌信息做如下处理:

  • 若令牌信息缺失uri,则给令牌信息生成一份uri(生成的uri格式未经测试,需要反馈)
  • 向导出的令牌信息中添加uuidKey信息(就不需要去手动找文件了)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions