unity逆向——以【22/7 音乐的时间】为例
更新时间:2024-08-21 23:02 浏览量:49
本篇不是教程文章,只是记录一下逆向过程中发现的各种问题及解决方法。而且,我也觉得不太可能有人会对着一个已经停服快三年的手游学逆向。。。
1 快捷方法在一台root后的手机上使用Zygisk-Il2CppDumper(https://github.com/Perfare/Zygisk-Il2CppDumper)。但这样只能得到dump.cs,无法得到script.json和stringliteral.json,不太方便后期分析。于是,只能使用传统派的方法进行逆向。
因为不是教程贴,怎么搭环境、用什么软件以及怎么用软件就不详述了。
使用apktool反编译后,可以在 ナナオン_2.4.0\lib\arm64-v8a 里找到 libil2cpp.so 文件,但这个文件貌似被加密了,无法直接用于Il2CppDumper,因此需要到内存中找到libil2cpp.so。
使用GG寻找libil2cpp.so内存地址并导出,如图1-1,1-2所示
图1-1图1-22.2.1 检查global-metadata.dat文件
在应用包内 com.aniplex.nananiji\files\il2cpp\Metadata 可找到 global-metadata.dat 文件,将其拖入010editor中可发现本文件被加密了,如图2-1所示。没被加密的global-metadata.dat文件头应该是AF 1B B1 FA,如图2-2所示。
图2-1图2-22.2.2 使用frida dump出global-metadata.dat
使用adb链接mumu模拟器,并启动frida,如图2-3所示。
图2-3在mumu模拟器 MuMu Player 12\shell 目录下新建cmd窗口并使用frida进行操作,如图2-4所示。
图2-4在mumu模拟器中启动七音,使用 “frida-ps -Ua” 命令列出正在运行的程序,如图2-5所示。
图2-5使用global-metadata_dump.js(https://github.com/350030173/global-metadata_dump)将为被加密的文件提取出来。
这时会报出 Failed to spawn: ambiguous name; it matches: com.aniplex.nananiji (pid: 5964), com.aniplex.nananiji (pid: 5965) 错误,如图2-6所示。这说明此时统一名称存在两个进程,frida无法分辨要抓哪个。我们用 frida-ps -U 来看一下正在运行,可以发现,七音存在多进程守护的情况,如图2-7所示。
图2-6图2-7那就只能靠我们主动启动进程并注入js使用命令,如图2-8所示。
图2-8在此情况下输入 global-metadata_dump.js 的内容,如图2-9所示。
图2-9此时可以看到 global-metadata 已经被正常提取出来了,如图2-10所示。
图2-10这时我们再将提取出来的global-metadata导入到010editor中,发现符合文件头特征,如图2-11所示。至此,解密完成。
图2-112.2.3 使用Il2CppDumper进行逆向
打开 Il2CppDumper.exe 依次选择2.2.1导出来的 com.aniplex.nananiji-77c8b8ef2000-77c8bf1f2000.bin 文件,和2.2.2导出来的 global-metadata.dat 文件,并输入地址 77c8b8ef2000 后,可以看到已经逆向成功了,如图2-12所示。
图2-12至此,七音包体能干的事基本都干完了。在逆向方面,我找个时间对dump.cs看看能不能找出点什么有意思的东西。在解包方面,目前还存在几个问题。
谱面和歌曲在哪。不会真的是在服务器里吧,每次打歌的时候现从服务器里加载。。。
3d模型在导入blender后贴图对不上,我很想做mmd,但是对模型这方面一窍不通。。。
之后想到什么再往评论区里加吧,如果有时间就再出一期完整的解包+逆向过程的专栏或视频。
就这样,结束。