Project SEKAI 逆向(2): Frida动态调试及取API AES KEY/IV

Project SEKAI 逆向(2): Frida动态调试及取API AES KEY/IV 分析variant:世界計劃 2.6.1 (Google Play 台服) 0. 版本更新 毕竟美服的数据库滞后好几个版本号… 换到台服之后版本号(2.4.1->2.6.1)有变化,同时上一篇所说的metadata加密手段也换了 同样,拉取一份修复过的dump分析,可见: metadata加载部分不再进行全局加解密,观察二进制也可以发现: 2.4.0解密后metadata 2.6.1源metadata多出来8字节? 加载部分出入不大,尝试删掉8字节直接分析 卡在读string这一块;到Il2CppGlobalMetadataHeader.stringOffset检查一下 果然有混淆;这部分应该是明文,而unity的例子中开始应该是mscrolib 而so中il2cpp对metadata的使用却没加多余步骤;推测这部分在加载时进行了原地解密 1. metadata 动态提取 和上一篇记录的il2cpp.so提取步骤如出一辙,这里不再多说 比对apk的和dump出来的二进制: 果然string部分明朗了;继续dump 成功!带信息进ida;而非常戏剧化的事情是: 混淆没了。 果然是非常pro-customer的版本更新啊(确信) 2. frida-gadget 注入 WSA上注入各种碰壁,不过实体机上即使无Root也可以通过frida-gadget修改apk注入 之前用过改dex的方式尝试过,并不成功;挑一个运行时会加载的.so下手: 注: 后面目标lib换成了libFastAES.so,截图尚未更新 拿apktool打包后签名即可安装到真机 注: 我的frida跑在WSL上,拿 Windows 机器的adb做后端在 Win/Linux 机器配置分别如下 adb.exe -a -P 5555 nodaemon server export ADB_SERVER_SOCKET=tcp:192.168.0.2:5555 用 https://github.com/vfsfitvnm/frida-il2cpp-bridge 测试,未发现问题 3. IL2CPP 动态调用 runtime 接下来就可以直接调用runtime的东西了 回顾上文,貌似API业务逻辑只加了一套对称加密(AES128 CBC);这里同样如此 总结: APIManager为单例实例 APIManager.get_Crypt()取得Crypt,其aesAlgo即为.NET标准的AesManaged 综上,简单写一个脚本: import "frida-il2cpp-bridge"; Il2Cpp....

December 29, 2023 · 1 min · 158 words · mos9527