Problems decompiling Unity game

-3

I am trying to disassemble the game "Among Us" on mobile, which is written using Unity. It has also been obscured using IL2CPP. I have decompiled the APK into C# files, but they all either have nothing in them or have only a return value. They also have instruction offsets, but when I looked at some of the functions in assembly they only consisted of a ret instruction.

Example: Vending Machine Minigame Code

using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using Il2CppDummyDll;
using UnityEngine;

// Token: 0x020000C2 RID: 194
[Token(Token = "0x200006E")]
public class VendingMinigame : Minigame
{
    // Token: 0x0600040E RID: 1038 RVA: 0x00002050 File Offset: 0x00000250
    [Token(Token = "0x600025F")]
    [Address(RVA = "0x8944C4", Offset = "0x8944C4", VA = "0x8944C4", Slot = "4")]
    public override void Begin(PlayerTask task)
    {
    }

    // Token: 0x0600040F RID: 1039 RVA: 0x00003450 File Offset: 0x00001650
    [Token(Token = "0x6000260")]
    [Address(RVA = "0x894868", Offset = "0x894868", VA = "0x894868")]
    private static int StringToSlotId(string code)
    {
        return 0;
    }

    // Token: 0x06000410 RID: 1040 RVA: 0x00002052 File Offset: 0x00000252
    [Token(Token = "0x6000261")]
    [Address(RVA = "0x894788", Offset = "0x894788", VA = "0x894788")]
    private static string SlotIdToString(int slotId)
    {
        return null;
    }

    // Token: 0x06000411 RID: 1041 RVA: 0x00003468 File Offset: 0x00001668
    [Token(Token = "0x6000262")]
    [Address(RVA = "0x8946B8", Offset = "0x8946B8", VA = "0x8946B8")]
    private bool PickARandomSlot(Sprite drink, out int slotId)
    {
        return default(bool);
    }

    // Token: 0x06000412 RID: 1042 RVA: 0x00002050 File Offset: 0x00000250
    [Token(Token = "0x6000263")]
    [Address(RVA = "0x894A40", Offset = "0x894A40", VA = "0x894A40")]
    public void EnterDigit(string s)
    {
    }

    // Token: 0x06000413 RID: 1043 RVA: 0x00002050 File Offset: 0x00000250
    [Token(Token = "0x6000264")]
    [Address(RVA = "0x894C00", Offset = "0x894C00", VA = "0x894C00")]
    public void ClearDigits()
    {
    }

    // Token: 0x06000414 RID: 1044 RVA: 0x00002050 File Offset: 0x00000250
    [Token(Token = "0x6000265")]
    [Address(RVA = "0x894D18", Offset = "0x894D18", VA = "0x894D18")]
    public void AcceptDigits()
    {
    }

    // Token: 0x06000415 RID: 1045 RVA: 0x00002052 File Offset: 0x00000252
    [Token(Token = "0x6000266")]
    [Address(RVA = "0x894B90", Offset = "0x894B90", VA = "0x894B90")]
    [Attribute(Name = "IteratorStateMachineAttribute", RVA = "0x4FCC94", Offset = "0x4FCC94")]
    private IEnumerator BlinkAccept()
    {
        return null;
    }

    // Token: 0x06000416 RID: 1046 RVA: 0x00002052 File Offset: 0x00000252
    [Token(Token = "0x6000267")]
    [Address(RVA = "0x894E30", Offset = "0x894E30", VA = "0x894E30")]
    [Attribute(Name = "IteratorStateMachineAttribute", RVA = "0x4FCCF8", Offset = "0x4FCCF8")]
    private IEnumerator Animate()
    {
        return null;
    }

    // Token: 0x06000417 RID: 1047 RVA: 0x00002052 File Offset: 0x00000252
    [Token(Token = "0x6000268")]
    [Address(RVA = "0x894EF8", Offset = "0x894EF8", VA = "0x894EF8")]
    [Attribute(Name = "IteratorStateMachineAttribute", RVA = "0x4FCD5C", Offset = "0x4FCD5C")]
    private IEnumerator CoBlinkVend()
    {
        return null;
    }

    // Token: 0x06000418 RID: 1048 RVA: 0x00002050 File Offset: 0x00000250
    [Token(Token = "0x6000269")]
    [Address(RVA = "0x894F94", Offset = "0x894F94", VA = "0x894F94")]
    public VendingMinigame()
    {
    }

    // Token: 0x040003F9 RID: 1017
    [Token(Token = "0x4000257")]
    [FieldOffset(Offset = "0x0")]
    public static readonly string[] Letters;

    // Token: 0x040003FA RID: 1018
    [Token(Token = "0x4000258")]
    [FieldOffset(Offset = "0x50")]
    public TextRenderer NumberText;

