Esempio n. 1
0
        public YellowFlagFix(string executableFilePath) : base(executableFilePath)
        {
            var taskId = 0;

            // Task A
            UnmodifiedInstructions.Add(new DataPatcherUnitTask()
            {
                TaskId          = taskId,
                Description     = typeof(YellowFlagFix).Name,
                VirtualPosition = 0x00444E12,
                Instructions    = new byte[]
                {
                    0x0F, 0x85, 0x3D, 0x00, 0x00, 0x00  // jnz loc_444E55
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask()
            {
                TaskId          = taskId,
                Description     = typeof(YellowFlagFix).Name,
                VirtualPosition = 0x00444E12,
                Instructions    = new byte[]
                {
                    0x90,                           // nop
                    0xE9, 0x3D, 0x00, 0x00, 0x00    // jmp loc_444E55
                }
            });
            // End
        }
Esempio n. 2
0
        public SampleAppFix()
        {
            var taskId = 0;

            // Task A
            UnmodifiedInstructions.Add(new DataPatcherUnitTask()
            {
                TaskId          = taskId,
                Description     = typeof(SampleAppFix).Name,
                VirtualPosition = 0x0043A10C,
                Instructions    = new byte[]
                {
                    0x0F, 0x8D, 0x66, 0x00, 0x00, 0x00 // jnz loc_43A178
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask()
            {
                TaskId          = taskId,
                Description     = typeof(SampleAppFix).Name,
                VirtualPosition = 0x0043A10C,
                Instructions    = new byte[]
                {
                    0x90,                              // nop
                    0xE9, 0x66, 0x00, 0x00, 0x00       // jmp loc_43A178
                }
            });
            // End
        }
Esempio n. 3
0
        public DisplayModeFix()
        {
            var taskId = 0;

            // Task A
            UnmodifiedInstructions.Add(new DataPatcherUnitTask()
            {
                TaskId          = taskId,
                Description     = typeof(DisplayModeFix).Name,
                VirtualPosition = 0x00439E0A,
                Instructions    = new byte[]
                {
                    0x0F, 0x84, 0x40, 0x00, 0x00, 0x00 // jz loc_439E50
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask()
            {
                TaskId          = taskId,
                Description     = typeof(DisplayModeFix).Name,
                VirtualPosition = 0x00439E0A,
                Instructions    = new byte[]
                {
                    0x90,                              // nop
                    0xE9, 0x40, 0x00, 0x00, 0x00       // jmp loc_439E50
                }
            });
            // End
        }
Esempio n. 4
0
        public PointsSystemF120032009Update()
        {
            var taskId = 0;

            // Use unmodified instructions from default point scoring system as unmodified instructions
            var pointsSystemDefault = new PointsSystemF119912002Update();

            foreach (var dataPatcherUnitTask in pointsSystemDefault.GetUnmodifiedInstructions())
            {
                UnmodifiedInstructions.Add(new DataPatcherUnitTask
                {
                    TaskId          = dataPatcherUnitTask.TaskId,
                    Description     = typeof(PointsSystemF120032009Update).Name,
                    VirtualPosition = dataPatcherUnitTask.VirtualPosition,
                    Instructions    = dataPatcherUnitTask.Instructions
                });
            }

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(PointsSystemF120032009Update).Name,
                VirtualPosition = 0x005B8C5D,
                Instructions    = new byte[]
                {
                    // .text:005B8C5D var_68          = dword ptr -68h      ; v1 (Points base offset)
                    // .text:005B8C5D var_64          = dword ptr -64h      ; Points for  1st position
                    // .text:005B8C5D var_60          = dword ptr -60h      ; Points for  2nd position
                    // .text:005B8C5D var_5C          = dword ptr -5Ch      ; Points for  3rd position
                    // .text:005B8C5D var_58          = dword ptr -58h      ; Points for  4th position
                    // .text:005B8C5D var_54          = dword ptr -54h      ; Points for  5th position
                    // .text:005B8C5D var_50          = dword ptr -50h      ; Points for  6th position
                    // .text:005B8C5D var_4C          = dword ptr -4Ch      ; Points for  7th position
                    // .text:005B8C5D var_48          = dword ptr -48h      ; Points for  8th position
                    // .text:005B8C5D var_44          = dword ptr -44h      ; Points for  9th position
                    // .text:005B8C5D var_40          = dword ptr -40h      ; Points for 10th position
                    // .text:005B8C5D var_3C          = dword ptr -3Ch      ; Points for 11th position
                    // .text:005B8C5D var_38          = dword ptr -38h      ; Points for 12th position
                    // .text:005B8C5D var_34          = dword ptr -34h      ; Points for 13th position
                    // .text:005B8C5D var_30          = dword ptr -30h      ; Points for 14th position
                    // .text:005B8C5D var_2C          = dword ptr -2Ch      ; Points for 15th position
                    // .text:005B8C5D var_28          = dword ptr -28h      ; Points for 16th position
                    // .text:005B8C5D var_24          = dword ptr -24h      ; Points for 17th position
                    // .text:005B8C5D var_20          = dword ptr -20h      ; Points for 18th position
                    // .text:005B8C5D var_1C          = dword ptr -1Ch      ; Points for 19th position
                    // .text:005B8C5D var_18          = dword ptr -18h      ; Points for 20th position
                    // .text:005B8C5D var_14          = dword ptr -14h      ; Points for 21st position
                    // .text:005B8C5D var_10          = dword ptr -10h      ; Points for 22nd position
                    // .text:005B8C5D var_C           = dword ptr -0Ch      ; v24
                    // .text:005B8C5D var_8           = dword ptr -8        ; v25
                    // .text:005B8C5D var_4           = dword ptr -4        ; i
                    // .text:005B8C5D
                    0x55,                                                               // .text:005B8C5D                 push    ebp
                    0x8B, 0xEC,                                                         // .text:005B8C5E                 mov     ebp, esp
                    0x83, 0xEC, 0x68,                                                   // .text:005B8C60                 sub     esp, 68h
                    0x53,                                                               // .text:005B8C63                 push    ebx
                    0x56,                                                               // .text:005B8C64                 push    esi
                    0x57,                                                               // .text:005B8C65                 push    edi
                    0xC7, 0x45, 0x98, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8C66                 mov     [ebp+var_68], 0
                    0xC7, 0x45, 0x9C, 0x0A, 0x00, 0x00, 0x00,                           // .text:005B8C6D                 mov     [ebp+var_64], 0Ah
                    0xC7, 0x45, 0xA0, 0x08, 0x00, 0x00, 0x00,                           // .text:005B8C74                 mov     [ebp+var_60], 8
                    0xC7, 0x45, 0xA4, 0x06, 0x00, 0x00, 0x00,                           // .text:005B8C7B                 mov     [ebp+var_5C], 6
                    0xC7, 0x45, 0xA8, 0x05, 0x00, 0x00, 0x00,                           // .text:005B8C82                 mov     [ebp+var_58], 5
                    0xC7, 0x45, 0xAC, 0x04, 0x00, 0x00, 0x00,                           // .text:005B8C89                 mov     [ebp+var_54], 4
                    0xC7, 0x45, 0xB0, 0x03, 0x00, 0x00, 0x00,                           // .text:005B8C90                 mov     [ebp+var_50], 3
                    0xC7, 0x45, 0xB4, 0x02, 0x00, 0x00, 0x00,                           // .text:005B8C97                 mov     [ebp+var_4C], 2
                    0xC7, 0x45, 0xB8, 0x01, 0x00, 0x00, 0x00,                           // .text:005B8C9E                 mov     [ebp+var_48], 1
                    0xC7, 0x45, 0xBC, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8CA5                 mov     [ebp+var_44], 0
                    0xC7, 0x45, 0xC0, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8CAC                 mov     [ebp+var_40], 0
                    0xC7, 0x45, 0xC4, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8CB3                 mov     [ebp+var_3C], 0
                    0xC7, 0x45, 0xC8, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8CBA                 mov     [ebp+var_38], 0
                    0xC7, 0x45, 0xCC, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8CC1                 mov     [ebp+var_34], 0
                    0xC7, 0x45, 0xD0, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8CC8                 mov     [ebp+var_30], 0
                    0xC7, 0x45, 0xD4, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8CCF                 mov     [ebp+var_2C], 0
                    0xC7, 0x45, 0xD8, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8CD6                 mov     [ebp+var_28], 0
                    0xC7, 0x45, 0xDC, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8CDD                 mov     [ebp+var_24], 0
                    0xC7, 0x45, 0xE0, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8CE4                 mov     [ebp+var_20], 0
                    0xC7, 0x45, 0xE4, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8CEB                 mov     [ebp+var_1C], 0
                    0xC7, 0x45, 0xE8, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8CF2                 mov     [ebp+var_18], 0
                    0xC7, 0x45, 0xEC, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8CF9                 mov     [ebp+var_14], 0
                    0xC7, 0x45, 0xF0, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8D00                 mov     [ebp+var_10], 0

                    // ; initialise loop
                    0xC7, 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00,                           // .text:005B8D07                 mov     [ebp+var_4], 1
                    0xEB, 0x03,                                                         // .text:005B8D0E                 jmp     short loc_5B8D13
                                                                                        // .text:005B8D10 ; ---------------------------------------------------------------------------
                                                                                        // .text:005B8D10

                    // ; increment loop
                    // .text:005B8D10 loc_5B8D10:                             ; CODE XREF: sub_5B8C5D+2B1j
                    0xFF, 0x45, 0xFC,                                                   // .text:005B8D10                 inc     [ebp+var_4]
                                                                                        // .text:005B8D13

                    // ; for loop
                    // .text:005B8D13 loc_5B8D13:                             ; CODE XREF: sub_5B8C5D+B1j
                    0x83, 0x7D, 0xFC, 0x08,                                             // .text:005B8D13                 cmp     [ebp+var_4], 8  ; points positions
                    0x0F, 0x8F, 0xF6, 0x01, 0x00, 0x00,                                 // .text:005B8D17                 jg      loc_5B8F13      ; loop termination
                    0x8B, 0x55, 0xFC,                                                   // .text:005B8D1D                 mov     edx, [ebp+var_4]
                    0x69, 0xD2, 0xB0, 0x02, 0x00, 0x00,                                 // .text:005B8D20                 imul    edx, 2B0h
                    0x8B, 0x82, 0x00, 0x75, 0x96, 0x00,                                 // .text:005B8D26                 mov     eax, ds:dword_967500[edx]
                    0x89, 0x45, 0xF4,                                                   // .text:005B8D2C                 mov     [ebp+var_C], eax
                    0x8B, 0x4D, 0xFC,                                                   // .text:005B8D2F                 mov     ecx, [ebp+var_4]
                    0x69, 0xC9, 0xB0, 0x02, 0x00, 0x00,                                 // .text:005B8D32                 imul    ecx, 2B0h
                    0x8B, 0x91, 0x04, 0x75, 0x96, 0x00,                                 // .text:005B8D38                 mov     edx, ds:dword_967504[ecx]
                    0x89, 0x55, 0xF8,                                                   // .text:005B8D3E                 mov     [ebp+var_8], edx
                    0x8B, 0x45, 0xF8,                                                   // .text:005B8D41                 mov     eax, [ebp+var_8]
                    0x69, 0xC0, 0x90, 0x1E, 0x00, 0x00,                                 // .text:005B8D44                 imul    eax, 1E90h
                    0x8B, 0x88, 0x2C, 0x26, 0x20, 0x01,                                 // .text:005B8D4A                 mov     ecx, ds:dword_120262C[eax]
                    0x8B, 0x55, 0xFC,                                                   // .text:005B8D50                 mov     edx, [ebp+var_4]
                    0x03, 0x4C, 0x95, 0x98,                                             // .text:005B8D53                 add     ecx, [ebp+edx*4+var_68]
                    0x8B, 0x45, 0xF8,                                                   // .text:005B8D57                 mov     eax, [ebp+var_8]
                    0x69, 0xC0, 0x90, 0x1E, 0x00, 0x00,                                 // .text:005B8D5A                 imul    eax, 1E90h
                    0x89, 0x88, 0x2C, 0x26, 0x20, 0x01,                                 // .text:005B8D60                 mov     ds:dword_120262C[eax], ecx

                    // ; outer if
                    0x83, 0x7D, 0xFC, 0x01,                                             // .text:005B8D66                 cmp     [ebp+var_4], 1
                    0x0F, 0x85, 0x33, 0x01, 0x00, 0x00,                                 // .text:005B8D6A                 jnz     loc_5B8EA3
                    0x8B, 0x4D, 0xF8,                                                   // .text:005B8D70                 mov     ecx, [ebp+var_8]
                    0x69, 0xC9, 0x90, 0x1E, 0x00, 0x00,                                 // .text:005B8D73                 imul    ecx, 1E90h
                    0x8B, 0x91, 0x30, 0x26, 0x20, 0x01,                                 // .text:005B8D79                 mov     edx, ds:dword_1202630[ecx]
                    0x83, 0xC2, 0x01,                                                   // .text:005B8D7F                 add     edx, 1          ; DATA XREF: sub_511BA4+66o
                                                                                        // .text:005B8D7F                                         ; sub_511D2A+10o
                    0x8B, 0x45, 0xF8,                                                   // .text:005B8D82                 mov     eax, [ebp+var_8]
                    0x69, 0xC0, 0x90, 0x1E, 0x00, 0x00,                                 // .text:005B8D85                 imul    eax, 1E90h
                    0x89, 0x90, 0x30, 0x26, 0x20, 0x01,                                 // .text:005B8D8B                 mov     ds:dword_1202630[eax], edx
                    0x8B, 0x4D, 0xF8,                                                   // .text:005B8D91                 mov     ecx, [ebp+var_8]
                    0x69, 0xC9, 0x90, 0x1E, 0x00, 0x00,                                 // .text:005B8D94                 imul    ecx, 1E90h
                    0x8B, 0x91, 0x3C, 0x26, 0x20, 0x01,                                 // .text:005B8D9A                 mov     edx, ds:dword_120263C[ecx]
                    0x83, 0xC2, 0x01,                                                   // .text:005B8DA0                 add     edx, 1
                    0x8B, 0x45, 0xF8,                                                   // .text:005B8DA3                 mov     eax, [ebp+var_8]
                    0x69, 0xC0, 0x90, 0x1E, 0x00, 0x00,                                 // .text:005B8DA6                 imul    eax, 1E90h
                    0x89, 0x90, 0x3C, 0x26, 0x20, 0x01,                                 // .text:005B8DAC                 mov     ds:dword_120263C[eax], edx
                    0x8B, 0x45, 0xFC,                                                   // .text:005B8DB2                 mov     eax, [ebp+var_4]
                    0x69, 0xC0, 0xB0, 0x02, 0x00, 0x00,                                 // .text:005B8DB5                 imul    eax, 2B0h
                    0x8B, 0x88, 0x30, 0x11, 0x9D, 0x00,                                 // .text:005B8DBB                 mov     ecx, ds:dword_9D1130[eax]
                    0x69, 0xC9, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8DC1                 imul    ecx, 0DF8h
                    0x8B, 0x91, 0x40, 0xC4, 0x16, 0x01,                                 // .text:005B8DC7                 mov     edx, ds:dword_116C440[ecx]
                    0x83, 0xC2, 0x01,                                                   // .text:005B8DCD                 add     edx, 1
                    0x8B, 0x45, 0xFC,                                                   // .text:005B8DD0                 mov     eax, [ebp+var_4]
                    0x69, 0xC0, 0xB0, 0x02, 0x00, 0x00,                                 // .text:005B8DD3                 imul    eax, 2B0h
                    0x8B, 0x88, 0x30, 0x11, 0x9D, 0x00,                                 // .text:005B8DD9                 mov     ecx, ds:dword_9D1130[eax]
                    0x69, 0xC9, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8DDF                 imul    ecx, 0DF8h
                    0x89, 0x91, 0x40, 0xC4, 0x16, 0x01,                                 // .text:005B8DE5                 mov     ds:dword_116C440[ecx], edx

                    // ; inner if
                    0x8B, 0x55, 0xFC,                                                   // .text:005B8DEB                 mov     edx, [ebp+var_4]
                    0x69, 0xD2, 0xB0, 0x02, 0x00, 0x00,                                 // .text:005B8DEE                 imul    edx, 2B0h
                    0x8B, 0x82, 0x30, 0x11, 0x9D, 0x00,                                 // .text:005B8DF4                 mov     eax, ds:dword_9D1130[edx]
                    0x69, 0xC0, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8DFA                 imul    eax, 0DF8h
                    0x83, 0xB8, 0x40, 0xC4, 0x16, 0x01, 0x01,                           // .text:005B8E00                 cmp     ds:dword_116C440[eax], 1
                    0x75, 0x1F,                                                         // .text:005B8E07                 jnz     short loc_5B8E28
                    0x8B, 0x4D, 0xFC,                                                   // .text:005B8E09                 mov     ecx, [ebp+var_4]
                    0x69, 0xC9, 0xB0, 0x02, 0x00, 0x00,                                 // .text:005B8E0C                 imul    ecx, 2B0h
                    0x8B, 0x91, 0x30, 0x11, 0x9D, 0x00,                                 // .text:005B8E12                 mov     edx, ds:dword_9D1130[ecx]
                    0x69, 0xD2, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8E18                 imul    edx, 0DF8h
                    0xC7, 0x82, 0xE8, 0xD1, 0x16, 0x01, 0x01, 0x00, 0x00, 0x00,         // .text:005B8E1E                 mov     ds:dword_116D1E8[edx], 1
                                                                                        // ; end inner if

                    // .text:005B8E28
                    // .text:005B8E28 loc_5B8E28:                             ; CODE XREF: sub_5B8C5D+1AAj
                    0x8B, 0x45, 0xFC,                                                   // .text:005B8E28                 mov     eax, [ebp+var_4]
                    0x69, 0xC0, 0xB0, 0x02, 0x00, 0x00,                                 // .text:005B8E2B                 imul    eax, 2B0h
                    0x8B, 0x88, 0x30, 0x11, 0x9D, 0x00,                                 // .text:005B8E31                 mov     ecx, ds:dword_9D1130[eax]
                    0x69, 0xC9, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8E37                 imul    ecx, 0DF8h
                    0x8B, 0x91, 0x44, 0xC4, 0x16, 0x01,                                 // .text:005B8E3D                 mov     edx, ds:dword_116C444[ecx]
                    0x83, 0xC2, 0x01,                                                   // .text:005B8E43                 add     edx, 1
                    0x8B, 0x45, 0xFC,                                                   // .text:005B8E46                 mov     eax, [ebp+var_4]
                    0x69, 0xC0, 0xB0, 0x02, 0x00, 0x00,                                 // .text:005B8E49                 imul    eax, 2B0h
                    0x8B, 0x88, 0x30, 0x11, 0x9D, 0x00,                                 // .text:005B8E4F                 mov     ecx, ds:dword_9D1130[eax]
                    0x69, 0xC9, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8E55                 imul    ecx, 0DF8h
                    0x89, 0x91, 0x44, 0xC4, 0x16, 0x01,                                 // .text:005B8E5B                 mov     ds:dword_116C444[ecx], edx
                    0x8B, 0x55, 0xF4,                                                   // .text:005B8E61                 mov     edx, [ebp+var_C]
                    0x69, 0xD2, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8E64                 imul    edx, 0DF8h
                    0x8B, 0x82, 0x3C, 0xC4, 0x16, 0x01,                                 // .text:005B8E6A                 mov     eax, ds:dword_116C43C[edx]
                    0x83, 0xC0, 0x01,                                                   // .text:005B8E70                 add     eax, 1
                    0x8B, 0x4D, 0xF4,                                                   // .text:005B8E73                 mov     ecx, [ebp+var_C]
                    0x69, 0xC9, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8E76                 imul    ecx, 0DF8h
                    0x89, 0x81, 0x3C, 0xC4, 0x16, 0x01,                                 // .text:005B8E7C                 mov     ds:dword_116C43C[ecx], eax
                    0x8B, 0x55, 0xF4,                                                   // .text:005B8E82                 mov     edx, [ebp-0Ch]
                    0x69, 0xD2, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8E85                 imul    edx, 0DF8h
                    0x8B, 0x82, 0x48, 0xC4, 0x16, 0x01,                                 // .text:005B8E8B                 mov     eax, ds:dword_116C448[edx]
                    0x83, 0xC0, 0x01,                                                   // .text:005B8E91                 add     eax, 1
                    0x8B, 0x4D, 0xF4,                                                   // .text:005B8E94                 mov     ecx, [ebp+var_C]
                    0x69, 0xC9, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8E97                 imul    ecx, 0DF8h
                    0x89, 0x81, 0x48, 0xC4, 0x16, 0x01,                                 // .text:005B8E9D                 mov     ds:dword_116C448[ecx], eax
                                                                                        // ; end outer if

                    // .text:005B8EA3
                    // .text:005B8EA3 loc_5B8EA3:                             ; CODE XREF: sub_5B8C5D+10Dj
                    0x8B, 0x55, 0xF4,                                                   // .text:005B8EA3                 mov     edx, [ebp-0Ch]
                    0x69, 0xD2, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8EA6                 imul    edx, 0DF8h
                    0x8B, 0x82, 0x84, 0xD0, 0x16, 0x01,                                 // .text:005B8EAC                 mov     eax, ds:dword_116D084[edx]
                    0x83, 0xC0, 0x01,                                                   // .text:005B8EB2                 add     eax, 1
                    0x8B, 0x4D, 0xF4,                                                   // .text:005B8EB5                 mov     ecx, [ebp+var_C]
                    0x69, 0xC9, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8EB8                 imul    ecx, 0DF8h
                    0x89, 0x81, 0x84, 0xD0, 0x16, 0x01,                                 // .text:005B8EBE                 mov     ds:dword_116D084[ecx], eax
                    0x8B, 0x55, 0xF4,                                                   // .text:005B8EC4                 mov     edx, [ebp+var_C]
                    0x69, 0xD2, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8EC7                 imul    edx, 0DF8h
                    0x8B, 0x82, 0x2C, 0xC4, 0x16, 0x01,                                 // .text:005B8ECD                 mov     eax, ds:dword_116C42C[edx]
                    0x8B, 0x4D, 0xFC,                                                   // .text:005B8ED3                 mov     ecx, [ebp+var_4]
                    0x03, 0x44, 0x8D, 0x98,                                             // .text:005B8ED6                 add     eax, [ebp+ecx*4+var_68]
                    0x8B, 0x55, 0xF4,                                                   // .text:005B8EDA                 mov     edx, [ebp+var_C]
                    0x69, 0xD2, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8EDD                 imul    edx, 0DF8h
                    0x89, 0x82, 0x2C, 0xC4, 0x16, 0x01,                                 // .text:005B8EE3                 mov     ds:dword_116C42C[edx], eax
                    0x8B, 0x45, 0xF4,                                                   // .text:005B8EE9                 mov     eax, [ebp+var_C]
                    0x69, 0xC0, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8EEC                 imul    eax, 0DF8h
                    0x8B, 0x88, 0x30, 0xC4, 0x16, 0x01,                                 // .text:005B8EF2                 mov     ecx, ds:dword_116C430[eax]
                    0x8B, 0x55, 0xFC,                                                   // .text:005B8EF8                 mov     edx, [ebp+var_4]
                    0x03, 0x4C, 0x95, 0x98,                                             // .text:005B8EFB                 add     ecx, [ebp+edx*4+var_68]
                    0x8B, 0x45, 0xF4,                                                   // .text:005B8EFF                 mov     eax, [ebp+var_C]
                    0x69, 0xC0, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8F02                 imul    eax, 0DF8h
                    0x89, 0x88, 0x30, 0xC4, 0x16, 0x01,                                 // .text:005B8F08                 mov     ds:dword_116C430[eax], ecx

                    // ; top of loop
                    0xE9, 0xFD, 0xFD, 0xFF, 0xFF,                                       // .text:005B8F0E                 jmp     loc_5B8D10
                                                                                        // .text:005B8F13 ; ---------------------------------------------------------------------------
                                                                                        // .text:005B8F13

                    // ; initialise loop
                    // .text:005B8F13 loc_5B8F13:                             ; CODE XREF: sub_5B8C5D+BAj
                    0xC7, 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00,                           // .text:005B8F13                 mov     [ebp+var_4], 1
                    0xEB, 0x03,                                                         // .text:005B8F1A                 jmp     short loc_5B8F1F
                                                                                        // .text:005B8F1C ; ---------------------------------------------------------------------------
                                                                                        // .text:005B8F1C

                    // ; increment loop
                    // .text:005B8F1C loc_5B8F1C:                             ; CODE XREF: sub_5B8C5D+370j
                    0xFF, 0x45, 0xFC,                                                   // .text:005B8F1C                 inc     [ebp+var_4]

                    // ; for loop
                    // .text:005B8F1F
                    // .text:005B8F1F loc_5B8F1F:                             ; CODE XREF: sub_5B8C5D+2BDj
                    0x83, 0x7D, 0xFC, 0x16,                                             // .text:005B8F1F                 cmp     [ebp+var_4], 16h; number of drivers
                    0x0F, 0x8F, 0xA9, 0x00, 0x00, 0x00,                                 // .text:005B8F23                 jg      loc_5B8FD2      ; loop termination
                    0x8B, 0x55, 0xFC,                                                   // .text:005B8F29                 mov     edx, [ebp+var_4]
                    0x69, 0xD2, 0xB0, 0x02, 0x00, 0x00,                                 // .text:005B8F2C                 imul    edx, 2B0h
                    0x8B, 0x82, 0x00, 0x75, 0x96, 0x00,                                 // .text:005B8F32                 mov     eax, ds:dword_967500[edx]
                    0x89, 0x45, 0xF4,                                                   // .text:005B8F38                 mov     [ebp+var_C], eax
                    0x8B, 0x4D, 0xFC,                                                   // .text:005B8F3B                 mov     ecx, [ebp+var_4]
                    0x69, 0xC9, 0xB0, 0x02, 0x00, 0x00,                                 // .text:005B8F3E                 imul    ecx, 2B0h
                    0x8B, 0x91, 0x04, 0x75, 0x96, 0x00,                                 // .text:005B8F44                 mov     edx, ds:dword_967504[ecx]
                    0x89, 0x55, 0xF8,                                                   // .text:005B8F4A                 mov     [ebp+var_8], edx
                    0x8B, 0x45, 0xF4,                                                   // .text:005B8F4D                 mov     eax, [ebp+var_C]
                    0x69, 0xC0, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8F50                 imul    eax, 0DF8h
                    0x8B, 0x4D, 0xFC,                                                   // .text:005B8F56                 mov     ecx, [ebp+var_4]
                    0xC7, 0x84, 0x88, 0x4C, 0xC4, 0x16, 0x01, 0x00, 0x00, 0x00, 0x00,   // .text:005B8F59                 mov     ds:dword_116C44C[eax+ecx*4], 0
                    0x8B, 0x55, 0xF8,                                                   // .text:005B8F64                 mov     edx, [ebp+var_8]
                    0x69, 0xD2, 0x90, 0x1E, 0x00, 0x00,                                 // .text:005B8F67                 imul    edx, 1E90h
                    0x8B, 0x45, 0xFC,                                                   // .text:005B8F6D                 mov     eax, [ebp+var_4]
                    0xC7, 0x84, 0x82, 0x44, 0x26, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00,   // .text:005B8F70                 mov     ds:dword_1202644[edx+eax*4], 0
                    0x8B, 0x45, 0xF4,                                                   // .text:005B8F7B                 mov     eax, [ebp+var_C]
                    0x69, 0xC0, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8F7E                 imul    eax, 0DF8h
                    0x8B, 0x4D, 0xFC,                                                   // .text:005B8F84                 mov     ecx, [ebp+var_4]
                    0x8B, 0x94, 0x88, 0x4C, 0xC4, 0x16, 0x01,                           // .text:005B8F87                 mov     edx, ds:dword_116C44C[eax+ecx*4]
                    0x83, 0xC2, 0x01,                                                   // .text:005B8F8E                 add     edx, 1
                    0x8B, 0x45, 0xF4,                                                   // .text:005B8F91                 mov     eax, [ebp+var_C]
                    0x69, 0xC0, 0xF8, 0x0D, 0x00, 0x00,                                 // .text:005B8F94                 imul    eax, 0DF8h
                    0x8B, 0x4D, 0xFC,                                                   // .text:005B8F9A                 mov     ecx, [ebp+var_4]
                    0x89, 0x94, 0x88, 0x4C, 0xC4, 0x16, 0x01,                           // .text:005B8F9D                 mov     ds:dword_116C44C[eax+ecx*4], edx
                    0x8B, 0x55, 0xF8,                                                   // .text:005B8FA4                 mov     edx, [ebp+var_8]
                    0x69, 0xD2, 0x90, 0x1E, 0x00, 0x00,                                 // .text:005B8FA7                 imul    edx, 1E90h
                    0x8B, 0x45, 0xFC,                                                   // .text:005B8FAD                 mov     eax, [ebp+var_4]
                    0x8B, 0x8C, 0x82, 0x44, 0x26, 0x20, 0x01,                           // .text:005B8FB0                 mov     ecx, ds:dword_1202644[edx+eax*4]
                    0x83, 0xC1, 0x01,                                                   // .text:005B8FB7                 add     ecx, 1
                    0x8B, 0x55, 0xF8,                                                   // .text:005B8FBA                 mov     edx, [ebp+var_8]
                    0x69, 0xD2, 0x90, 0x1E, 0x00, 0x00,                                 // .text:005B8FBD                 imul    edx, 1E90h
                    0x8B, 0x45, 0xFC,                                                   // .text:005B8FC3                 mov     eax, [ebp+var_4]
                    0x89, 0x8C, 0x82, 0x44, 0x26, 0x20, 0x01,                           // .text:005B8FC6                 mov     ds:dword_1202644[edx+eax*4], ecx

                    // ; top of loop
                    0xE9, 0x4A, 0xFF, 0xFF, 0xFF,                                       // .text:005B8FCD                 jmp     loc_5B8F1C
                                                                                        // .text:005B8FD2 ; ---------------------------------------------------------------------------
                                                                                        // .text:005B8FD2

                    // ; end sub
                    // .text:005B8FD2 loc_5B8FD2:                             ; CODE XREF: sub_5B8C5D+2C6j
                    0x5F,                                                               // .text:005B8FD2                 pop     edi
                    0x5E,                                                               // .text:005B8FD3                 pop     esi
                    0x5B,                                                               // .text:005B8FD4                 pop     ebx
                    0xC9,                                                               // .text:005B8FD5                 leave
                    0xC3,                                                               // .text:005B8FD6                 retn
                                                                                        // .text:005B8FD6 sub_5B8C5D      endp
                                                                                        // .text:005B8FD6
                                                                                        // .text:005B8FD6 ; ---------------------------------------------------------------------------
                    0xCC,                                                               // .text:005B8FD7                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FD8                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FD9                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FDA                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FDB                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FDC                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FDD                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FDE                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FDF                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FE0                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FE1                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FE2                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FE3                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FE4                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FE5                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FE6                 db  CCh ; É OFF32 SEGDEF [0,90909090]
                    0xCC,                                                               // .text:005B8FE7                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FE8                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FE9                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FEA                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FEB                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FEC                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FED                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FEE                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FEF                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FF0                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FF1                 db  CCh ; É
                    0xCC,                                                               // .text:005B8FF2                 db  CCh ; É
                    0xCC                                                                // .text:005B8FF3                 db  CCh ; É
                }
            });
        }
Esempio n. 5
0
        public PointsSystemUnmodified(string executableFilePath) : base(executableFilePath)
        {
            var taskId = 0;

            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(PointsSystemUnmodified).Name,
                VirtualPosition = 0x005B8C5D,
                Instructions    = new byte[]
                {
                    // .text:005B8C5D var_28          = dword ptr -28h
                    // .text:005B8C5D var_24          = dword ptr -24h
                    // .text:005B8C5D var_20          = dword ptr -20h
                    // .text:005B8C5D var_1C          = dword ptr -1Ch
                    // .text:005B8C5D var_18          = dword ptr -18h
                    // .text:005B8C5D var_14          = dword ptr -14h
                    // .text:005B8C5D var_10          = dword ptr -10h
                    // .text:005B8C5D var_C           = dword ptr -0Ch
                    // .text:005B8C5D var_8           = dword ptr -8
                    // .text:005B8C5D var_4           = dword ptr -4
                    // .text:005B8C5D
                    0x55,                                                               // .text:005B8C5D                 push    ebp
                    0x8B, 0xEC,                                                         // .text:005B8C5E                 mov     ebp, esp
                    0x83, 0xEC, 0x28,                                                   // .text:005B8C60                 sub     esp, 28h
                    0x53,                                                               // .text:005B8C63                 push    ebx
                    0x56,                                                               // .text:005B8C64                 push    esi
                    0x57,                                                               // .text:005B8C65                 push    edi
                    0xC7, 0x45, 0xE4, 0x00, 0x00, 0x00, 0x00,                           // .text:005B8C66                 mov     [ebp+var_1C], 0
                    0xC7, 0x45, 0xE8, 0x0A, 0x00, 0x00, 0x00,                           // .text:005B8C6D                 mov     [ebp+var_18], 0Ah
                    0xC7, 0x45, 0xEC, 0x06, 0x00, 0x00, 0x00,                           // .text:005B8C74                 mov     [ebp+var_14], 6
                    0xC7, 0x45, 0xF0, 0x04, 0x00, 0x00, 0x00,                           // .text:005B8C7B                 mov     [ebp+var_10], 4
                    0xC7, 0x45, 0xF4, 0x03, 0x00, 0x00, 0x00,                           // .text:005B8C82                 mov     [ebp+var_C], 3
                    0xC7, 0x45, 0xF8, 0x02, 0x00, 0x00, 0x00,                           // .text:005B8C89                 mov     [ebp+var_8], 2
                    0xC7, 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00,                           // .text:005B8C90                 mov     [ebp+var_4], 1
                    0xC7, 0x45, 0xDC, 0x01, 0x00, 0x00, 0x00,                           // .text:005B8C97                 mov     [ebp+var_24], 1
                    0xE9, 0x03, 0x00, 0x00, 0x00,                                       // .text:005B8C9E                 jmp     loc_5B8CA6
                                                                                        // .text:005B8CA3 ; ---------------------------------------------------------------------------
                                                                                        // .text:005B8CA3
                                                                                        // .text:005B8CA3 loc_5B8CA3:                             ; CODE XREF: sub_5B8C5D:loc_5B8D29j
                    0xFF, 0x45, 0xDC,                                                   // .text:005B8CA3                 inc     [ebp+var_24]
                                                                                        // .text:005B8CA6
                                                                                        // .text:005B8CA6 loc_5B8CA6:                             ; CODE XREF: sub_5B8C5D+41j
                    0x83, 0x7D, 0xDC, 0x06,                                             // .text:005B8CA6                 cmp     [ebp+var_24], 6
                    0x0F, 0x8F, 0x7E, 0x00, 0x00, 0x00,                                 // .text:005B8CAA                 jg      loc_5B8D2E
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8CB0                 mov     eax, [ebp+var_24]
                    0x8B, 0xC8,                                                         // .text:005B8CB3                 mov     ecx, eax
                    0x8D, 0x04, 0x80,                                                   // .text:005B8CB5                 lea     eax, [eax+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8CB8                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x41,                                                   // .text:005B8CBB                 lea     eax, [ecx+eax*2]
                    0xC1, 0xE0, 0x04,                                                   // .text:005B8CBE                 shl     eax, 4
                    0x8B, 0x80, 0x04, 0x75, 0x96, 0x00,                                 // .text:005B8CC1                 mov     eax, ds:dword_967504[eax]
                    0x89, 0x45, 0xD8,                                                   // .text:005B8CC7                 mov     [ebp+var_28], eax
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8CCA                 mov     eax, [ebp+var_24]
                    0x8B, 0x44, 0x85, 0xE4,                                             // .text:005B8CCD                 mov     eax, [ebp+eax*4+var_1C]
                    0x8B, 0x4D, 0xD8,                                                   // .text:005B8CD1                 mov     ecx, [ebp+var_28]
                    0x8B, 0xD1,                                                         // .text:005B8CD4                 mov     edx, ecx
                    0x8D, 0x0C, 0xC9,                                                   // .text:005B8CD6                 lea     ecx, [ecx+ecx*8]
                    0x8D, 0x0C, 0xC9,                                                   // .text:005B8CD9                 lea     ecx, [ecx+ecx*8]
                    0x8D, 0x0C, 0x4A,                                                   // .text:005B8CDC                 lea     ecx, [edx+ecx*2]
                    0x8D, 0x0C, 0x49,                                                   // .text:005B8CDF                 lea     ecx, [ecx+ecx*2]
                    0xC1, 0xE1, 0x04,                                                   // .text:005B8CE2                 shl     ecx, 4
                    0x01, 0x81, 0x2C, 0x26, 0x20, 0x01,                                 // .text:005B8CE5                 add     ds:dword_120262C[ecx], eax
                    0x83, 0x7D, 0xDC, 0x01,                                             // .text:005B8CEB                 cmp     [ebp+var_24], 1
                    0x0F, 0x85, 0x34, 0x00, 0x00, 0x00,                                 // .text:005B8CEF                 jnz     loc_5B8D29
                    0x8B, 0x45, 0xD8,                                                   // .text:005B8CF5                 mov     eax, [ebp+var_28]
                    0x8B, 0xC8,                                                         // .text:005B8CF8                 mov     ecx, eax
                    0x8D, 0x04, 0xC0,                                                   // .text:005B8CFA                 lea     eax, [eax+eax*8]
                    0x8D, 0x04, 0xC0,                                                   // .text:005B8CFD                 lea     eax, [eax+eax*8]
                    0x8D, 0x04, 0x41,                                                   // .text:005B8D00                 lea     eax, [ecx+eax*2]
                    0x8D, 0x04, 0x40,                                                   // .text:005B8D03                 lea     eax, [eax+eax*2]
                    0xC1, 0xE0, 0x04,                                                   // .text:005B8D06                 shl     eax, 4
                    0xFF, 0x80, 0x30, 0x26, 0x20, 0x01,                                 // .text:005B8D09                 inc     ds:dword_1202630[eax]
                    0x8B, 0x45, 0xD8,                                                   // .text:005B8D0F                 mov     eax, [ebp+var_28]
                    0x8B, 0xC8,                                                         // .text:005B8D12                 mov     ecx, eax
                    0x8D, 0x04, 0xC0,                                                   // .text:005B8D14                 lea     eax, [eax+eax*8]
                    0x8D, 0x04, 0xC0,                                                   // .text:005B8D17                 lea     eax, [eax+eax*8]
                    0x8D, 0x04, 0x41,                                                   // .text:005B8D1A                 lea     eax, [ecx+eax*2]
                    0x8D, 0x04, 0x40,                                                   // .text:005B8D1D                 lea     eax, [eax+eax*2]
                    0xC1, 0xE0, 0x04,                                                   // .text:005B8D20                 shl     eax, 4
                    0xFF, 0x80, 0x3C, 0x26, 0x20, 0x01,                                 // .text:005B8D23                 inc     ds:dword_120263C[eax]
                                                                                        // .text:005B8D29
                                                                                        // .text:005B8D29 loc_5B8D29:                             ; CODE XREF: sub_5B8C5D+92j
                    0xE9, 0x75, 0xFF, 0xFF, 0xFF,                                       // .text:005B8D29                 jmp     loc_5B8CA3
                                                                                        // .text:005B8D2E ; ---------------------------------------------------------------------------
                                                                                        // .text:005B8D2E
                                                                                        // .text:005B8D2E loc_5B8D2E:                             ; CODE XREF: sub_5B8C5D+4Dj
                    0xC7, 0x45, 0xDC, 0x01, 0x00, 0x00, 0x00,                           // .text:005B8D2E                 mov     [ebp+var_24], 1
                    0xE9, 0x03, 0x00, 0x00, 0x00,                                       // .text:005B8D35                 jmp     loc_5B8D3D
                                                                                        // .text:005B8D3A ; ---------------------------------------------------------------------------
                                                                                        // .text:005B8D3A
                                                                                        // .text:005B8D3A loc_5B8D3A:                             ; CODE XREF: sub_5B8C5D+269j
                    0xFF, 0x45, 0xDC,                                                   // .text:005B8D3A                 inc     [ebp+var_24]
                                                                                        // .text:005B8D3D
                                                                                        // .text:005B8D3D loc_5B8D3D:                             ; CODE XREF: sub_5B8C5D+D8j
                    0x83, 0x7D, 0xDC, 0x06,                                             // .text:005B8D3D                 cmp     [ebp+var_24], 6
                    0x0F, 0x8F, 0x84, 0x01, 0x00, 0x00,                                 // .text:005B8D41                 jg      loc_5B8ECB
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8D47                 mov     eax, [ebp+var_24]
                    0x8B, 0xC8,                                                         // .text:005B8D4A                 mov     ecx, eax
                    0x8D, 0x04, 0x80,                                                   // .text:005B8D4C                 lea     eax, [eax+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8D4F                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x41,                                                   // .text:005B8D52                 lea     eax, [ecx+eax*2]
                    0xC1, 0xE0, 0x04,                                                   // .text:005B8D55                 shl     eax, 4
                    0x8B, 0x80, 0x00, 0x75, 0x96, 0x00,                                 // .text:005B8D58                 mov     eax, ds:dword_967500[eax]
                    0x89, 0x45, 0xE0,                                                   // .text:005B8D5E                 mov     [ebp+var_20], eax
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8D61                 mov     eax, [ebp+var_24]
                    0x8B, 0xC8,                                                         // .text:005B8D64                 mov     ecx, eax
                    0x8D, 0x04, 0x80,                                                   // .text:005B8D66                 lea     eax, [eax+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8D69                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x41,                                                   // .text:005B8D6C                 lea     eax, [ecx+eax*2]
                    0xC1, 0xE0, 0x04,                                                   // .text:005B8D6F                 shl     eax, 4
                    0x8B, 0x80, 0x04, 0x75, 0x96, 0x00,                                 // .text:005B8D72                 mov     eax, ds:dword_967504[eax]
                    0x89, 0x45, 0xD8,                                                   // .text:005B8D78                 mov     [ebp+var_28], eax
                    0x83, 0x7D, 0xDC, 0x01,                                             // .text:005B8D7B                 cmp     [ebp+var_24], 1
                    0x0F, 0x85, 0xEB, 0x00, 0x00, 0x00,                                 // .text:005B8D7F                 jnz     loc_5B8E70      ; DATA XREF: sub_511BA4+66o
                                                                                        // .text:005B8D7F                                         ; sub_511D2A+10o
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8D85                 mov     eax, [ebp+var_24]
                    0x8B, 0xC8,                                                         // .text:005B8D88                 mov     ecx, eax
                    0x8D, 0x04, 0x80,                                                   // .text:005B8D8A                 lea     eax, [eax+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8D8D                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x41,                                                   // .text:005B8D90                 lea     eax, [ecx+eax*2]
                    0xC1, 0xE0, 0x04,                                                   // .text:005B8D93                 shl     eax, 4
                    0x8B, 0x80, 0x30, 0x11, 0x9D, 0x00,                                 // .text:005B8D96                 mov     eax, ds:dword_9D1130[eax]
                    0x8B, 0xC8,                                                         // .text:005B8D9C                 mov     ecx, eax
                    0x8D, 0x04, 0xC0,                                                   // .text:005B8D9E                 lea     eax, [eax+eax*8]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8DA1                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8DA4                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x40,                                                   // .text:005B8DA7                 lea     eax, [eax+eax*2]
                    0xFF, 0x04, 0xC5, 0x40, 0xC4, 0x16, 0x01,                           // .text:005B8DAA                 inc     ds:dword_116C440[eax*8]
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8DB1                 mov     eax, [ebp+var_24]
                    0x8B, 0xC8,                                                         // .text:005B8DB4                 mov     ecx, eax
                    0x8D, 0x04, 0x80,                                                   // .text:005B8DB6                 lea     eax, [eax+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8DB9                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x41,                                                   // .text:005B8DBC                 lea     eax, [ecx+eax*2]
                    0xC1, 0xE0, 0x04,                                                   // .text:005B8DBF                 shl     eax, 4
                    0x8B, 0x80, 0x30, 0x11, 0x9D, 0x00,                                 // .text:005B8DC2                 mov     eax, ds:dword_9D1130[eax]
                    0x8B, 0xC8,                                                         // .text:005B8DC8                 mov     ecx, eax
                    0x8D, 0x04, 0xC0,                                                   // .text:005B8DCA                 lea     eax, [eax+eax*8]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8DCD                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8DD0                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x40,                                                   // .text:005B8DD3                 lea     eax, [eax+eax*2]
                    0x83, 0x3C, 0xC5, 0x40, 0xC4, 0x16, 0x01, 0x01,                     // .text:005B8DD6                 cmp     ds:dword_116C440[eax*8], 1
                    0x0F, 0x85, 0x30, 0x00, 0x00, 0x00,                                 // .text:005B8DDE                 jnz     loc_5B8E14
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8DE4                 mov     eax, [ebp+var_24]
                    0x8B, 0xC8,                                                         // .text:005B8DE7                 mov     ecx, eax
                    0x8D, 0x04, 0x80,                                                   // .text:005B8DE9                 lea     eax, [eax+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8DEC                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x41,                                                   // .text:005B8DEF                 lea     eax, [ecx+eax*2]
                    0xC1, 0xE0, 0x04,                                                   // .text:005B8DF2                 shl     eax, 4
                    0x8B, 0x80, 0x30, 0x11, 0x9D, 0x00,                                 // .text:005B8DF5                 mov     eax, ds:dword_9D1130[eax]
                    0x8B, 0xC8,                                                         // .text:005B8DFB                 mov     ecx, eax
                    0x8D, 0x04, 0xC0,                                                   // .text:005B8DFD                 lea     eax, [eax+eax*8]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8E00                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8E03                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x40,                                                   // .text:005B8E06                 lea     eax, [eax+eax*2]
                    0xC7, 0x04, 0xC5, 0xE8, 0xD1, 0x16, 0x01, 0x01, 0x00, 0x00, 0x00,   // .text:005B8E09                 mov     ds:dword_116D1E8[eax*8], 1
                                                                                        // .text:005B8E14
                                                                                        // .text:005B8E14 loc_5B8E14:                             ; CODE XREF: sub_5B8C5D+181j
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8E14                 mov     eax, [ebp+var_24]
                    0x8B, 0xC8,                                                         // .text:005B8E17                 mov     ecx, eax
                    0x8D, 0x04, 0x80,                                                   // .text:005B8E19                 lea     eax, [eax+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8E1C                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x41,                                                   // .text:005B8E1F                 lea     eax, [ecx+eax*2]
                    0xC1, 0xE0, 0x04,                                                   // .text:005B8E22                 shl     eax, 4
                    0x8B, 0x80, 0x30, 0x11, 0x9D, 0x00,                                 // .text:005B8E25                 mov     eax, ds:dword_9D1130[eax]
                    0x8B, 0xC8,                                                         // .text:005B8E2B                 mov     ecx, eax
                    0x8D, 0x04, 0xC0,                                                   // .text:005B8E2D                 lea     eax, [eax+eax*8]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8E30                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8E33                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x40,                                                   // .text:005B8E36                 lea     eax, [eax+eax*2]
                    0xFF, 0x04, 0xC5, 0x44, 0xC4, 0x16, 0x01,                           // .text:005B8E39                 inc     ds:dword_116C444[eax*8]
                    0x8B, 0x45, 0xE0,                                                   // .text:005B8E40                 mov     eax, [ebp+var_20]
                    0x8B, 0xC8,                                                         // .text:005B8E43                 mov     ecx, eax
                    0x8D, 0x04, 0xC0,                                                   // .text:005B8E45                 lea     eax, [eax+eax*8]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8E48                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8E4B                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x40,                                                   // .text:005B8E4E                 lea     eax, [eax+eax*2]
                    0xFF, 0x04, 0xC5, 0x3C, 0xC4, 0x16, 0x01,                           // .text:005B8E51                 inc     ds:dword_116C43C[eax*8]
                    0x8B, 0x45, 0xE0,                                                   // .text:005B8E58                 mov     eax, [ebp+var_20]
                    0x8B, 0xC8,                                                         // .text:005B8E5B                 mov     ecx, eax
                    0x8D, 0x04, 0xC0,                                                   // .text:005B8E5D                 lea     eax, [eax+eax*8]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8E60                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8E63                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x40,                                                   // .text:005B8E66                 lea     eax, [eax+eax*2]
                    0xFF, 0x04, 0xC5, 0x48, 0xC4, 0x16, 0x01,                           // .text:005B8E69                 inc     ds:dword_116C448[eax*8]
                                                                                        // .text:005B8E70
                                                                                        // .text:005B8E70 loc_5B8E70:                             ; CODE XREF: sub_5B8C5D+122j
                    0x8B, 0x45, 0xE0,                                                   // .text:005B8E70                 mov     eax, [ebp+var_20]
                    0x8B, 0xC8,                                                         // .text:005B8E73                 mov     ecx, eax
                    0x8D, 0x04, 0xC0,                                                   // .text:005B8E75                 lea     eax, [eax+eax*8]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8E78                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8E7B                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x40,                                                   // .text:005B8E7E                 lea     eax, [eax+eax*2]
                    0xFF, 0x04, 0xC5, 0x84, 0xD0, 0x16, 0x01,                           // .text:005B8E81                 inc     ds:dword_116D084[eax*8]
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8E88                 mov     eax, [ebp+var_24]
                    0x8B, 0x44, 0x85, 0xE4,                                             // .text:005B8E8B                 mov     eax, [ebp+eax*4+var_1C]
                    0x8B, 0x4D, 0xE0,                                                   // .text:005B8E8F                 mov     ecx, [ebp+var_20]
                    0x8B, 0xD1,                                                         // .text:005B8E92                 mov     edx, ecx
                    0x8D, 0x0C, 0xC9,                                                   // .text:005B8E94                 lea     ecx, [ecx+ecx*8]
                    0x8D, 0x0C, 0x8A,                                                   // .text:005B8E97                 lea     ecx, [edx+ecx*4]
                    0x8D, 0x0C, 0x8A,                                                   // .text:005B8E9A                 lea     ecx, [edx+ecx*4]
                    0x8D, 0x0C, 0x49,                                                   // .text:005B8E9D                 lea     ecx, [ecx+ecx*2]
                    0x01, 0x04, 0xCD, 0x2C, 0xC4, 0x16, 0x01,                           // .text:005B8EA0                 add     ds:dword_116C42C[ecx*8], eax
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8EA7                 mov     eax, [ebp+var_24]
                    0x8B, 0x44, 0x85, 0xE4,                                             // .text:005B8EAA                 mov     eax, [ebp+eax*4+var_1C]
                    0x8B, 0x4D, 0xE0,                                                   // .text:005B8EAE                 mov     ecx, [ebp+var_20]
                    0x8B, 0xD1,                                                         // .text:005B8EB1                 mov     edx, ecx
                    0x8D, 0x0C, 0xC9,                                                   // .text:005B8EB3                 lea     ecx, [ecx+ecx*8]
                    0x8D, 0x0C, 0x8A,                                                   // .text:005B8EB6                 lea     ecx, [edx+ecx*4]
                    0x8D, 0x0C, 0x8A,                                                   // .text:005B8EB9                 lea     ecx, [edx+ecx*4]
                    0x8D, 0x0C, 0x49,                                                   // .text:005B8EBC                 lea     ecx, [ecx+ecx*2]
                    0x01, 0x04, 0xCD, 0x30, 0xC4, 0x16, 0x01,                           // .text:005B8EBF                 add     ds:dword_116C430[ecx*8], eax
                    0xE9, 0x6F, 0xFE, 0xFF, 0xFF,                                       // .text:005B8EC6                 jmp     loc_5B8D3A
                                                                                        // .text:005B8ECB ; ---------------------------------------------------------------------------
                                                                                        // .text:005B8ECB
                                                                                        // .text:005B8ECB loc_5B8ECB:                             ; CODE XREF: sub_5B8C5D+E4j
                    0xC7, 0x45, 0xDC, 0x01, 0x00, 0x00, 0x00,                           // .text:005B8ECB                 mov     [ebp+var_24], 1
                    0xE9, 0x03, 0x00, 0x00, 0x00,                                       // .text:005B8ED2                 jmp     loc_5B8EDA
                                                                                        // .text:005B8ED7 ; ---------------------------------------------------------------------------
                                                                                        // .text:005B8ED7
                                                                                        // .text:005B8ED7 loc_5B8ED7:                             ; CODE XREF: sub_5B8C5D+2FFj
                    0xFF, 0x45, 0xDC,                                                   // .text:005B8ED7                 inc     [ebp+var_24]
                                                                                        // .text:005B8EDA
                                                                                        // .text:005B8EDA loc_5B8EDA:                             ; CODE XREF: sub_5B8C5D+275j
                    0x83, 0x7D, 0xDC, 0x16,                                             // .text:005B8EDA                 cmp     [ebp+var_24], 16h
                    0x0F, 0x8F, 0x7D, 0x00, 0x00, 0x00,                                 // .text:005B8EDE                 jg      loc_5B8F61
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8EE4                 mov     eax, [ebp+var_24]
                    0x8B, 0xC8,                                                         // .text:005B8EE7                 mov     ecx, eax
                    0x8D, 0x04, 0x80,                                                   // .text:005B8EE9                 lea     eax, [eax+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8EEC                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x41,                                                   // .text:005B8EEF                 lea     eax, [ecx+eax*2]
                    0xC1, 0xE0, 0x04,                                                   // .text:005B8EF2                 shl     eax, 4
                    0x8B, 0x80, 0x00, 0x75, 0x96, 0x00,                                 // .text:005B8EF5                 mov     eax, ds:dword_967500[eax]
                    0x89, 0x45, 0xE0,                                                   // .text:005B8EFB                 mov     [ebp+var_20], eax
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8EFE                 mov     eax, [ebp+var_24]
                    0x8B, 0xC8,                                                         // .text:005B8F01                 mov     ecx, eax
                    0x8D, 0x04, 0x80,                                                   // .text:005B8F03                 lea     eax, [eax+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8F06                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x41,                                                   // .text:005B8F09                 lea     eax, [ecx+eax*2]
                    0xC1, 0xE0, 0x04,                                                   // .text:005B8F0C                 shl     eax, 4
                    0x8B, 0x80, 0x04, 0x75, 0x96, 0x00,                                 // .text:005B8F0F                 mov     eax, ds:dword_967504[eax]
                    0x89, 0x45, 0xD8,                                                   // .text:005B8F15                 mov     [ebp+var_28], eax
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8F18                 mov     eax, [ebp+var_24]
                    0x8B, 0x4D, 0xE0,                                                   // .text:005B8F1B                 mov     ecx, [ebp+var_20]
                    0x8B, 0xD1,                                                         // .text:005B8F1E                 mov     edx, ecx
                    0x8D, 0x0C, 0xC9,                                                   // .text:005B8F20                 lea     ecx, [ecx+ecx*8]
                    0x8D, 0x0C, 0x8A,                                                   // .text:005B8F23                 lea     ecx, [edx+ecx*4]
                    0x8D, 0x0C, 0x8A,                                                   // .text:005B8F26                 lea     ecx, [edx+ecx*4]
                    0x8D, 0x0C, 0x49,                                                   // .text:005B8F29                 lea     ecx, [ecx+ecx*2]
                    0xC1, 0xE1, 0x03,                                                   // .text:005B8F2C                 shl     ecx, 3
                    0xC7, 0x84, 0x81, 0x4C, 0xC4, 0x16, 0x01, 0x00, 0x00, 0x00, 0x00,   // .text:005B8F2F                 mov     ds:dword_116C44C[ecx+eax*4], 0
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8F3A                 mov     eax, [ebp+var_24]
                    0x8B, 0x4D, 0xD8,                                                   // .text:005B8F3D                 mov     ecx, [ebp+var_28]
                    0x8B, 0xD1,                                                         // .text:005B8F40                 mov     edx, ecx
                    0x8D, 0x0C, 0xC9,                                                   // .text:005B8F42                 lea     ecx, [ecx+ecx*8]
                    0x8D, 0x0C, 0xC9,                                                   // .text:005B8F45                 lea     ecx, [ecx+ecx*8]
                    0x8D, 0x0C, 0x4A,                                                   // .text:005B8F48                 lea     ecx, [edx+ecx*2]
                    0x8D, 0x0C, 0x49,                                                   // .text:005B8F4B                 lea     ecx, [ecx+ecx*2]
                    0xC1, 0xE1, 0x04,                                                   // .text:005B8F4E                 shl     ecx, 4
                    0xC7, 0x84, 0x81, 0x44, 0x26, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00,   // .text:005B8F51                 mov     ds:dword_1202644[ecx+eax*4], 0
                    0xE9, 0x76, 0xFF, 0xFF, 0xFF,                                       // .text:005B8F5C                 jmp     loc_5B8ED7
                                                                                        // .text:005B8F61 ; ---------------------------------------------------------------------------
                                                                                        // .text:005B8F61
                                                                                        // .text:005B8F61 loc_5B8F61:                             ; CODE XREF: sub_5B8C5D+281j
                    0xC7, 0x45, 0xDC, 0x01, 0x00, 0x00, 0x00,                           // .text:005B8F61                 mov     [ebp+var_24], 1
                    0xE9, 0x03, 0x00, 0x00, 0x00,                                       // .text:005B8F68                 jmp     loc_5B8F70
                                                                                        // .text:005B8F6D ; ---------------------------------------------------------------------------
                                                                                        // .text:005B8F6D
                                                                                        // .text:005B8F6D loc_5B8F6D:                             ; CODE XREF: sub_5B8C5D+38Dj
                    0xFF, 0x45, 0xDC,                                                   // .text:005B8F6D                 inc     [ebp+var_24]
                                                                                        // .text:005B8F70
                                                                                        // .text:005B8F70 loc_5B8F70:                             ; CODE XREF: sub_5B8C5D+30Bj
                    0x83, 0x7D, 0xDC, 0x16,                                             // .text:005B8F70                 cmp     [ebp+var_24], 16h
                    0x0F, 0x8F, 0x75, 0x00, 0x00, 0x00,                                 // .text:005B8F74                 jg      loc_5B8FEF
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8F7A                 mov     eax, [ebp+var_24]
                    0x8B, 0xC8,                                                         // .text:005B8F7D                 mov     ecx, eax
                    0x8D, 0x04, 0x80,                                                   // .text:005B8F7F                 lea     eax, [eax+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8F82                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x41,                                                   // .text:005B8F85                 lea     eax, [ecx+eax*2]
                    0xC1, 0xE0, 0x04,                                                   // .text:005B8F88                 shl     eax, 4
                    0x8B, 0x80, 0x00, 0x75, 0x96, 0x00,                                 // .text:005B8F8B                 mov     eax, ds:dword_967500[eax]
                    0x89, 0x45, 0xE0,                                                   // .text:005B8F91                 mov     [ebp+var_20], eax
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8F94                 mov     eax, [ebp+var_24]
                    0x8B, 0xC8,                                                         // .text:005B8F97                 mov     ecx, eax
                    0x8D, 0x04, 0x80,                                                   // .text:005B8F99                 lea     eax, [eax+eax*4]
                    0x8D, 0x04, 0x81,                                                   // .text:005B8F9C                 lea     eax, [ecx+eax*4]
                    0x8D, 0x04, 0x41,                                                   // .text:005B8F9F                 lea     eax, [ecx+eax*2]
                    0xC1, 0xE0, 0x04,                                                   // .text:005B8FA2                 shl     eax, 4
                    0x8B, 0x80, 0x04, 0x75, 0x96, 0x00,                                 // .text:005B8FA5                 mov     eax, ds:dword_967504[eax]
                    0x89, 0x45, 0xD8,                                                   // .text:005B8FAB                 mov     [ebp+var_28], eax
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8FAE                 mov     eax, [ebp+var_24]
                    0x8B, 0x4D, 0xE0,                                                   // .text:005B8FB1                 mov     ecx, [ebp+var_20]
                    0x8B, 0xD1,                                                         // .text:005B8FB4                 mov     edx, ecx
                    0x8D, 0x0C, 0xC9,                                                   // .text:005B8FB6                 lea     ecx, [ecx+ecx*8]
                    0x8D, 0x0C, 0x8A,                                                   // .text:005B8FB9                 lea     ecx, [edx+ecx*4]
                    0x8D, 0x0C, 0x8A,                                                   // .text:005B8FBC                 lea     ecx, [edx+ecx*4]
                    0x8D, 0x0C, 0x49,                                                   // .text:005B8FBF                 lea     ecx, [ecx+ecx*2]
                    0xC1, 0xE1, 0x03,                                                   // .text:005B8FC2                 shl     ecx, 3
                    0xFF, 0x84, 0x81, 0x4C, 0xC4, 0x16, 0x01,                           // .text:005B8FC5                 inc     ds:dword_116C44C[ecx+eax*4]
                    0x8B, 0x45, 0xDC,                                                   // .text:005B8FCC                 mov     eax, [ebp+var_24]
                    0x8B, 0x4D, 0xD8,                                                   // .text:005B8FCF                 mov     ecx, [ebp+var_28]
                    0x8B, 0xD1,                                                         // .text:005B8FD2                 mov     edx, ecx
                    0x8D, 0x0C, 0xC9,                                                   // .text:005B8FD4                 lea     ecx, [ecx+ecx*8]
                    0x8D, 0x0C, 0xC9,                                                   // .text:005B8FD7                 lea     ecx, [ecx+ecx*8]
                    0x8D, 0x0C, 0x4A,                                                   // .text:005B8FDA                 lea     ecx, [edx+ecx*2]
                    0x8D, 0x0C, 0x49,                                                   // .text:005B8FDD                 lea     ecx, [ecx+ecx*2]
                    0xC1, 0xE1, 0x04,                                                   // .text:005B8FE0                 shl     ecx, 4
                    0xFF, 0x84, 0x81, 0x44, 0x26, 0x20, 0x01,                           // .text:005B8FE3                 inc     ds:dword_1202644[ecx+eax*4]
                    0xE9, 0x7E, 0xFF, 0xFF, 0xFF,                                       // .text:005B8FEA                 jmp     loc_5B8F6D
                                                                                        // .text:005B8FEF ; ---------------------------------------------------------------------------
                                                                                        // .text:005B8FEF
                                                                                        // .text:005B8FEF loc_5B8FEF:                             ; CODE XREF: sub_5B8C5D+317j
                    0x5F,                                                               // .text:005B8FEF                 pop     edi
                    0x5E,                                                               // .text:005B8FF0                 pop     esi
                    0x5B,                                                               // .text:005B8FF1                 pop     ebx
                    0xC9,                                                               // .text:005B8FF2                 leave
                    0xC3                                                                // .text:005B8FF3                 retn
                }
            });
        }
Esempio n. 6
0
        public TrackEditorFix()
        {
            var taskId = 0;

            // Task A
            // Enables track editor mode
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x00450C4F,
                Instructions    = new byte[]
                {
                    0x00, 0x00, 0x00, 0x00 // 0
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x00450C4F,
                Instructions    = new byte[]
                {
                    0x01, 0x00, 0x00, 0x00 // 1
                }
            });
            // End

            taskId++;

            // Task B
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F4FF,
                Instructions    = new byte[]
                {
                    0x68, 0xC0, 0x3A, 0x5F, 0x01, // push    offset aDatYes3ded_dat
                    0xE8, 0xAF, 0x67, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F4FF,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task C
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F536,
                Instructions    = new byte[]
                {
                    0x68, 0xD0, 0x3A, 0x5F, 0x01, // push    offset aDatYes3ded_d_0
                    0xE8, 0x78, 0x67, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F536,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task D
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F55F,
                Instructions    = new byte[]
                {
                    0x68, 0xE0, 0x3A, 0x5F, 0x01, // push    offset aDatYes3ded_d_1
                    0xE8, 0x4F, 0x67, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F55F,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task E
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F5A8,
                Instructions    = new byte[]
                {
                    0x68, 0xF0, 0x3A, 0x5F, 0x01, // push    offset aDatYes3ded_d_2
                    0xE8, 0x06, 0x67, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F5A8,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task F
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F5F1,
                Instructions    = new byte[]
                {
                    0x68, 0x00, 0x3B, 0x5F, 0x01, // push    offset aDatYes3ded_d_3
                    0xE8, 0xBD, 0x66, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F5F1,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });

            taskId++;

            // Task G
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F655,
                Instructions    = new byte[]
                {
                    0x68, 0x10, 0x3B, 0x5F, 0x01, // push    offset aDatYes3ded_d_4
                    0xE8, 0x59, 0x66, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F655,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task H
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F69E,
                Instructions    = new byte[]
                {
                    0x68, 0x20, 0x3B, 0x5F, 0x01, // offset aDatYes3ded_d_5
                    0xE8, 0x10, 0x66, 0xFE, 0xFF, // sub_435CB8
                    0x83, 0xC4, 0x04              // esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F69E,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task I
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F702,
                Instructions    = new byte[]
                {
                    0x68, 0x30, 0x3B, 0x5F, 0x01, // push    offset aDatYes3ded_d_6
                    0xE8, 0xAC, 0x65, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F702,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task J
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F74B,
                Instructions    = new byte[]
                {
                    0x68, 0x40, 0x3B, 0x5F, 0x01, // push    offset aDatYes3ded_d_7
                    0xE8, 0x63, 0x65, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F74B,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task K
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F7AF,
                Instructions    = new byte[]
                {
                    0x68, 0x50, 0x3B, 0x5F, 0x01, // push    offset aDatYes3ded_d_8
                    0xE8, 0xFF, 0x64, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F7AF,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task L
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F7E4,
                Instructions    = new byte[]
                {
                    0x68, 0x60, 0x3B, 0x5F, 0x01, // push    offset aDatYes3ded_d_9
                    0xE8, 0xCA, 0x64, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F7E4,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task M
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F859,
                Instructions    = new byte[]
                {
                    0x68, 0x70, 0x3B, 0x5F, 0x01, // push    offset aDatYes3ded__10
                    0xE8, 0x55, 0x64, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F859,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task N
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F882,
                Instructions    = new byte[]
                {
                    0x68, 0x80, 0x3B, 0x5F, 0x01, // push    offset aDatYes3ded__11
                    0xE8, 0x2C, 0x64, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F882,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task O
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F91D,
                Instructions    = new byte[]
                {
                    0x68, 0x90, 0x3B, 0x5F, 0x01, // push    offset aDatYes3ded__12
                    0xE8, 0x91, 0x63, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F91D,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task P
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F966,
                Instructions    = new byte[]
                {
                    0x68, 0xA0, 0x3B, 0x5F, 0x01, // push    offset aDatYes3ded__13
                    0xE8, 0x48, 0x63, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F966,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task Q
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F991,
                Instructions    = new byte[]
                {
                    0x68, 0xB0, 0x3B, 0x5F, 0x01, // push    offset aDatYes3ded__14
                    0xE8, 0x1D, 0x63, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F991,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task R
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F9CA,
                Instructions    = new byte[]
                {
                    0x68, 0xC0, 0x3B, 0x5F, 0x01, // push    offset aDatYes3ded__15
                    0xE8, 0xE4, 0x62, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044F9CA,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task S
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044FA2D,
                Instructions    = new byte[]
                {
                    0x68, 0xD0, 0x3B, 0x5F, 0x01, // push    offset aDatYes3ded__16
                    0xE8, 0x81, 0x62, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044FA2D,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task T
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044FA76,
                Instructions    = new byte[]
                {
                    0x68, 0xE0, 0x3B, 0x5F, 0x01, // push    offset aDatYes3ded__17
                    0xE8, 0x38, 0x62, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044FA76,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task U
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044FAC6,
                Instructions    = new byte[]
                {
                    0x68, 0xF0, 0x3B, 0x5F, 0x01, // push    offset aDatYes3ded__18
                    0xE8, 0xE8, 0x61, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044FAC6,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task V
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044FAF1,
                Instructions    = new byte[]
                {
                    0x68, 0x00, 0x3C, 0x5F, 0x01, // push    offset aDatYes3ded__19
                    0xE8, 0xBD, 0x61, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044FAF1,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task W
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044FB22,
                Instructions    = new byte[]
                {
                    0x68, 0x10, 0x3C, 0x5F, 0x01, // push    offset aDatYes3ded__20
                    0xE8, 0x8C, 0x61, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044FB22,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task X
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044FB53,
                Instructions    = new byte[]
                {
                    0x68, 0x20, 0x3C, 0x5F, 0x01, // push    offset aDatYes3ded__21
                    0xE8, 0x5B, 0x61, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044FB53,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task Y
            // Force enable track editor key mappings by bypassing file check
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044FB84,
                Instructions    = new byte[]
                {
                    0x68, 0x30, 0x3C, 0x5F, 0x01, // push    offset aDatYes3ded__22
                    0xE8, 0x2A, 0x61, 0xFE, 0xFF, // call    sub_435CB8
                    0x83, 0xC4, 0x04              // add     esp, 4
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x0044FB84,
                Instructions    = new byte[]
                {
                    0xB8, 0x01, 0x00, 0x00, 0x00, // mov     eax, 1
                    0x90, 0x90, 0x90, 0x90, 0x90, // nop
                    0x90, 0x90, 0x90              // nop
                }
            });
            // End

            taskId++;

            // Task Z
            // Change tga filepath to load track editor enabled reminder image
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x01602A54,
                Instructions    = new byte[]
                {
                    // 'tga\backdrop\raceann.tga'
                    0x74, 0x67, 0x61, 0x5C, 0x62, 0x61, 0x63, 0x6B, 0x64, 0x72, 0x6F, 0x70,
                    0x5C, 0x72, 0x61, 0x63, 0x65, 0x61, 0x6E, 0x6E, 0x2E, 0x74, 0x67, 0x61
                    //       r     a     c     e     a     n     n     .     t     g     a
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(TrackEditorFix).Name,
                VirtualPosition = 0x01602A54,
                Instructions    = new byte[]
                {
                    // 'tga\backdrop\racetee.tga'
                    0x74, 0x67, 0x61, 0x5C, 0x62, 0x61, 0x63, 0x6B, 0x64, 0x72, 0x6F, 0x70,
                    0x5C, 0x72, 0x61, 0x63, 0x65, 0x74, 0x65, 0x65, 0x2E, 0x74, 0x67, 0x61
                    //       r     a     c     e     t     e     e     .     t     g     a
                }
            });
            // End
        }
        public CarHandlingPerformanceFix(string executableFilePath) : base(executableFilePath)
        {
            var taskId = 0;

            // Task A
            UnmodifiedInstructions.Add(new DataPatcherUnitTask()
            {
                TaskId          = taskId,
                Description     = typeof(CarHandlingPerformanceFix).Name,
                VirtualPosition = 0x0053656B,
                Instructions    = new byte[]
                {
                    //                                ; divide value by 10
                    0xB9, 0x0A, 0x00, 0x00, 0x00,               // .text:0053656B                 mov     ecx, 0Ah
                    0x8B, 0x45, 0xC0,                           // .text:00536570                 mov     eax, [ebp+var_40]
                    0x99,                                       // .text:00536573                 cdq
                    0xF7, 0xF9,                                 // .text:00536574                 idiv    ecx
                    0x89, 0x45, 0xA8,                           // .text:00536576                 mov     [ebp+var_58], eax
                                                                //
                                                                //                                ; make sure value is 0 or greater
                    0x83, 0x7D, 0xA8, 0x01,                     // .text:00536579                 cmp     [ebp+var_58], 1
                    0x0F, 0x8D, 0x0C, 0x00, 0x00, 0x00,         // .text:0053657D                 jge     loc_53658F
                    0xC7, 0x45, 0xA8, 0x00, 0x00, 0x00, 0x00,   // .text:00536583                 mov     [ebp+var_58], 0
                    0xE9, 0x11, 0x00, 0x00, 0x00,               // .text:0053658A                 jmp     loc_5365A0
                                                                //
                                                                // .text:0053658F ; ---------------------------------------------------------------------------
                                                                // .text:0053658F                 ; make sure value is 11 or less
                                                                // .text:0053658F loc_53658F:                             ; CODE XREF: sub_535B90+9EDj
                    0x83, 0x7D, 0xA8, 0x0B,                     // .text:0053658F                 cmp     [ebp+var_58], 0Bh
                    0x0F, 0x8E, 0x07, 0x00, 0x00, 0x00,         // .text:00536593                 jle     loc_5365A0
                    0xC7, 0x45, 0xA8, 0x0B, 0x00, 0x00, 0x00,   // .text:00536599                 mov     [ebp+var_58], 0Bh
                                                                //
                                                                // .text:005365A0                 ; multiply value by 10
                                                                // .text:005365A0 loc_5365A0:                             ; CODE XREF: sub_535B90+9FAj
                                                                // .text:005365A0                                         ; sub_535B90+A03j
                    0x8B, 0x45, 0xA8,                           // .text:005365A0                 mov     eax, [ebp+var_58]
                    0x8D, 0x04, 0x80,                           // .text:005365A3                 lea     eax, [eax+eax*4]
                    0x03, 0xC0,                                 // .text:005365A6                 add     eax, eax
                    0x89, 0x45, 0xA8                            // .text:005365A8                 mov     [ebp+var_58], eax
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask()
            {
                TaskId          = taskId,
                Description     = typeof(CarHandlingPerformanceFix).Name,
                VirtualPosition = 0x0053656B,
                Instructions    = new byte[]
                {
                    //                                ; move car handling value
                    0x90, 0x90, 0x90, 0x90, 0x90,               // .text:0053656B                 {nop}
                    0x8B, 0x45, 0xC0,                           // .text:00536570                 mov     eax, [ebp+var_40]
                    0x90,                                       // .text:00536573                 {nop}
                    0x90, 0x90,                                 // .text:00536574                 {nop}
                    0x89, 0x45, 0xA8,                           // .text:00536576                 mov     [ebp+var_58], eax
                                                                //
                    0x90, 0x90, 0x90, 0x90,                     // .text:00536579                 {nop}
                    0x90, 0x90, 0x90, 0x90, 0x90, 0x90,         // .text:0053657D                 {nop}
                    0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,   // .text:00536583                 {nop}
                    0x90, 0x90, 0x90, 0x90, 0x90,               // .text:0053658A                 {nop}
                                                                //
                    0x90, 0x90, 0x90, 0x90,                     // .text:0053658F                 {nop}
                    0x90, 0x90, 0x90, 0x90, 0x90, 0x90,         // .text:00536593                 {nop}
                    0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,   // .text:00536599                 {nop}
                                                                //
                    0x90, 0x90, 0x90,                           // .text:005365A0                 {nop}
                    0x90, 0x90, 0x90,                           // .text:005365A3                 {nop}
                    0x90, 0x90,                                 // .text:005365A6                 {nop}
                    0x90, 0x90, 0x90                            // .text:005365A8                 {nop}
                }
            });
            // End
        }
Esempio n. 8
0
        public RaceSoundsFix()
        {
            var taskId = 0;

            // Task A
            // Resolve unhandled exception at 0x0049aa6b in gpw.exe: 0xC0000005: Access violation reading location 0x0771e202.
            UnmodifiedInstructions.Add(new DataPatcherUnitTask()
            {
                TaskId          = taskId,
                Description     = typeof(RaceSoundsFix).Name,
                VirtualPosition = 0x0049AA5F,
                Instructions    = new byte[]
                {
                    0x8B, 0x45, 0xE8,               // .text:0049AA5F                 mov     eax, [ebp+var_18]
                    0x2B, 0x45, 0xEC,               // .text:0049AA62                 sub     eax, [ebp+var_14]
                    0x50,                           // .text:0049AA65                 push    eax             ; Size
                    0xA1, 0x18, 0xF2, 0x72, 0x00,   // .text:0049AA66                 mov     eax, ds:dword_72F218
                    0x66, 0x8B, 0x40, 0x0E,         // .text:0049AA6B                 mov     ax, [eax+0Eh]
                    0x25, 0xFF, 0xFF, 0x00, 0x00,   // .text:0049AA6F                 and     eax, 0FFFFh
                    0x83, 0xE8, 0x08,               // .text:0049AA74                 sub     eax, 8
                    0x83, 0xF8, 0x01,               // .text:0049AA77                 cmp     eax, 1
                    0x1B, 0xC0,                     // .text:0049AA7A                 sbb     eax, eax
                    0x25, 0x80, 0x00, 0x00, 0x00,   // .text:0049AA7C                 and     eax, 80h
                    0x50,                           // .text:0049AA81                 push    eax             ; Val
                    0x8B, 0x45, 0xEC,               // .text:0049AA82                 mov     eax, [ebp+var_14]
                    0x03, 0x45, 0xF8,               // .text:0049AA85                 add     eax, [ebp+var_8]
                    0x50,                           // .text:0049AA88                 push    eax             ; Dst
                    0xE8, 0xBA, 0x20, 0x1E, 0x00,   // .text:0049AA89                 call    _memset
                    0x83, 0xC4, 0x0C                // .text:0049AA8E                 add     esp, 0Ch
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask()
            {
                TaskId          = taskId,
                Description     = typeof(RaceSoundsFix).Name,
                VirtualPosition = 0x0049AA5F,
                Instructions    = new byte[]
                {
                    0x90, 0x90, 0x90,               // .text:0049AA5F                 {nop}
                    0x90, 0x90, 0x90,               // .text:0049AA62                 {nop}
                    0x90,                           // .text:0049AA65                 {nop}
                    0x90, 0x90, 0x90, 0x90, 0x90,   // .text:0049AA66                 {nop}
                    0x90, 0x90, 0x90, 0x90,         // .text:0049AA6B                 {nop}
                    0x90, 0x90, 0x90, 0x90, 0x90,   // .text:0049AA6F                 {nop}
                    0x90, 0x90, 0x90,               // .text:0049AA74                 {nop}
                    0x90, 0x90, 0x90,               // .text:0049AA77                 {nop}
                    0x90, 0x90,                     // .text:0049AA7A                 {nop}
                    0x90, 0x90, 0x90, 0x90, 0x90,   // .text:0049AA7C                 {nop}
                    0x90,                           // .text:0049AA81                 {nop}
                    0x90, 0x90, 0x90,               // .text:0049AA82                 {nop}
                    0x90, 0x90, 0x90,               // .text:0049AA85                 {nop}
                    0x90,                           // .text:0049AA88                 {nop}
                    0x90, 0x90, 0x90, 0x90, 0x90,   // .text:0049AA89                 {nop}
                    0x90, 0x90, 0x90                // .text:0049AA8E                 {nop}
                }
            });
            // End

            taskId++;

            // Task B
            // Resolve unhandled exception at 0x0049b41e in gpw.exe: 0xC0000005: Access violation reading location 0x01c4b04e.
            UnmodifiedInstructions.Add(new DataPatcherUnitTask()
            {
                TaskId          = taskId,
                Description     = typeof(RaceSoundsFix).Name,
                VirtualPosition = 0x0049B40A,
                Instructions    = new byte[]
                {
                    0x8B, 0x45, 0xE8,                           // .text:0049B40A                 mov     eax, [ebp+var_18]
                    0x2B, 0x45, 0xEC,                           // .text:0049B40D                 sub     eax, [ebp+var_14]
                    0x50,                                       // .text:0049B410                 push    eax             ; Size
                    0x8B, 0x45, 0x0C,                           // .text:0049B411                 mov     eax, [ebp+arg_4]
                    0xC1, 0xE0, 0x02,                           // .text:0049B414                 shl     eax, 2
                    0x8B, 0x84, 0x80, 0x68, 0xF4, 0x72, 0x00,   // .text:0049B417                 mov     eax, ds:dword_72F468[eax+eax*4]
                    0x66, 0x8B, 0x40, 0x0E,                     // .text:0049B41E                 mov     ax, [eax+0Eh]
                    0x25, 0xFF, 0xFF, 0x00, 0x00,               // .text:0049B422                 and     eax, 0FFFFh
                    0x83, 0xE8, 0x08,                           // .text:0049B427                 sub     eax, 8
                    0x83, 0xF8, 0x01,                           // .text:0049B42A                 cmp     eax, 1
                    0x1B, 0xC0,                                 // .text:0049B42D                 sbb     eax, eax
                    0x25, 0x80, 0x00, 0x00, 0x00,               // .text:0049B42F                 and     eax, 80h
                    0x50,                                       // .text:0049B434                 push    eax             ; Val
                    0x8B, 0x45, 0xEC,                           // .text:0049B435                 mov     eax, [ebp+var_14]
                    0x03, 0x45, 0xF8,                           // .text:0049B438                 add     eax, [ebp+Dst]
                    0x50,                                       // .text:0049B43B                 push    eax             ; Dst
                    0xE8, 0x07, 0x17, 0x1E, 0x00,               // .text:0049B43C                 call    _memset
                    0x83, 0xC4, 0x0C                            // .text:0049B441                 add     esp, 0Ch
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask()
            {
                TaskId          = taskId,
                Description     = typeof(RaceSoundsFix).Name,
                VirtualPosition = 0x0049B40A,
                Instructions    = new byte[]
                {
                    0x90, 0x90, 0x90,                           // .text:0049B40A                 {nop}
                    0x90, 0x90, 0x90,                           // .text:0049B40D                 {nop}
                    0x90,                                       // .text:0049B410                 {nop}
                    0x90, 0x90, 0x90,                           // .text:0049B411                 {nop}
                    0x90, 0x90, 0x90,                           // .text:0049B414                 {nop}
                    0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,   // .text:0049B417                 {nop}
                    0x90, 0x90, 0x90, 0x90,                     // .text:0049B41E                 {nop}
                    0x90, 0x90, 0x90, 0x90, 0x90,               // .text:0049B422                 {nop}
                    0x90, 0x90, 0x90,                           // .text:0049B427                 {nop}
                    0x90, 0x90, 0x90,                           // .text:0049B42A                 {nop}
                    0x90, 0x90,                                 // .text:0049B42D                 {nop}
                    0x90, 0x90, 0x90, 0x90, 0x90,               // .text:0049B42F                 {nop}
                    0x90,                                       // .text:0049B434                 {nop}
                    0x90, 0x90, 0x90,                           // .text:0049B435                 {nop}
                    0x90, 0x90, 0x90,                           // .text:0049B438                 {nop}
                    0x90,                                       // .text:0049B43B                 {nop}
                    0x90, 0x90, 0x90, 0x90, 0x90,               // .text:0049B43C                 {nop}
                    0x90, 0x90, 0x90                            // .text:0049B441                 {nop}
                }
            });
            // End
        }
Esempio n. 9
0
        public GameCdFix()
        {
            var taskId = 0;

            // Task A
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(GameCdFix).Name,
                VirtualPosition = 0x0043989D,
                Instructions    = new byte[]
                {
                    0x0F, 0x85  // jnz
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(GameCdFix).Name,
                VirtualPosition = 0x0043989D,
                Instructions    = new byte[]
                {
                    0x90,       // nop
                    0xE9        // jmp
                }
            });
            // End

            taskId++;

            // Task B
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(GameCdFix).Name,
                VirtualPosition = 0x004398E3,
                Instructions    = new byte[]
                {
                    0x0F, 0x85  // jnz
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(GameCdFix).Name,
                VirtualPosition = 0x004398E3,
                Instructions    = new byte[]
                {
                    0x90,       // nop
                    0xE9        // jmp
                }
            });
            // End

            taskId++;

            // Task C
            UnmodifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(GameCdFix).Name,
                VirtualPosition = 0x0043997A,
                Instructions    = new byte[]
                {
                    0x0F, 0x84  // jz
                }
            });

            ModifiedInstructions.Add(new DataPatcherUnitTask
            {
                TaskId          = taskId,
                Description     = typeof(GameCdFix).Name,
                VirtualPosition = 0x0043997A,
                Instructions    = new byte[]
                {
                    0x90,       // nop
                    0xE9        // jmp
                }
            });
            // End
        }