Project SEKAI 逆向 - 笔记归档

Preface Cutoff: 24/01/05 Revision: 24/09/26 其实分析工作主要是在此后才真正起步…不过实在找不到时间写帖子orz 对最新知识有兴趣或也想参与研究的话,还请参阅以下Repo及其Wiki: https://github.com/mos9527/sssekai https://github.com/mos9527/sssekai_blender_io Project SEKAI 逆向(1): 文件解密及API初步静态分析 分析版本:ColorfulStage 2.4.1 (Google Play 美服) 追加(2025/05/04): 若可能,请尝试使用iOS版本分析(如 https://decrypt.day/app/id1557595935);这些版本不需要下文对Metadata/IL2CPP的提取、反混淆,可直接分析 追加(2025/07/27): iOS 发行于 5.5.0 也已实施 Metadata 保护;同时,以下解密 Metadata流程仍然一致;最后对于日服 Android 发行,sssekai 提供手段 供自动化静态分析并解密 Metadata 1. 解密 Metadata 利用 Il2CppDumper 对apk中提取出来的global-metadata.data和il2cpp.so直接分析,可见至少metadata有混淆 IDA静态分析libunity.so, 定位到export的il2cpp_init;没有发现有关混淆的处理 考虑直接分析il2cpp.so,定位到global-metadata.dat有关流程 从这里的xref可以很轻松的摸到Il2Cpp的metadata加载流程 (注:部分变量已更名) _BYTE *__fastcall MetadataLoader::LoadMetadataFile(char *a1) { unsigned __int64 v2; // x8 char *v3; // x9 __int64 v4; // x0 _BYTE *v5; // x8 unsigned __int64 v6; // x9 const char *v7; // x0 int v8; // w21 int v9; // w20 _BYTE *mapped_metadata; // x19 __int64 v11; // x8 __int64 v13; // [xsp+0h] [xbp-E0h] BYREF unsigned __int64 v14; // [xsp+8h] [xbp-D8h] char *v15; // [xsp+10h] [xbp-D0h] size_t len[2]; // [xsp+30h] [xbp-B0h] __int64 v17[2]; // [xsp+80h] [xbp-60h] BYREF char *v18; // [xsp+90h] [xbp-50h] char *v19; // [xsp+98h] [xbp-48h] BYREF __int64 v20; // [xsp+A0h] [xbp-40h] unsigned __int8 v21; // [xsp+A8h] [xbp-38h] _BYTE v22[15]; // [xsp+A9h] [xbp-37h] BYREF _BYTE *v23; // [xsp+B8h] [xbp-28h] sub_17A953C(); v19 = "Metadata"; v20 = 8LL; v2 = (unsigned __int64)(unsigned __int8)v13 >> 1; if ( (v13 & 1) !...

February 9, 2026 · 10 min · 1944 words · mos9527

算竞笔记 - 题集/板子整理(C++)

Preface 参考主要来自《算法竞赛入门经典:训练指南》、OIWiki、CP Algorithms等资源和多方博客、课程,在自己的码风下所著 注: 部分实现可能用到较新语言特性,烦请修改后在较老OJ上使用;原则上提供的代码兼容符合Cpp14及以上标准的编译器 以下板子/题目为自己接触ACM一年期间积累。现整理为单个、便携式 Markdown 文档方便打印。体量较大,还请谅解。 [TOC] Header #include "bits/stdc++.h" using namespace std; typedef long long ll; typedef double lf; typedef pair<ll, ll> II; typedef vector<ll> vec; const inline void fast_io() { ios_base::sync_with_stdio(false); cin.tie(0u); cout.tie(0u); } const lf PI = acos(-1); const lf EPS = 1e-8; const ll INF = 1e18; const ll MOD = 1e9 + 7; const ll DIM = 1e5; int main() { fast_io(); /* El Psy Kongroo */ return 0; } 数学 快速幂 // 注:爆int64考虑__int128或相关intrinsic // MSVC: https://codeforces....

February 9, 2026 · 104 min · 22116 words · mos9527