    // Token: 0x040003FB RID: 1019
    [Token(Token = "0x4000259")]
    [FieldOffset(Offset = "0x58")]
    public SpriteRenderer TargetImage;

    // Token: 0x040003FC RID: 1020
    [Token(Token = "0x400025A")]
    [FieldOffset(Offset = "0x60")]
    public string enteredCode;

    // Token: 0x040003FD RID: 1021
    [Token(Token = "0x400025B")]
    [FieldOffset(Offset = "0x68")]
    private bool animating;

    // Token: 0x040003FE RID: 1022
    [Token(Token = "0x400025C")]
    [FieldOffset(Offset = "0x69")]
    private bool done;

    // Token: 0x040003FF RID: 1023
    [Token(Token = "0x400025D")]
    [FieldOffset(Offset = "0x70")]
    private string targetCode;

    // Token: 0x04000400 RID: 1024
    [Token(Token = "0x400025E")]
    [FieldOffset(Offset = "0x78")]
    public SpriteRenderer AcceptButton;

    // Token: 0x04000401 RID: 1025
    [Token(Token = "0x400025F")]
    [FieldOffset(Offset = "0x80")]
    public VendingSlot[] Slots;

    // Token: 0x04000402 RID: 1026
    [Token(Token = "0x4000260")]
    [FieldOffset(Offset = "0x88")]
    public Sprite[] Drinks;

    // Token: 0x04000403 RID: 1027
    [Token(Token = "0x4000261")]
    [FieldOffset(Offset = "0x90")]
    public Sprite[] DrawnDrinks;

    // Token: 0x04000404 RID: 1028
    [Token(Token = "0x4000262")]
    [FieldOffset(Offset = "0x98")]
    public AudioClip Ambience;

    // Token: 0x04000405 RID: 1029
    [Token(Token = "0x4000263")]
    [FieldOffset(Offset = "0xA0")]
    public AudioClip Button;

    // Token: 0x04000406 RID: 1030
    [Token(Token = "0x4000264")]
    [FieldOffset(Offset = "0xA8")]
    public AudioClip Error;

    // Token: 0x04000407 RID: 1031
    [Token(Token = "0x4000265")]
    [FieldOffset(Offset = "0xB0")]
    public AudioClip SliderOpen;

    // Token: 0x04000408 RID: 1032
    [Token(Token = "0x4000266")]
    [FieldOffset(Offset = "0xB8")]
    public AudioClip DrinkShake;

    // Token: 0x04000409 RID: 1033
    [Token(Token = "0x4000267")]
    [FieldOffset(Offset = "0xC0")]
    public AudioClip DrinkLand;

    // Token: 0x020000C3 RID: 195
    [Token(Token = "0x200023A")]
    [Attribute(Name = "CompilerGeneratedAttribute", RVA = "0x4F9288", Offset = "0x4F9288")]
    private sealed class <BlinkAccept>d__24 : IEnumerator<object>, IEnumerator, IDisposable
    {
        // Token: 0x0600041A RID: 1050 RVA: 0x00002050 File Offset: 0x00000250
        [Token(Token = "0x6000E1D")]
        [Address(RVA = "0x894EA0", Offset = "0x894EA0", VA = "0x894EA0")]
        [DebuggerHidden]
        public <BlinkAccept>d__24(int <>1__state)
        {
        }

        // Token: 0x0600041B RID: 1051 RVA: 0x00002050 File Offset: 0x00000250
        [Token(Token = "0x6000E1E")]
        [Address(RVA = "0x895690", Offset = "0x895690", VA = "0x895690", Slot = "5")]
        [DebuggerHidden]
        private void Dispose()
        {
        }

        // Token: 0x0600041C RID: 1052 RVA: 0x00003480 File Offset: 0x00001680
        [Token(Token = "0x6000E1F")]
        [Address(RVA = "0x895694", Offset = "0x895694", VA = "0x895694", Slot = "6")]
        private bool MoveNext()
        {
            return default(bool);
        }

        // Token: 0x170000A1 RID: 161
        // (get) Token: 0x0600041D RID: 1053 RVA: 0x00002052 File Offset: 0x00000252
        [Token(Token = "0x17000186")]
        private object Current
        {
            [Token(Token = "0x6000E20")]
            [Address(RVA = "0x89578C", Offset = "0x89578C", VA = "0x89578C", Slot = "4")]
            [DebuggerHidden]
            get
            {
                return null;
            }
        }

        // Token: 0x0600041E RID: 1054 RVA: 0x00002050 File Offset: 0x00000250
        [Token(Token = "0x6000E21")]
        [Address(RVA = "0x895794", Offset = "0x895794", VA = "0x895794", Slot = "8")]
        [DebuggerHidden]
        private void Reset()
        {
        }

