HemersonKl Ответов: 0

В C# - об ком лицо


public void ReadAOB(string Scancode)
        {
            if ((int)processhandle > 0)
            {
                IntPtr bytesRead = IntPtr.Zero;
                long MaxAddress = 0;
                if(isbit64)
                     MaxAddress = 0x7fffffffffffffff;
                else
                    MaxAddress = 0x7fffffff;
                long address = 0;
                addresses.Clear();
                do
                {
                    MEMORY_BASIC_INFORMATION m;
                    int result = VirtualQueryEx(processhandle, (IntPtr)address, out m, (uint)Marshal.SizeOf(typeof(MEMORY_BASIC_INFORMATION)));

                    if (m.Protect == AllocationProtectEnum.PAGE_READWRITE)
                    {
                        byte[] buffer = new byte[(int)m.RegionSize];
                        // IntPtr buffer = IntPtr.Zero;
                        ReadProcessMemory(processhandle, m.BaseAddress, buffer, (int)m.RegionSize, out bytesRead);
                        BoyerAlgo(m.BaseAddress, buffer, Scancode, ref addresses);
                    }
                    if (address == (long)m.BaseAddress + (long)m.RegionSize)
                        break;
                    address = (long)m.BaseAddress + (long)m.RegionSize;
                } while (address <= MaxAddress);
            }
        }



private void TROCAR_Click(object sender, EventArgs e)
       {
           string C1 = code1hex.Text;
           string C2 = code2hex.Text;

              Aobscan.ReadAOB(C1);
           if (Aobscan.WriteAOB(C2))
           {
               MessageBox.Show(" Injected");
               TROCAR.Text = "ON";

           }
           else
           {
               MessageBox.Show(" Failed To Inject");
               TROCAR.Text = "OFF";
           }

       }


Что я уже пробовал:

Здравствуйте, друзья. Мне нужна твоя помощь. Я всего лишь ученик в C #.
  Я использую эту функцию для сканирования памяти процесса.
Но мне нужна строка, которую я собираюсь использовать, чтобы быть внутри текстового ящика. Только при использовании текстового поля. Об ошибке. Кто-нибудь знает почему? Это потому, что функция пуста?

ошибка есть
Индекс был вне диапазона. Он должен быть неотрицательным и меньше размера коллекции.

на части
if (memoryBrick.Length <= offSet + pattern.Length
                               || (byte)Convert.ToInt32(aob[bytesPos[i]], 16)
                               != memoryBrick[(offSet - bytesPos[0]) + bytesPos[i]]) break;


но если я использую
private void TROCAR_Click(object sender, EventArgs e)
       {
           string C1 = code1hex.Text;
           string C2 = code2hex.Text;

              Aobscan.ReadAOB("00 00 22 00 ??");
           if (Aobscan.WriteAOB(C2))
           {
               MessageBox.Show(" Injected");
               TROCAR.Text = "ON";

           }
           else
           {
               MessageBox.Show("Failed To Inject");
               TROCAR.Text = "OFF";
           }

       }



Так что это работает,но мне нужно получить строковый массив из текстового поля. Потому что она всегда будет меняться

RickZeeland

Попробуйте поместить точку останова в строку string C1 = code1hex.Text; и запустить в режиме отладки, а затем посмотреть, что это за значение, наведя на него курсор мыши.

HemersonKl

Я Манде критической точки и строки С1 = code1hex.Текст; показать строку в hex нормально.

[no name]

"потому что функция пуста", нет, это потому, что вы пытаетесь получить доступ к элементу массива, который не существует.

HemersonKl

Я не знаю, почему это происходит, часть writeaob прекрасно работает с texbox.

RickZeeland

"Потому что она всегда будет меняться", вот и все, это "она" ;)

HemersonKl

Не так ли? Он всегда будет меняться, потому что я буду редактировать эту строку в текстовом поле и преобразовывать ее в шестнадцатеричную. И результат будет использовать вместо aobscan. Я просто не могу использовать textbox1. text из-за ошибки.

0 Ответов