hearthbuddy commissioning 2

 Here is a very strange wording, after the assignment, you can also do a direct comparison

 int a = 0;
            if ((a = 10) > 9)
            {
                Console.WriteLine(a);
            }

 

internal IntPtr method_33(IntPtr intptr_37, string string_0, params Class276.Enum20[] enum20_0)
        {
            while (intptr_37 != IntPtr.Zero)
            {
                using (AllocatedMemory allocatedMemory = this.externalProcessMemory_0.CreateAllocatedMemory(256))
                {
                    allocatedMemory.AllocateOfChunk<IntPtr>("Itr");
                    IntPtr intPtr;
                    while ((intPtr = this.method_35(intptr_37, allocatedMemory["Itr"])) != IntPtr.Zero)
                    {
                        IntPtr address = this.method_37(intPtr);
                        if (this.externalProcessMemory_0.ReadStringA(address) == string_0)
                        {
                            if (enum20_0 != null)
                            {
                                Class276.Enum20[] array = this.method_31(intPtr);
                                if (array.Length != enum20_0.Length || !array.SequenceEqual(enum20_0))
                                {
                                    continue;
                                }
                            }
                            return intPtr;
                        }
                    }
                    intptr_37 = this.method_25(intptr_37);
                }
            }
            return IntPtr.Zero;
        }

 

There are two while loop

The first cycle is passed intptr_37 not IntPtr.Zero

     Memory allocation based on 256 externalProcessMemory_0

     256 memory inside, allocate a chunk of memory

     intPtr = method_35 (intptr_37, the chunk newly allocated memory)

                  The second inner loop

        [IntPtr = method_35 (intptr_37, the chunk newly allocated memory)] This next cycle time will do it again

        address = method_37(intPtr);

                            Read method name with externalProcessMemory_0.ReadStringA (address)

                           Judging method name matches, if the match, it returns intPtr; otherwise returns to the second cycle

     The end of the second cycle, has not been found to meet the requirements,

                Performs intptr_37 = this.method_25 (intptr_37);

 

Therefore, the second cycle, mainly

1. intPtr = method_35 (intptr_37, the chunk newly allocated memory)

2. address = method_37(intPtr);

3. Read the method name to see if it matches

 

 

 

internal IntPtr method_35(IntPtr intptr_37, IntPtr intptr_38)
        {
            return this.method_17<IntPtr>(this.intptr_19, new object[]
            {
                intptr_37,
                intptr_38
            });
        }

 

internal IntPtr method_37(IntPtr intptr_37)
        {
            return this.method_17<IntPtr>(this.intptr_21, new object[]
            {
                intptr_37
            });
        }

 

 

private T method_17<T>(IntPtr intptr_37, params object[] object_0) where T : struct
        {
            return this.externalProcessMemory_0.CallInjected<T>(intptr_37, CallingConvention.Cdecl, object_0);
        }

 

Guess you like

Origin www.cnblogs.com/chucklu/p/11183453.html