        // Token: 0x170000A2 RID: 162
        // (get) Token: 0x0600041F RID: 1055 RVA: 0x00002052 File Offset: 0x00000252
        [Token(Token = "0x17000187")]
        private object Current
        {
            [Token(Token = "0x6000E22")]
            [Address(RVA = "0x8957F4", Offset = "0x8957F4", VA = "0x8957F4", Slot = "7")]
            [DebuggerHidden]
            get
            {
                return null;
            }
        }

        // Token: 0x0400040A RID: 1034
        [Token(Token = "0x4000E32")]
        [FieldOffset(Offset = "0x10")]
        private int <>1__state;

        // Token: 0x0400040B RID: 1035
        [Token(Token = "0x4000E33")]
        [FieldOffset(Offset = "0x18")]
        private object <>2__current;

        // Token: 0x0400040C RID: 1036
        [Token(Token = "0x4000E34")]
        [FieldOffset(Offset = "0x20")]
        public VendingMinigame <>4__this;

        // Token: 0x0400040D RID: 1037
        [Token(Token = "0x4000E35")]
        [FieldOffset(Offset = "0x28")]
        private int <i>5__2;
    }

    // Token: 0x020000C4 RID: 196
    [Token(Token = "0x200023B")]
    [Attribute(Name = "CompilerGeneratedAttribute", RVA = "0x4F9298", Offset = "0x4F9298")]
    private sealed class <Animate>d__25 : IEnumerator<object>, IEnumerator, IDisposable
    {
        // Token: 0x06000420 RID: 1056 RVA: 0x00002050 File Offset: 0x00000250
        [Token(Token = "0x6000E23")]
        [Address(RVA = "0x894ECC", Offset = "0x894ECC", VA = "0x894ECC")]
        [DebuggerHidden]
        public <Animate>d__25(int <>1__state)
        {
        }

        // Token: 0x06000421 RID: 1057 RVA: 0x00002050 File Offset: 0x00000250
        [Token(Token = "0x6000E24")]
        [Address(RVA = "0x895114", Offset = "0x895114", VA = "0x895114", Slot = "5")]
        [DebuggerHidden]
        private void Dispose()
        {
        }

        // Token: 0x06000422 RID: 1058 RVA: 0x00003498 File Offset: 0x00001698
        [Token(Token = "0x6000E25")]
        [Address(RVA = "0x895118", Offset = "0x895118", VA = "0x895118", Slot = "6")]
        private bool MoveNext()
        {
            return default(bool);
        }

        // Token: 0x170000A3 RID: 163
        // (get) Token: 0x06000423 RID: 1059 RVA: 0x00002052 File Offset: 0x00000252
        [Token(Token = "0x17000188")]
        private object Current
        {
            [Token(Token = "0x6000E26")]
            [Address(RVA = "0x895620", Offset = "0x895620", VA = "0x895620", Slot = "4")]
            [DebuggerHidden]
            get
            {
                return null;
            }
        }

        // Token: 0x06000424 RID: 1060 RVA: 0x00002050 File Offset: 0x00000250
        [Token(Token = "0x6000E27")]
        [Address(RVA = "0x895628", Offset = "0x895628", VA = "0x895628", Slot = "8")]
        [DebuggerHidden]
        private void Reset()
        {
        }

        // Token: 0x170000A4 RID: 164
        // (get) Token: 0x06000425 RID: 1061 RVA: 0x00002052 File Offset: 0x00000252
        [Token(Token = "0x17000189")]
        private object Current
        {
            [Token(Token = "0x6000E28")]
            [Address(RVA = "0x895688", Offset = "0x895688", VA = "0x895688", Slot = "7")]
            [DebuggerHidden]
            get
            {
                return null;
            }
        }

        // Token: 0x0400040E RID: 1038
        [Token(Token = "0x4000E36")]
        [FieldOffset(Offset = "0x10")]
        private int <>1__state;

        // Token: 0x0400040F RID: 1039
        [Token(Token = "0x4000E37")]
        [FieldOffset(Offset = "0x18")]
        private object <>2__current;

        // Token: 0x04000410 RID: 1040
        [Token(Token = "0x4000E38")]
        [FieldOffset(Offset = "0x20")]
        public VendingMinigame <>4__this;

        // Token: 0x04000411 RID: 1041
        [Token(Token = "0x4000E39")]
        [FieldOffset(Offset = "0x28")]
        private int <slotId>5__2;

        // Token: 0x04000412 RID: 1042
        [Token(Token = "0x4000E3A")]
        [FieldOffset(Offset = "0x30")]
        private WaitForSeconds <wait>5__3;
    }

