Windows——unity游戏

跟着https://xz.aliyun.com/news/15811学的,主要是自己记录一下

Il2CppDumper使用:

Il2CppDumper.exe <executable-file> <global-metadata> <output-directory>

<executable-file>就是GameAssembly.dll文件

<global-metadata>文件在baby unity_Data\il2cpp_data\Metadata目录下

dump下来就是这些文件

引用一下

原文章:https://bbs.kanxue.com/thread-278275.htm

dump.cs
这个文件会把 C# 的 dll 代码的类、方法、字段列出来
IL2cpp.h
生成的 cpp 头文件,从头文件里可以看到相关的数据结构
script.json
以 json 格式显示类的方法信息
stringliteral.json
以 json 的格式显示所有字符串信息
DummyDll
进入该目录,可以看到很多dll,其中就有 Assembly-CSharp.dll 和我们刚刚的 dump.cs 内容是一致的

利用这些文件就可以恢复符号表

DummyDll下的Assembly-CSharp.dll用dnspy打开只有函数名有用,但是没有具体的逻辑

ida打开GameAssembly.dll,跟着文章分别导入ida_with_struct_py3.py,script.json,il2cpp.h

久等一会儿

符号表就恢复完成了

Unity 的 IL2CPP 会将 C# 代码编译为 C++,再生成二进制文件,ida又将这个二进制反编译,呈现伪C代码

地址 0000000181261938:这是数据在内存中的虚拟地址(VA),通常是程序加载后的运行时地址
StringLiteral_4850:IDA 自动生成的标签名,表示这是一个字符串字面量(编号 4850)
dq 0A0001979h:
dq(Define Quad-word)表示定义 8 字节数据
此处 0A0001979h 可能是字符串的元数据(如长度、哈希或引用标识),而非字符串内容本身
注释部分:
DATA XREF 表示该数据被其他代码引用(如 Check$$CheckkkkkkkkkkFlag 函数)
最后的 XIcKYJU8Buh:UeV... 是字符串的实际内容)
DATA XREF 注释说明该数据被哪些代码引用(如 ↑o 表示偏移引用,↑r 表示读取引用)

posted @ 2025-06-08 16:32  zzz222666  阅读(80)  评论(0)    收藏  举报