コード例 #1
0
        public static void setDataUpper(TCPGecko upper)
        {
            uint num1 = upper.OsVersionRequest();

            if (num1 <= 410U)
            {
                if ((int)num1 != 400 && (int)num1 != 410)
                {
                    return;
                }
                uint num2 = upper.peek_kern(4293419420U);
                uint num3 = upper.peek_kern(num2 + 4U);
                uint num4 = upper.peek_kern(num3 + 20U);
                uint low1 = upper.peek_kern((uint)((int)num4 + 0 + 0));
                uint num5 = upper.peek_kern((uint)((int)num4 + 4 + 0));
                uint low2 = upper.peek_kern((uint)((int)num4 + 0 + 16));
                uint num6 = upper.peek_kern((uint)((int)num4 + 4 + 16));
                uint low3 = upper.peek_kern((uint)((int)num4 + 0 + 32));
                uint num7 = upper.peek_kern((uint)((int)num4 + 4 + 32));
                ValidMemory.ValidAreas[0] = new AddressRange(AddressType.Ex, low1, low1 + num5);
                ValidMemory.ValidAreas[1] = new AddressRange(AddressType.Ex, low2, low2 + num6);
                ValidMemory.ValidAreas[2] = new AddressRange(AddressType.Rw, low3, low3 + num7);
            }
            else if ((int)num1 == 500 || (int)num1 == 510)
            {
                ;
            }
        }
コード例 #2
0
ファイル: MemAreas.cs プロジェクト: vivlim/tcp-gecko-dotnet
        public static void setDataUpper(TCPGecko upper)
        {
            UInt32 mem;

            switch (upper.OsVersionRequest())
            {
            case 400:
            case 410:
                mem = upper.peek_kern(0xffe8619c);
                break;

            case 500:
            case 510:
                return;

            // TODO: This doesn't work for some reason - crashes on connection?
            //mem = upper.peek_kern(0xffe8591c);
            //break;
            default:
                return;
            }
            UInt32 tbl = upper.peek_kern(mem + 4);
            UInt32 lst = upper.peek_kern(tbl + 20);

            UInt32 init_start = upper.peek_kern(lst + 0 + 0x00);
            UInt32 init_len   = upper.peek_kern(lst + 4 + 0x00);
            UInt32 code_start = upper.peek_kern(lst + 0 + 0x10);
            UInt32 code_len   = upper.peek_kern(lst + 4 + 0x10);
            UInt32 data_start = upper.peek_kern(lst + 0 + 0x20);
            UInt32 data_len   = upper.peek_kern(lst + 4 + 0x20);

            ValidAreas[0] = new AddressRange(AddressType.Ex, init_start, init_start + init_len);
            ValidAreas[1] = new AddressRange(AddressType.Ex, code_start, code_start + code_len);
            ValidAreas[2] = new AddressRange(AddressType.Rw, data_start, data_start + data_len);
        }
コード例 #3
0
        public static void setDataUpper(TCPGecko upper)
        {
            uint mem;

            switch (upper.OsVersionRequest())
            {
            case 400:
            case 410:
                mem = upper.peek_kern(0xFFEB902C);
                break;

            case 500:
            case 510:
                mem = upper.peek_kern(0xFFEA9E4C);
                break;

            case 532:
            case 540:
                mem = upper.peek_kern(0xFFEAAA1C);
                break;

            case 551:
                mem = upper.peek_kern(0xFFEAB7AC);
                break;

            default:
                mem = upper.peek_kern();
                break;
            }
            uint tbl = upper.peek_kern(mem + 4);
            uint lst = upper.peek_kern(tbl + 20);

            uint init_start = upper.peek_kern(lst + 0 + 0x00);
            uint init_len   = upper.peek_kern(lst + 4 + 0x00);
            uint code_start = upper.peek_kern(lst + 0 + 0x10);
            uint code_len   = upper.peek_kern(lst + 4 + 0x10);
            uint data_start = upper.peek_kern(lst + 0 + 0x20);
            uint data_len   = upper.peek_kern(lst + 4 + 0x20);

            ValidAreas[0] = new AddressRange(AddressType.Ex, init_start, init_start + init_len);
            ValidAreas[1] = new AddressRange(AddressType.Ex, code_start, code_start + code_len);
            ValidAreas[2] = new AddressRange(AddressType.Rw, data_start, data_start + data_len);
        }