various header files added/updated

- Created a header file called players. added a helper function to get the gameobject of all players, the gameobject of the local player and the NolanBehaviour component
- Added UnityCore file to make it easier for us to use unity functions
- Misc file fully updated
- Added Wrapper class to make it easier to use il2cpp functions
- ClientHelper updated
- color.hpp library was included in the project to make the console colorful
This commit is contained in:
Jadis0x
2024-05-16 21:37:01 +03:00
parent 17df650819
commit f69767f794
13 changed files with 1593 additions and 292 deletions

View File

@@ -1,64 +1,98 @@
#include "pch-il2cpp.h"
#include "wrapper.h"
#include "Wrapper.h"
#include <iostream>
#include <string.h>
Wrapper::Wrapper()
Wrapper::Wrapper(const char* imageName) : image(GetImage(imageName)), obj(nullptr) {}
const Il2CppImage* Wrapper::GetImage(const char* imageName)
{
const Il2CppDomain* domain = il2cpp_domain_get();
if (image)
return image;
const Il2CppAssembly** assemblies;
size_t size;
const Il2CppDomain* domain = il2cpp_domain_get();
size_t size;
const Il2CppAssembly** assemblies = il2cpp_domain_get_assemblies(domain, &size);
assemblies = il2cpp_domain_get_assemblies(domain, &size);
assemblyMap.clear();
for (size_t i = 0; i < size; ++i) {
const Il2CppAssembly* assembly = assemblies[i];
if (assembly) {
const char* assemblyName = il2cpp_image_get_name(assembly->image);
assemblyMap[assemblyName] = assembly;
}
}
for (size_t i = 0; i < size; ++i) {
const Il2CppAssembly* assembly = assemblies[i];
if (assembly) {
const char* assemblyName = il2cpp_image_get_name(assembly->image);
if (std::string(assemblyName) == imageName) {
return assembly->image;
}
}
}
return nullptr;
}
const Il2CppAssembly* Wrapper::GetAssembly(const char* _assembly) {
for (const auto& entry : assemblyMap) {
if (strcmp(entry.first, _assembly) == 0) {
return entry.second;
}
}
return nullptr;
}
const Il2CppImage* Wrapper::GetImage(const char* _assembly) {
for (const auto& entry : assemblyMap) {
if (strcmp(entry.first, _assembly) == 0) {
return entry.second->image;
}
}
return nullptr;
}
Il2CppObject* Wrapper::GetObjectFromClass(const Il2CppImage* _image, const char* _namespaze, const char* _name)
Wrapper& Wrapper::find_class(const char* classNamespace, const char* className)
{
Il2CppClass* _class = il2cpp_class_from_name(_image, _namespaze, _name);
Il2CppClass* _class = il2cpp_class_from_name(image, classNamespace, className);
if (_class) {
const Il2CppType* _type = il2cpp_class_get_type(_class);
if (_type) {
obj = il2cpp_type_get_object(_type);
}
}
if (_class) {
const Il2CppType* _type = il2cpp_class_get_type(_class);
if (_type) {
Il2CppObject* _object = il2cpp_type_get_object(_type);
if (_object) {
return _object;
}
}
}
return nullptr;
return *this;
}
void Wrapper::get_fields(const char* classNamespace, const char* className)
{
}
void Wrapper::method_info(const char* classNamespace, const char* className)
{
}
void Wrapper::classList()
{
size_t classCount = il2cpp_image_get_class_count(image);
std::cout << "{\n";
for (size_t i = 0; i < classCount; ++i) {
const Il2CppClass* _klass = il2cpp_image_get_class(image, i);
if (_klass) {
char* _name = const_cast<char*>(il2cpp_class_get_name(const_cast<Il2CppClass*>(_klass)));
char* _namespace = const_cast<char*>(il2cpp_class_get_namespace(const_cast<Il2CppClass*>(_klass)));
std::cout << " [\n";
std::cout << "\tName: " << _name << "\n";
std::cout << "\tNamespace: " << _namespace << "\n";
std::cout << " ],\n";
}
}
std::cout << "\n}\n";
}
Il2CppObject* Wrapper::get_class()
{
return obj;
}
const char* Wrapper::GetImageName()
{
if (image)
return il2cpp_image_get_name(image);
return nullptr;
}
const Il2CppImage* Wrapper::get_image()
{
if (image)
return image;
return nullptr;
}