Can anyone help? This code works for me on the Android x86_64 emulator. But as soon as I run it on arm64 android, it crashes when I try to call CreateString . Apk is installed identically only with arm64-v8a libraries. That is, the offsets are correct. The project is compiled from LGL
C++:
typedef struct _myMonoString
{
void* klass;
void* monitor;
int length;
char16_t chars[1];
int getLength()
{
return length;
}
char16_t* getRawChars()
{
return chars;
}
std::string getString()
{
std::u16string u16(chars, length);
std::string u8_conv = std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t>{}.to_bytes(u16);
return u8_conv;
}
const char* getChars()
{
return getString().c_str();
}
} myMonoString;
myMonoString *CreateString(const char *str)
{
myMonoString *(*CreateString)(void *instance, const char *str, int start, int length) = (monoString * (*)(void *, const char *, int, int)) getAbsoluteAddress("libil2cpp.so", 0x2b77650);
int length = (int)strlen(str);
return CreateString(NULL, str, 0, length);
}