记一次安卓Unity-IL2CPP动态调试拿到加密算法的思路

发布于 2023-03-28  433 次阅读


前言

今天逛游戏广告的时候发现了一个除了广告和充值功能都是单机的挂机类游戏。其数据自然是走的Unity那套的PlayerPrefs,去看看SP里面包名开头的那个xml的内容,因为PlayerPrefs在安卓下的表现是包名.v2.playerprefs.xml官方说明在这

file

可以尝试解一下,如果一点明文都没有的话就肯定是加密的,如果有一点点字符串啥的那可能是protobuf的,当然也有可能直接存明文的。这里解了下是加密的,那么就尝试找找加密方式或者能直接绕过的方法呗。

探索

lib目录内容如下:

file

有个libil2cpp.so,那么只要不是开发者闲着没事干打包着玩,基本上可以确定是IL2CPP方案打包的Unity游戏。

再看看assets/bin/Data/Managed目录的内容:

file

果然没有Assembly-CSarp.dll,那么确实是IL2CPP打包了。

ida看了下libil2cpp.so,没带符号表,属于是正常情况。

file

静态分析的话有个方案是Il2CppDumper,不过今天咱们要用动态调试去做,所以用另一个方案:frida-il2cpp-bridge+Il2CppHookScripts

环境

首先自然是adb连上真机,然后真机上frida-server也开起来。

file

然后把Il2CppHookScripts给编译一下,直接npm install就行,因为有声明"prepare": "npm run build",所以install环节会直接给build一遍,不需要再手动npm run buildnpm run watch。我这边因为考虑到环境问题,直接在docker里面编译了。

不过因为我这会的时候这个项目还在重构,所以编译时需要改一下agent/API目录的大小写,不然有报错。

报错了的编译

修好的编译

其实不用编译也行,因为仓库里面就有编译好的(作者给的ReadMe让手动编译,很奇怪)

然后就直接按作者给的方法,frida -U -f com.esigame.coalmininginc -l ./Il2CppHookScripts/Il2cppHook/_Ufunc.jsspawn上来呗,然后发现花屏了。

file

不确定具体问题是在Unityfridafrida-il2cpp-bridgeIl2CppHookScripts其中的哪个上面,那就先启动游戏然后frida -U -F -l ./Il2CppHookScripts/Il2cppHook/_Ufunc.jsattach吧。

file

尝试HookPlayerPrefs()一下,结果发现没识别到Unity版本,报了个il2cpp: couldn't determine the Unity version, please specify it manually

file

查了下是frida-il2cpp-bridge那边的报错,于是根据couldn't determine the Unity version里面给的方案加了段代码在Il2CppHookScriptsagent/index.ts里面。

