Il2CppDumper.exe libil2cpp.so global-metadata.dat output 执行完毕后,你将得到dump.cs(伪C#代码骨架)、DummyDll/Assembly-CSharp.dll(可直接用ILSpy反编译)以及script.json(方法签名表)等重要文件,这些文件将助你一窥APK的源码奥秘。游戏内所有字符串明文 在
使用il2cpp::utils::StringUtils::Utf16ToUtf8(xx.chars)可以转换为标准的UTF-8 encoded std::string 还有一种字符串类型String_t,布局与Il2CppString不一致 // System.String struct String_t : public RuntimeObject { public: // System.Int32 System.String::m_stringLength int32_t ___m_stringLength...
但事实上,我们可以利用C# 9提供的delegate*函数指针来实现一样的功能,这样就不需要额外的库了。 [ImplementableEvent, ExecutableFunction]publicunsafevoidExecuteTest(stringdata){UDebug.Log("Implement ExecuteTest");((delegate*unmanaged[Cdecl]<FlowTestActor,float,void>)_intPtr)(this,101);} 完全泛型共享问题 ...
Debug.Log (string.Format ("Using a blittable argument: {0}",Increment (42))); Debug.Log (string.Format ("Marshaling strings: {0}", StringsMatch("Hello", "Goodbye"))); var vector = new Vector (1.0f, 2.0f, 3.0f); Debug.Log (string.Format ("Marshaling a blittable struct: {0}",...
Il2Cpp.trace(true).classes(String).and().attach(); }); 注入,随便输点击一下按钮,就得到密文了pNufkEIU9dHjKXYXWiFyrthHYFEfqJAWcPM/t8/zX1w= ❯ python .\main.py 'ez unity.exe' 2022.3.17f1c1 il2cpp: 0x0077b6f0 ┌─System.String::...
StringIndex是一个整型,是一个索引,global-metadata.dat中存在一个字符串表,所有metadata相关的字符串都放在了一起,通过这个索引进行引用,这个字符串表通过Il2CppGlobalMetadataHeader下的偏移stringOffset计算得到。 可以通过这样的函数获取StringIndex对应的字符串,ptr是Il2CppGlobalMetad...
关于Il2cpp的资料网上有很多,简而言之,Il2cpp就是unity用来代替原来的基于Mono虚拟机的一种新的打包方式,它先生成IL(中间语言),然后再转换成Cpp文件,提高运行效率的同时增加了安全性。原本基于Mono的打包方式极其容易被逆向,现在市面上的新游戏基本上都是用Il2cpp的方式打包的,当然Il2cpp的逆向教程也很多,但...
对于il2cpp脚本后端,代码中的字符都在global-metadata.dat文件中。用il2cppdumper,通过libil2cpp.so和global-metadata.dat导出很多信息,其中stringliteral.json文件中就有代码中的字符串,但是这个工具是用来dump信息的,不是用来修改的,所以我参考他的源码,做了一个简单的工具来对代码进行修改,下面是操作过程。
(lldb) p il2cpp::utils::StringUtils::Utf16ToUtf8(_stringLiteral1.chars)(std::__1::string) $1 = "Hello, IL2CPP!" 生成代码中异常中断 我自己经常调试生成代码且试图跟踪错误原因。在许多情况下这些错误都以托管异常的方式出现。正如上一篇文章中讨论的,IL2CPP使用C++异常执行托管异常,所以在Xcode中出现...
(); MonoString *$get_applicationBundleIdentifier() { MonoString *str = get_applicationBundleIdentifier(); const char *s = str->toChars(); //转const char* std::string ss = str->toString(); //转std::string str->setMonoString("monoString"); str->setMonoString(string("monoString"));...