    // Token: 0x020000C5 RID: 197
    [Token(Token = "0x200023C")]
    [Attribute(Name = "CompilerGeneratedAttribute", RVA = "0x4F92A8", Offset = "0x4F92A8")]
    private sealed class <CoBlinkVend>d__26 : IEnumerator<object>, IEnumerator, IDisposable
    {
        // Token: 0x06000426 RID: 1062 RVA: 0x00002050 File Offset: 0x00000250
        [Token(Token = "0x6000E29")]
        [Address(RVA = "0x894F68", Offset = "0x894F68", VA = "0x894F68")]
        [DebuggerHidden]
        public <CoBlinkVend>d__26(int <>1__state)
        {
        }

        // Token: 0x06000427 RID: 1063 RVA: 0x00002050 File Offset: 0x00000250
        [Token(Token = "0x6000E2A")]
        [Address(RVA = "0x8957FC", Offset = "0x8957FC", VA = "0x8957FC", Slot = "5")]
        [DebuggerHidden]
        private void Dispose()
        {
        }

        // Token: 0x06000428 RID: 1064 RVA: 0x000034B0 File Offset: 0x000016B0
        [Token(Token = "0x6000E2B")]
        [Address(RVA = "0x895800", Offset = "0x895800", VA = "0x895800", Slot = "6")]
        private bool MoveNext()
        {
            return default(bool);
        }

        // Token: 0x170000A5 RID: 165
        // (get) Token: 0x06000429 RID: 1065 RVA: 0x00002052 File Offset: 0x00000252
        [Token(Token = "0x1700018A")]
        private object Current
        {
            [Token(Token = "0x6000E2C")]
            [Address(RVA = "0x89595C", Offset = "0x89595C", VA = "0x89595C", Slot = "4")]
            [DebuggerHidden]
            get
            {
                return null;
            }
        }

        // Token: 0x0600042A RID: 1066 RVA: 0x00002050 File Offset: 0x00000250
        [Token(Token = "0x6000E2D")]
        [Address(RVA = "0x895964", Offset = "0x895964", VA = "0x895964", Slot = "8")]
        [DebuggerHidden]
        private void Reset()
        {
        }

        // Token: 0x170000A6 RID: 166
        // (get) Token: 0x0600042B RID: 1067 RVA: 0x00002052 File Offset: 0x00000252
        [Token(Token = "0x1700018B")]
        private object Current
        {
            [Token(Token = "0x6000E2E")]
            [Address(RVA = "0x8959C4", Offset = "0x8959C4", VA = "0x8959C4", Slot = "7")]
            [DebuggerHidden]
            get
            {
                return null;
            }
        }

        // Token: 0x04000413 RID: 1043
        [Token(Token = "0x4000E3B")]
        [FieldOffset(Offset = "0x10")]
        private int <>1__state;

        // Token: 0x04000414 RID: 1044
        [Token(Token = "0x4000E3C")]
        [FieldOffset(Offset = "0x18")]
        private object <>2__current;

        // Token: 0x04000415 RID: 1045
        [Token(Token = "0x4000E3D")]
        [FieldOffset(Offset = "0x20")]
        public VendingMinigame <>4__this;

        // Token: 0x04000416 RID: 1046
        [Token(Token = "0x4000E3E")]
        [FieldOffset(Offset = "0x28")]
        private int <i>5__2;
    }
}

Example: Vending Machine Code Enter in Assembly:

.method public hidebysig instance void  EnterDigit(string s) cil managed
{
  .custom instance void [Il2CppDummyDll]Il2CppDummyDll.TokenAttribute::.ctor() = ( 01 00 01 00 53 0E 05 54 6F 6B 65 6E 09 30 78 36   // ....S..Token.0x6
                                                                                   30 30 30 32 36 33 )                               // 000263
  .custom instance void [Il2CppDummyDll]Il2CppDummyDll.AddressAttribute::.ctor() = ( 01 00 03 00 53 0E 03 52 56 41 08 30 78 38 39 34   // ....S..RVA.0x894
                                                                                     41 34 30 53 0E 06 4F 66 66 73 65 74 08 30 78 38   // A40S..Offset.0x8
                                                                                     39 34 41 34 30 53 0E 02 56 41 08 30 78 38 39 34   // 94A40S..VA.0x894
                                                                                     41 34 30 )                                        // A40
  // Code size       1 (0x1)
  .maxstack  8
  IL_0000:  ret
} // end of method VendingMinigame::EnterDigit

How would I be able to see the functionality of the code (either in C# or in assembly)?

c#
assembly
.net-assembly
il2cpp
asked on Stack Overflow Sep 12, 2020 by opfromthestart

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0