同样的从il2cpp的api出发,可以发现该函数直接调用了Class::GetFieldFromName,直接去查看该函数。 找到Class::GetFieldFromName,它通过GetFields获得所有的FieldInfo,然后返回对应的FieldInfo。 看看GetFields函数,其中调用了SetupFieldsLocked。 继续找到SetupField
从il2cpp的API出发,利用Class::GetFieldFromName和相关函数解析字段信息。通过递归初始化类和父类的FieldInfo,找到MetadataCache::GetFieldOffsetFromIndexLocked函数,这个函数可以帮助获取到字段的偏移地址。总结:Il2Cpp恢复符号的过程是一个复杂但有序的过程,它涉及到对globalmetadata.dat文件的解析、对il2...
可以看到它的实现是通过vm::Class::FromIl2CppType获取Il2CppType对应的Il2CppClass,然后我们可以看到类型名原来存放在Il2CppClass上的name字段。再看下Il2CppClass,可以看到类型元数据全在这个类。 Il2CppType、Il2CppClass和Il2CppTypeDefinition之间的关系以及元数据的组织 Il2CppTypeDefinition顾名思义,是类型的定义(...
DEFINE_IL2CPP_FUN(Il2CppClass*, il2cpp_class_from_name, (constIl2CppImage * image,constchar* namespaze,constchar*name)); DEFINE_IL2CPP_FUN(Il2CppClass*, il2cpp_class_from_system_type, (Il2CppReflectionType * type)); DEFINE_IL2CPP_FUN(Il2CppClass*, il2cpp_class_get_element_class, (I...
搜索codeGenModule类型,发现Il2CppCodeRegistration结构体。通过moduleName查找对应关系,定位codeGenModules->methodPointers,完成方法符号恢复。四、获得field偏移地址 从il2cpp api出发,Class::GetFieldFromName和相关函数解析field信息。通过递归初始化类和父类FieldInfo,找到MetadataCache::GetFieldOffset...
Il2CppClass *il2cpp_class_from_il2cpp_type(const Il2CppType *a1); Il2CppClass *il2cpp_class_from_name(const Il2CppImage *image, const char *namespaze, const char *name); Il2CppClass *il2cpp_class_from_system_type(Il2CppReflectionType *type); Il2CppClass *il2cpp_class_get_element_clas...
name; auto parameter_class = il2cpp_class_from_type(param); outPut << parameter_class->name << " " << il2cpp_method_get_param_name(method, i); outPut << ", "; } if (method->parameters_count > 0) { @@ -181,7 +180,8 @@ std::string dump_property(Il2CppClass *klass) {...
更新(2023-04-10) 问题 排查 查看IL2CPP代码 确定执行流程 构造复现工程 调试与分析 修复 链接 更新(2023-04-10) Unity 2020.3.47已修复该问题:IL2CPP: Fixed race condition when creating generic class metadata. 问题 游戏新版本上线后,在 Xcode Organizer 看到了
(void*ptr,size_tsize,size_talignment);}Il2CppMemoryCallbacks;typedefvoidIl2CppClass;typedefvoidIl2CppArray;typedefvoidIl2CppImage;typedefvoidIl2CppAssembly;typedefvoidIl2CppReflectionType;typedefvoidEventInfo;typedefuintptr_til2cpp_array_size_t;typedefvoidFieldInfo;typedefvoidPropertyInfo;typedefvoidMethodInfo...
namespaceRemoveAttributesTool{internalclassProgram{privatestaticreadonlystring...