不仅能用于内置类型、标准库中的容器,只要#include了<initializer_list>头文件,并且声明一个以 initialize_list< T >模板类为参数的构造函数,同样可以使得自定义的类使用列表初始化。 cpp #include<iostream>#include<string>usingnamespacestd;enumGender{boy, girl};classPeople{public:People(initializer_list<pair<...
ProcessIl2CppTypeDefinitions(InitializeTypeHandle, InitializeGenericParameterHandle); returntrue; } 这个代码在加载global-metadata.dat,并且对其做了合法性判断。继续阅读后我们还会发现其使用了GetStringLiteralFromIndex(StringLiteralIndex index)等函数加载了字符信息,函数指针信息等一系列内容。 为了更好的分析,我...
我们可以在libil2cpp.so里面搜索il2cpp_init或者整个调用链里的关键字来定位到其中一个函数,最简单的是通过搜索global-metadata.dat来直接定位到MetadataCache::Initialize,但是这题不行,因为出题人特意把global-metadata.dat这个字符串加密了,所以搜索不到。所以这边我们搜索il2cpp_init来对照源码往下定位到Metada...
h> int main(int argc, char **argv) { // Initialize ROS node ros::init(argc, argv, "my_node"); // Create a ROS node handle ros::NodeHandle nh; // Create a private node handle (optional) ros::NodeHandle private_nh("~"); // Create a ROS timer (optional, for publishing at a...
file_policy::set_commode();if(!__scrt_initialize_onexit_tables(__scrt_module_type::exe)) __scrt_fastfail(FAST_FAIL_FATAL_APP_EXIT); #ifdef _M_IX86//Clear the x87 exception flags. Any other floating point initialization//should already have taken place before this function is called....
// Initialize ROS node ros::init(argc, argv, "my_node"); // Create a ROS node handle ros::NodeHandle nh; // Create a private node handle (optional) ros::NodeHandle private_nh("~"); // Create a ROS timer (optional, for publishing at a specific rate) ...
很明显,就是Initialize时调用LoadMetadataFile将global-metadata.dat映射到内存中。 还需要稍微了解一下global-metadata.dat文件结构。 structIl2CppGlobalMetadataHeader{int32_tsanity;int32_tversion;int32_tstringLiteralOffset;// string data for managed codeint32_tstringLiteralCount;int32_tstringLiteralDataOffset...
il2cpp_init -> il2cpp::vm::Runtime::Init -> il2cpp::vm::MetadataCache::Initialize -> il2cpp::vm::MetadataLoader::LoadMetadataFile 于是直接搜 init 即可找到 il2cpp::vm::Runtime::Init。 随后进入该函数后一个个查找对比源码可以发现 sub_4B5564 为 il2cpp::vm::MetadataCache::Initialize。
这里为了实现找到我们需要的参数,主要是通过导出函数il2cpp_init的地址往下找找到bl进去然后再找到ldr,并解析到ldr加载的值,如果出现了“mscorlib.dll”,说明我们找到的bl是正确的,然后我们同理找下层的“global-metadata.dat”即可定位到函数 bool il2cpp::vm::MetadataCache::Initialize(),找到上述位置后,我们稍微看...
_set_IterationCount(a1, a4);*(_DWORD *)(a1 + 20) = a2;v8 = sub_48CF00(System_Security_Cryptography_HMACSHA1_TypeInfo);System_Security_Cryptography_HMACSHA1___ctor_22256684(v8, a2, 0);*(_DWORD *)(a1 + 16) = v8;return System_Security_Cryptography_Rfc2898DeriveBytes__Initialize(a1...