В 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 из-за ошибки.