Beispiel #1
0
 public uint ResolveFunction(string titleID, uint ord)
 {
     if (XRPC.firstRan == 0)
     {
         byte[] Data = new byte[4];
         this.xbCon.DebugTarget.GetMemory(2445314222U, 4U, Data, out XRPC.meh);
         this.xbCon.DebugTarget.InvalidateMemoryCache(true, 2445314222U, 4U);
         Array.Reverse((Array)Data);
         this.bufferAddress = BitConverter.ToUInt32(Data, 0);
         XRPC.firstRan      = 1;
         this.stringPointer = this.bufferAddress + 1500U;
         this.floatPointer  = this.bufferAddress + 2700U;
         this.bytePointer   = this.bufferAddress + 3200U;
         this.xbCon.DebugTarget.SetMemory(this.bufferAddress, 100U, this.nulled, out XRPC.meh);
         this.xbCon.DebugTarget.SetMemory(this.stringPointer, 100U, this.nulled, out XRPC.meh);
     }
     byte[] bytes1 = Encoding.ASCII.GetBytes(titleID);
     this.xbCon.DebugTarget.SetMemory(this.stringPointer, (uint)bytes1.Length, bytes1, out XRPC.meh);
     long[] numArray = new long[2]
     {
         (long)this.stringPointer,
         0L
     };
     this.stringPointer += (uint)(Convert.ToString(titleID).Length + 1);
     numArray[1]         = (long)ord;
     byte[] data = XRPC.getData(numArray);
     this.xbCon.DebugTarget.SetMemory(this.bufferAddress + 8U, (uint)data.Length, data, out XRPC.meh);
     byte[] bytes2 = BitConverter.GetBytes(2181038081U);
     Array.Reverse((Array)bytes2);
     this.xbCon.DebugTarget.SetMemory(this.bufferAddress, 4U, bytes2, out XRPC.meh);
     Thread.Sleep(50);
     byte[] Data1 = new byte[4];
     this.xbCon.DebugTarget.GetMemory(this.bufferAddress + 4092U, 4U, Data1, out XRPC.meh);
     this.xbCon.DebugTarget.InvalidateMemoryCache(true, this.bufferAddress + 4092U, 4U);
     Array.Reverse((Array)Data1);
     return(BitConverter.ToUInt32(Data1, 0));
 }
Beispiel #2
0
        public uint CallSysFunction(uint address, params object[] arg)
        {
            long[] numArray1 = new long[9];
            if (!this.activeConnection)
            {
                this.Connect();
            }
            if (XRPC.firstRan == 0)
            {
                byte[] Data = new byte[4];
                this.xbCon.DebugTarget.GetMemory(2445314222U, 4U, Data, out XRPC.meh);
                this.xbCon.DebugTarget.InvalidateMemoryCache(true, 2445314222U, 4U);
                Array.Reverse((Array)Data);
                this.bufferAddress = BitConverter.ToUInt32(Data, 0);
                XRPC.firstRan      = 1;
                this.stringPointer = this.bufferAddress + 1500U;
                this.floatPointer  = this.bufferAddress + 2700U;
                this.bytePointer   = this.bufferAddress + 3200U;
                this.xbCon.DebugTarget.SetMemory(this.bufferAddress, 100U, this.nulled, out XRPC.meh);
                this.xbCon.DebugTarget.SetMemory(this.stringPointer, 100U, this.nulled, out XRPC.meh);
            }
            if (this.bufferAddress == 0U)
            {
                byte[] Data = new byte[4];
                this.xbCon.DebugTarget.GetMemory(2445314222U, 4U, Data, out XRPC.meh);
                this.xbCon.DebugTarget.InvalidateMemoryCache(true, 2445314222U, 4U);
                Array.Reverse((Array)Data);
                this.bufferAddress = BitConverter.ToUInt32(Data, 0);
            }
            this.stringPointer = this.bufferAddress + 1500U;
            this.floatPointer  = this.bufferAddress + 2700U;
            this.bytePointer   = this.bufferAddress + 3200U;
            int num    = 0;
            int index1 = 0;

            numArray1[index1] = (long)address;
            int index2 = index1 + 1;

            foreach (object obj in arg)
            {
                if (obj is byte)
                {
                    byte[] numArray2 = (byte[])obj;
                    numArray1[index2] = (long)BitConverter.ToUInt32(numArray2, 0);
                }
                else if (obj is byte[])
                {
                    byte[] Data = (byte[])obj;
                    this.xbCon.DebugTarget.SetMemory(this.bytePointer, (uint)Data.Length, Data, out XRPC.meh);
                    numArray1[index2] = (long)this.bytePointer;
                    this.bytePointer += (uint)(Data.Length + 2);
                }
                else if (obj is float)
                {
                    byte[] bytes = BitConverter.GetBytes(float.Parse(Convert.ToString(obj)));
                    this.xbCon.DebugTarget.SetMemory(this.floatPointer, (uint)bytes.Length, bytes, out XRPC.meh);
                    numArray1[index2]  = (long)this.floatPointer;
                    this.floatPointer += (uint)(bytes.Length + 2);
                }
                else if (obj is float[])
                {
                    byte[] Data = new byte[12];
                    for (int index3 = 0; index3 <= 2; ++index3)
                    {
                        byte[] numArray2 = new byte[4];
                        Buffer.BlockCopy((Array)obj, index3 * 4, (Array)numArray2, 0, 4);
                        Array.Reverse((Array)numArray2);
                        Buffer.BlockCopy((Array)numArray2, 0, (Array)Data, 4 * index3, 4);
                    }
                    this.xbCon.DebugTarget.SetMemory(this.floatPointer, (uint)Data.Length, Data, out XRPC.meh);
                    numArray1[index2]  = (long)this.floatPointer;
                    this.floatPointer += 2U;
                }
                else if (obj is string)
                {
                    byte[] bytes = Encoding.ASCII.GetBytes(Convert.ToString(obj));
                    this.xbCon.DebugTarget.SetMemory(this.stringPointer, (uint)bytes.Length, bytes, out XRPC.meh);
                    numArray1[index2]   = (long)this.stringPointer;
                    this.stringPointer += (uint)(Convert.ToString(obj).Length + 1);
                }
                else
                {
                    numArray1[index2] = Convert.ToInt64(obj);
                }
                ++num;
                ++index2;
            }
            byte[] data = XRPC.getData(numArray1);
            this.xbCon.DebugTarget.SetMemory(this.bufferAddress + 8U, (uint)data.Length, data, out XRPC.meh);
            byte[] bytes1 = BitConverter.GetBytes(num);
            Array.Reverse((Array)bytes1);
            this.xbCon.DebugTarget.SetMemory(this.bufferAddress + 4U, 4U, bytes1, out XRPC.meh);
            Thread.Sleep(0);
            byte[] bytes2 = BitConverter.GetBytes(2181038080U);
            Array.Reverse((Array)bytes2);
            this.xbCon.DebugTarget.SetMemory(this.bufferAddress, 4U, bytes2, out XRPC.meh);
            Thread.Sleep(50);
            byte[] Data1 = new byte[4];
            this.xbCon.DebugTarget.GetMemory(this.bufferAddress + 4092U, 4U, Data1, out XRPC.meh);
            this.xbCon.DebugTarget.InvalidateMemoryCache(true, this.bufferAddress + 4092U, 4U);
            Array.Reverse((Array)Data1);
            return(BitConverter.ToUInt32(Data1, 0));
        }