顺带跟开发者反馈了下这么个情况,具体见有指定 Unity 版本的方法吗?,所以现在可以直接改fixMoreVerison函数里面的版本来指定版本(不过感觉有点暴力,后续看看能不能提个pr改成更优雅的实现。

file

不过这个HookPlayerPrefs函数默认只打印寄存器不打印堆栈,所以要HookPlayerPrefs(true)

file

看看0x797400这个位置在IDA里面是啥。

file

发现是0x7971C8的函数,那showAsm('0x7971C8')看看函数名是啥。

file

好像没认出来,不确定是啥情况,不过这个数据是TimerInfo的,不太重要,看看ShopInfo的堆栈吧。

file

所以去看看0xa4e580这个位置的函数入口是啥。

file

0xA4E504,再showAsm看看。

file

可以看到是Assembly-CSharp.DataStatic下的AutoSave函数,那么看名字已经很明显了,就是个定时自动保存用的。

然后上下看了下其他几个数据的调用堆栈,就是下面那四个Save函数(至于为啥地址都和实际BL的地方差一行,应该是Hook时候解析堆栈实现上的锅)。所以尝试看看其中一个,比如说还是上面那个ShopInfo,那应该就是去看0x680688

file

发现没识别出来有啥函数,可以尝试Il2Cpp.trace().assemblies(Il2Cpp.Domain.tryAssembly("Assembly-CSharp")).and().methods(Il2Cpp.Domain.tryAssembly("Assembly-CSharp").image.tryClass("ShopModel").tryMethod("Save")).start().attach()跟一下内部调用链。(.start()是我刚给frida-il2cpp-bridgepr的一个方法,用来指定起始函数以过滤输出结果,所以可能需要大家自行编译一下,见add filter start methods to Tracer

file

因为内部调用堆栈比较长,截图贴不下,我粘贴出来:

il2cpp: 0x00680688 ┌─ShopModel.Save
il2cpp: 0x008f71f0 │ ┌─PlayerPrefsHelper.SetData
il2cpp: 0x008f726c │ │ ┌─PlayerPrefsHelper.SerializeObject
il2cpp: 0x00721a28 │ │ │ ┌─LitJson.JsonMapper.ToJson
il2cpp: 0x00bcc2fc │ │ │ │ ┌─LitJson.JsonWriter.Reset
il2cpp: 0x006061b4 │ │ │ │ │ ┌─LitJson.WriterContext..ctor
il2cpp: 0x006061b4 │ │ │ │ │ └─LitJson.WriterContext..ctor
il2cpp: 0x00bcc2fc │ │ │ │ └─LitJson.JsonWriter.Reset
il2cpp: 0x0073de88 │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x0073acc0 │ │ │ │ │ ┌─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x0073acc0 │ │ │ │ │ └─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x00bcccd8 │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bcbbec │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x006061b4 │ │ │ │ │ │ ┌─LitJson.WriterContext..ctor
il2cpp: 0x006061b4 │ │ │ │ │ │ └─LitJson.WriterContext..ctor
il2cpp: 0x00bcccd8 │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bccdc0 │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc3dc │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc3dc │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccdc0 │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccb00 │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteArrayStart
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x006061b4 │ │ │ │ │ │ │ ┌─LitJson.WriterContext..ctor
il2cpp: 0x006061b4 │ │ │ │ │ │ │ └─LitJson.WriterContext..ctor
il2cpp: 0x00bccb00 │ │ │ │ │ │ └─LitJson.JsonWriter.WriteArrayStart
il2cpp: 0x0073de88 │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x0073acc0 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x0073acc0 │ │ │ │ │ │ │ └─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x00bcccd8 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x006061b4 │ │ │ │ │ │ │ │ ┌─LitJson.WriterContext..ctor
il2cpp: 0x006061b4 │ │ │ │ │ │ │ │ └─LitJson.WriterContext..ctor
il2cpp: 0x00bcccd8 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccbe8 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bccbe8 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x0073de88 │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x0073de88 │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x0073acc0 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x0073acc0 │ │ │ │ │ │ │ └─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x00bcccd8 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x006061b4 │ │ │ │ │ │ │ │ ┌─LitJson.WriterContext..ctor
il2cpp: 0x006061b4 │ │ │ │ │ │ │ │ └─LitJson.WriterContext..ctor
il2cpp: 0x00bcccd8 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccbe8 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bccbe8 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x0073de88 │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x0073de88 │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x0073acc0 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x0073acc0 │ │ │ │ │ │ │ └─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x00bcccd8 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x006061b4 │ │ │ │ │ │ │ │ ┌─LitJson.WriterContext..ctor
il2cpp: 0x006061b4 │ │ │ │ │ │ │ │ └─LitJson.WriterContext..ctor
il2cpp: 0x00bcccd8 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccbe8 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bccbe8 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x0073de88 │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x0073de88 │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x0073acc0 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x0073acc0 │ │ │ │ │ │ │ └─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x00bcccd8 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x006061b4 │ │ │ │ │ │ │ │ ┌─LitJson.WriterContext..ctor
il2cpp: 0x006061b4 │ │ │ │ │ │ │ │ └─LitJson.WriterContext..ctor
il2cpp: 0x00bcccd8 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccbe8 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bccbe8 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x0073de88 │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcca10 │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteArrayEnd
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcca10 │ │ │ │ │ │ └─LitJson.JsonWriter.WriteArrayEnd
il2cpp: 0x0073de88 │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccdc0 │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccb00 │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteArrayStart
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x006061b4 │ │ │ │ │ │ │ ┌─LitJson.WriterContext..ctor
il2cpp: 0x006061b4 │ │ │ │ │ │ │ └─LitJson.WriterContext..ctor
il2cpp: 0x00bccb00 │ │ │ │ │ │ └─LitJson.JsonWriter.WriteArrayStart
il2cpp: 0x0073de88 │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x0073acc0 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x0073acc0 │ │ │ │ │ │ │ └─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x00bcccd8 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x006061b4 │ │ │ │ │ │ │ │ ┌─LitJson.WriterContext..ctor
il2cpp: 0x006061b4 │ │ │ │ │ │ │ │ └─LitJson.WriterContext..ctor
il2cpp: 0x00bcccd8 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccbe8 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bccbe8 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x0073de88 │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x0073de88 │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x0073acc0 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x0073acc0 │ │ │ │ │ │ │ └─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x00bcccd8 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x006061b4 │ │ │ │ │ │ │ │ ┌─LitJson.WriterContext..ctor
il2cpp: 0x006061b4 │ │ │ │ │ │ │ │ └─LitJson.WriterContext..ctor
il2cpp: 0x00bcccd8 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccbe8 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bccbe8 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x0073de88 │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x0073de88 │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x0073acc0 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x0073acc0 │ │ │ │ │ │ │ └─LitJson.JsonMapper.AddTypeProperties
il2cpp: 0x00bcccd8 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x006061b4 │ │ │ │ │ │ │ │ ┌─LitJson.WriterContext..ctor
il2cpp: 0x006061b4 │ │ │ │ │ │ │ │ └─LitJson.WriterContext..ctor
il2cpp: 0x00bcccd8 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectStart
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccbe8 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bccbe8 │ │ │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x0073de88 │ │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcca10 │ │ │ │ │ │ ┌─LitJson.JsonWriter.WriteArrayEnd
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcca10 │ │ │ │ │ │ └─LitJson.JsonWriter.WriteArrayEnd
il2cpp: 0x0073de88 │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccdc0 │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc6c0 │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccdc0 │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc3dc │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc3dc │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccdc0 │ │ │ │ │ ┌─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x00bcbbec │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbf80 │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutString
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcbf80 │ │ │ │ │ │ └─LitJson.JsonWriter.PutString
il2cpp: 0x00bccdc0 │ │ │ │ │ └─LitJson.JsonWriter.WritePropertyName
il2cpp: 0x0073de88 │ │ │ │ │ ┌─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc3dc │ │ │ │ │ │ ┌─LitJson.JsonWriter.Write
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bcc3dc │ │ │ │ │ │ └─LitJson.JsonWriter.Write
il2cpp: 0x0073de88 │ │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bccbe8 │ │ │ │ │ ┌─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x00bcbbec │ │ │ │ │ │ ┌─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbbec │ │ │ │ │ │ └─LitJson.JsonWriter.DoValidation
il2cpp: 0x00bcbef0 │ │ │ │ │ │ ┌─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbef0 │ │ │ │ │ │ └─LitJson.JsonWriter.PutNewline
il2cpp: 0x00bcbe54 │ │ │ │ │ │ ┌─LitJson.JsonWriter.Put
il2cpp: 0x00bcbe54 │ │ │ │ │ │ └─LitJson.JsonWriter.Put
il2cpp: 0x00bccbe8 │ │ │ │ │ └─LitJson.JsonWriter.WriteObjectEnd
il2cpp: 0x0073de88 │ │ │ │ └─LitJson.JsonMapper.WriteValue
il2cpp: 0x00bcc290 │ │ │ │ ┌─LitJson.JsonWriter.ToString
il2cpp: 0x00bcc290 │ │ │ │ └─LitJson.JsonWriter.ToString
il2cpp: 0x00721a28 │ │ │ └─LitJson.JsonMapper.ToJson
il2cpp: 0x008f726c │ │ └─PlayerPrefsHelper.SerializeObject
il2cpp: 0x008f72d0 │ │ ┌─PlayerPrefsHelper.RijndaelEncrypt
il2cpp: 0x008f72d0 │ │ └─PlayerPrefsHelper.RijndaelEncrypt
il2cpp: 0x008f71f0 │ └─PlayerPrefsHelper.SetData
il2cpp: 0x00680688 └─ShopModel.Save

可以很明显地发现最后调用了PlayerPrefsHelper.RijndaelEncrypt这个方法,这名字写得这么明显了,铁加密没跑了,还是微软特色的Rijndael算法。

所以去showAsm('0x008f72d0')看看这个方法吧。

file

正好两个参数,一个数据一个密钥,那么直接Il2Cpp.trace().methods(Il2Cpp.Domain.tryAssembly("Assembly-CSharp").image.tryClass("PlayerPrefsHelper").tryMethod("RijndaelEncrypt")).and().attach("detailed")看一下输入输出咯。

file

所以密钥就是dovixxxxxxxxxxxxxxxxxxxxxxxxxxxx,尝试在线解密一下数据看看具体模式啥的,发现就是默认的。

file

尝试加密回去,发现结尾不对,猜测是padding的问题,于是改成pkcs7,成功复原加密情况。

file

然后这不就看见了个叫hasNoAds的字段了嘛,看字面意思是开通了去广告的增值功能咯。

所以现在可以尝试覆写一个hasNoAdstrue的加密数据,不过由于这个游戏有定时保存,所以frida里面改PlayerPrefs可能不太靠谱,我这里直接关掉游戏改安卓的xml文件。

file

file

成功变成无广告模式,但是不太直观,再改个数值吧。

file

成功拿下。


The End