-
Постов
6 -
Зарегистрирован
-
Посещение
Репутация
0 Навыки не прокачены-
Не записываются байты в память (C#)
Excelike опубликовал тема в Создание трейнеров в специальных студиях
Здравствуйте. Возникла проблема. Хочу сделать что то вроде само-обновляемого трейнера. Но почему то после поиска сигнатур (При включении/выключении чекбокса) функция включается, а вот назад никак не хочет выключаться. Приведу код: Для переключения функций используется статическая булева переменная: static bool func1 = false; Код поиска сигнатуры, и записи в в память: private void checkBox1_CheckedChanged(object sender, EventArgs e) { SigScan _sigScan = new SigScan(seap, new IntPtr(0x401000), 0x10bc000); byte[] buffer2 = new byte[] { 0x75, 0x05, 0xC6, 0x44, 0x24, 0x0B, 0x01, 0x85, 0xC0, 0x0F, 0x94, 0xC1, 0x83, 0xF8, 0x01, 0x0F, 0x94, 0x44, 0x24, 0x0C, 0x83, 0xF8, 0x02, 0x0F, 0x94, 0x44, 0x24, 0x0D, 0x80, 0xBE, 0xE9, 0x0C, 0x00, 0x00, 0x00, 0x53, 0x74, 0x13, 0xD9, 0xEE }; IntPtr num = _sigScan.FindPattern(buffer2, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 0); if (func1 == false)//если переменная [BYTE] равна 0(true - 1, false - 0) { byte[] buffer = new byte[] { 0x90, 0x90 };//байт, который записывается,если переменная [BYTE] равна 0, то есть выключена функция. memory.WriteByteArray((IntPtr)num, buffer);//записываем в адрес байты. checkBox1.Checked = true; func1 = true; } else//Иначе { byte[] buffer = new byte[] { 0x75, 0x05 };//байт, который записывается, если переменная [BYTE] равна 1, то есть включена функция. memory.WriteByteArray((IntPtr)num, buffer);//записываем в адрес байты. checkBox1.Checked = false; func1 = false; } Всё никак не могу разобраться, в чём проблема то? -
Вообщем ребят, теперь возникла другая проблема (Предыдущую решил на C++). Я пишу трейнер для игры (Тапками не кидать), но т.к все адреса там динамические, то мне нужно реализовать сканер сигнатур. Объясню поподробнее, что мне именно нужно сделать. 1.После запуска программы, выполнить поиск определённой сигнатуры в процессе "game.exe" (К примеру). 2.Если сигнатура найдена, то узнать адрес и записать его (Адрес) в переменную "int num1", т.е: без сканера сигнатур, данные переменные используются для указания адрес(а/ов), например: int num = 0x123456. Но мне же нужно записывать полученный адрес динамично, программно (После поиска сигнатуры, и получения самого адреса). Если же нужная сигнатура не найдена, соответственно и не получен адрес, то появляется MessageBox с текстом "Сигнатуры не найдены!". Приведу код включения/выключения функции (в трейнере), выполняются они в checkbox-ах: private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (func1 == false)//если переменная [BYTE] равна 0(true - 1, false - 0) { int num1 = 0x123456;//адрес. byte[] buffer = new byte[] { 0x90, 0x90 };//байт, который записывается,если переменная [BYTE] равна 0, то есть выключена функция. memory.WriteByteArray((IntPtr)num1, buffer);//записываем в адрес байты. checkBox1.Checked = true; func1 = true; } else//Иначе { int num1 = 0x123456;//опять же адрес. byte[] buffer = new byte[] { 0x11, 0x11 };//байт, который записывается, если переменная [BYTE] равна 1, то есть включена функция. memory.WriteByteArray((IntPtr)num1, buffer);//записываем в адрес байты. checkBox1.Checked = false; func1 = false; } func = переменная, которая используется для включения/выключения функции. int num = 0x123456 = Переменная, которая используется для хранения адреса. Вот собственно и всё. Выручайте ребят