Jump to content

Static Members


Go to solution Solved by Aloha boom boom,

5 posts in this topic

Recommended Posts

Posted

Hello, 

I‘ve been trying to access the first Field of this class which is static. Class

So i got the address of the class here and turned it to a hex value. Address

Then i tried to add 0xb8 to it so i get the pointer to the static fields. The 0xb8 is the size of il2cppClass_1. Struct

At the end my code looks like this. Code

The base address points to a pointer pointing to 2000aee9.

But when running the tweak, the game crashes and i get this crash log. It crashes when adding + 0xb8 to my base address. Crash Log

Can someone please help me? Thanks

Quote

 

 

  • Like 1
Posted

1. u dont understand what are u doing
2. u dont understand what the log said to u
3. u ever not try to understand

the log said that 
exc_bad_access
what u must to do - go to google and try search what its mean

and when u understand what its mean - u will have next problem - why the address is wrong?

Posted (edited)

 

 

Updated by Saitama
  • Solution
Posted
22 hours ago, Saitama said:

1. u dont understand what are u doing
2. u dont understand what the log said to u
3. u ever not try to understand

the log said that 
exc_bad_access
what u must to do - go to google and try search what its mean

and when u understand what its mean - u will have next problem - why the address is wrong?

1. i do

2. i do

3.i do

4.i got it working, i used another class which pointer actually worked

  • Winner 1
Posted
On 6/1/2023 at 5:58 PM, Aloha boom boom said:

Hello,

I‘ve been trying to access the first Field of this class which is static. Class

So i got the address of the class here and turned it to a hex value. Addressress

Then i tried to add 0xb8 to it so i get the pointer to the static fields. The 0xb8 is the size of il2cppClass_1. Struct

At the end my code looks like this. Code

The base address points to a pointer pointing to 2000aee9.

But when running the tweak, the game crashes and i get this crash log. It crashes when adding + 0xb8 to my base address. Crash Log

Can someone please help me? Thanks

 

I'm answering very late, but I came across the same situation and solved it on my own experience, in general, you should take the uintptr_t pointer to the typeinfo class and dereference it, in general, just do it like this 

auto kube_c = *(uintptr_t*)(*(uintptr_t*)(getRealOffset(0x6769CB0)) + 0xB8); // get access to static fields
	if (!kube_c) return;
	
	auto bcs = *(uintptr_t*)(kube_c + 0x38); // get static field, in my case this public static BattleControllerScript bcs;
	if (!bcs) return;
	
	auto ps = *(uintptr_t*)(bcs + 0xC8); // next, you can take any field and so on, well, you know, I think, just for example
	if (!ps) return;
	return ps;

you will have other offsets, and classes, and fields, but 0xb8 is almost everywhere as access to static fields

and yet, you must definitely have this in order to receive UnityFramework and get an absolute address

uint64_t getRealOffset(uint64_t offset) {
    uint32_t c = _dyld_image_count();
    for (int i = 0; i < c; i++) {
        if (strstr(_dyld_get_image_name(i), "UnityFramework")) {
            return _dyld_get_image_vmaddr_slide(i) + offset;
        }
    }
    return 0;
}

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...

Important Information

We would like to place cookies on your device to help make this website better. The website cannot give you the best user experience without cookies. You can accept or decline our cookies. You may also adjust your cookie settings. Privacy Policy - Guidelines