Skocz do zawartości

Pattern scan C#


Vondri
# CSH External VIP Project

Masz dosyć problemów z czynnikiem zaufania w CS2 lub notorycznymi banami?

Sprawdź CSH External VIP Project.


Więcej informacji  

Rekomendowane odpowiedzi

Witam czy ktoś byłby w stanie napisać lub podesłać kod C# (prosty tak do nauki) pattern scanu w c# do gier? Przeszukałem githuby i inne fora ale nic nie znalazłem. Może ktoś napisze też jak to mam napisać krok po kroku? Z góry dziękuje ^^

Pomogłem?

Strzel plusika 😉

Odnośnik do komentarza

to slabo szukasz

 

  public static int FindPattern(IntPtr _handle, string pattern_str, GameModule module, bool sub, int offset = 0, bool read = false, int startAddress = 0)
        {
            var returnvalue = FindPatternEx(_handle, pattern_str, module, sub, offset, read, startAddress);
            GC.Collect();
            return returnvalue;
        }

        public static int FindPatternEx(IntPtr _handle, string pattern_str, GameModule module, bool sub, int offset = 0, bool read = false, int startAddress = 0)
        {
            List<byte> temp = new List<byte>();
            string mask = "";
            foreach (string l in pattern_str.Split(' '))
            {
                if (l == "?" || l == "00")
                {
                    temp.Add(0x00);
                    mask += "?";
                }
                else
                {
                    temp.Add((byte)int.Parse(l, System.Globalization.NumberStyles.HexNumber));
                    mask += "x";
                }
            }
            byte[] pattern = temp.ToArray();

            int moduleSize = module.Size;

            IntPtr moduleBase = module.BaseAddress;

            if (startAddress != 0)
            {
                moduleSize = ((int)moduleBase + moduleSize) - startAddress;
                moduleBase = new IntPtr(startAddress);
            }
            if (moduleSize == 0)
                throw new Exception($"Size of module {module} is INVALID.");

            byte[] moduleBytes = new byte[moduleSize];
            int numBytes;

            if (WinAPI.ReadProcessMemory(_handle, moduleBase, moduleBytes, moduleSize, out numBytes))
            {
                for (int i = 0; i < moduleSize; i++)
                {
                    bool found = true;

                    for (int l = 0; l < mask.Length; l++)
                    {
                        found = mask[l] == '?' || moduleBytes[l + i] == pattern[l];

                        if (!found)
                            break;
                    }

                    if (found)
                    {
                        i += (int)moduleBase;
                        if (read)
                            i = MemoryAPI.ReadFromProcess<int>(_handle, new IntPtr(i + offset));
                        if (sub)
                            i -= (int)moduleBase;
                        return i;
                    }

                }
            }
            return 0;
        }
    }

 

Odnośnik do komentarza

Kurde ;-; Rychło w czas xD Sam zapomniałem

W dniu 20.11.2020 o 18:39, damianosik napisał:

Pytanko takie o co chodzi z tym patternem?

Tak prościej? Takie szukanie konkretnego adresu pomiedzy innymi offsetami?

  • dTPLBNJ.png

To na zółto jest konkretnym adresem wiec normalnie trzebago go zamaskowac czyli to powinno jakos tak wygladac: "0x8B 0x81 ?? ?? ?? ?? 85 C0". Ogólnie chodzi o to w tym ze ta to szukać adresy zmienne (niestatyczne?) 

Pomogłem?

Strzel plusika 😉

Odnośnik do komentarza

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

  Tagi

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Regulamin. Polityka prywatności