Вызов функции объекта зная его адрес / создание объекта класса зная адрес класса
В общем я пропустил одну либу (il2cpp.so) через il2cppdumper, и нашел очень интересные классы: Класс 1:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using Il2CppDummyDll;
using UnityEngine;
using UnityEngine.UI;
// Token: 0x020000FF RID: 255
[Token(Token = "0x20000FF")]
public class GameWindow : MonoBehaviour
{
....
// Token: 0x06000553 RID: 1363 RVA: 0x00002050 File Offset: 0x00000250
[Token(Token = "0x6000553")]
[Address(RVA = "0x88AE38", Offset = "0x88AE38", VA = "0x88AE38")]
public void OnEnterSniperMode(bool enter)
{
}
// Token: 0x06000554 RID: 1364 RVA: 0x00002050 File Offset: 0x00000250
[Token(Token = "0x6000554")]
[Address(RVA = "0x88AE58", Offset = "0x88AE58", VA = "0x88AE58")]
public void ShowKickOutWindow()
{
}
....
Класс 2:
using System;
using Il2CppDummyDll;
using Photon.Pun;
using UnityEngine;
// Token: 0x0200011C RID: 284
[Token(Token = "0x200011C")]
public class KickOutWindow : MonoBehaviourPun
{
// Token: 0x060005EA RID: 1514 RVA: 0x00002050 File Offset: 0x00000250
[Token(Token = "0x60005EA")]
[Address(RVA = "0x73DCAC", Offset = "0x73DCAC", VA = "0x73DCAC")]
private void CreatePlayersList()
{
}
// Token: 0x060005EB RID: 1515 RVA: 0x00002050 File Offset: 0x00000250
[Token(Token = "0x60005EB")]
[Address(RVA = "0x73E474", Offset = "0x73E474", VA = "0x73E474")]
public void Show(bool show)
{
}
// Token: 0x060005EC RID: 1516 RVA: 0x00002050 File Offset: 0x00000250
[Token(Token = "0x60005EC")]
[Address(RVA = "0x73E478", Offset = "0x73E478", VA = "0x73E478")]
[Attribute(Name = "PunRPC", RVA = "0x44B308", Offset = "0x44B308")]
private void KickPlayer(int viewId)
{
}
// Token: 0x060005ED RID: 1517 RVA: 0x00002050 File Offset: 0x00000250
[Token(Token = "0x60005ED")]
[Address(RVA = "0x73E594", Offset = "0x73E594", VA = "0x73E594")]
private void KickMe()
{
}
// Token: 0x060005EE RID: 1518 RVA: 0x00002050 File Offset: 0x00000250
[Token(Token = "0x60005EE")]
[Address(RVA = "0x73E5F4", Offset = "0x73E5F4", VA = "0x73E5F4")]
public KickOutWindow()
{
}
// Token: 0x040007B7 RID: 1975
[Token(Token = "0x40007B7")]
[FieldOffset(Offset = "0x20")]
public Transform rowsContainer;
// Token: 0x040007B8 RID: 1976
[Token(Token = "0x40007B8")]
[FieldOffset(Offset = "0x28")]
[SerializeField]
private GameObject window;
// Token: 0x040007B9 RID: 1977
[Token(Token = "0x40007B9")]
[FieldOffset(Offset = "0x30")]
[SerializeField]
private GameObject rowPrefab;
// Token: 0x040007BA RID: 1978
[Token(Token = "0x40007BA")]
[FieldOffset(Offset = "0x38")]
[SerializeField]
private GameObject kickedMeAlert;
// Token: 0x0200011D RID: 285
[Token(Token = "0x200011D")]
[Attribute(Name = "CompilerGeneratedAttribute", RVA = "0x443E9C", Offset = "0x443E9C")]
private sealed class <>c__DisplayClass4_0
{
// Token: 0x060005EF RID: 1519 RVA: 0x00002050 File Offset: 0x00000250
[Token(Token = "0x60005EF")]
[Address(RVA = "0x60D1F8", Offset = "0x60D1F8", VA = "0x60D1F8")]
public <>c__DisplayClass4_0()
{
}
// Token: 0x060005F0 RID: 1520 RVA: 0x00002050 File Offset: 0x00000250
[Token(Token = "0x60005F0")]
[Address(RVA = "0x60D200", Offset = "0x60D200", VA = "0x60D200")]
internal void <CreatePlayersList>b__1()
{
}
// Token: 0x040007BB RID: 1979
[Token(Token = "0x40007BB")]
[FieldOffset(Offset = "0x10")]
public int p;
// Token: 0x040007BC RID: 1980
[Token(Token = "0x40007BC")]
[FieldOffset(Offset = "0x18")]
public KickOutWindow <>4__this;
}
// Token: 0x0200011E RID: 286
[Token(Token = "0x200011E")]
[Attribute(Name = "CompilerGeneratedAttribute", RVA = "0x443EAC", Offset = "0x443EAC")]
[System.Serializable]
private sealed class <>c
{
// Token: 0x060005F2 RID: 1522 RVA: 0x00002050 File Offset: 0x00000250
[Token(Token = "0x60005F2")]
[Address(RVA = "0x60D150", Offset = "0x60D150", VA = "0x60D150")]
public <>c()
{
}
// Token: 0x060005F3 RID: 1523 RVA: 0x00002050 File Offset: 0x00000250
[Token(Token = "0x60005F3")]
[Address(RVA = "0x60D158", Offset = "0x60D158", VA = "0x60D158")]
internal void <CreatePlayersList>b__4_0(GameObject child)
{
}
// Token: 0x040007BD RID: 1981
[Token(Token = "0x40007BD")]
[FieldOffset(Offset = "0x0")]
public static readonly KickOutWindow.<>c <>9;
// Token: 0x040007BE RID: 1982
[Token(Token = "0x40007BE")]
[FieldOffset(Offset = "0x8")]
public static System.Action<GameObject> <>9__4_0;
}
}
Мне интересно либо создать kickOutWindow и вызвать в нём show , либо в gameWindow вызвать showKickOutWindow и вместе с этим sniperMode, зная адрес объекта gameWindow Причем используя c++/java