-
Постов
4 023 -
Зарегистрирован
-
Победитель дней
42
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент Xipho
-
Нет. Если в оригинале три байта, значит, тебе надо брать две инструкции, так как прыжок займет пять байт. Логика такая. Прыжок всегда занимает 5 байт. Из длины инструкции вычитаешь 5 байт и получаешь количество нопов (не нУпов), которые нужно проставить Допустим, инструкция 8 байт, от 8 отнимаешь 5 - получаешь 3 нопа. Если инструкция 10 байт - отнимаешь 5, получаешь 5 нопов. Если инструкция меньше 5 байт, нужно взять две инструкции (одну ту, что нужно, вторую - следующую), или три инструкции. В общем, столько инструкций, сколько их составит не меньше пяти байт. То есть, если идут две инструкции по 3 байта, то их берешь две, и один ноп: (3 + 3) - 5 = 1 Может быть и такой случай, когда понадобится три инструкции. Например (3 + 1 + 1) - 5 = 0 (одна трехбайтная и две однобайтные инструкции, например) В общем, суть, думаю, ты понял.
-
Именно такие трейнеры, как этот - одобряю.
-
В стандартном АА-скрипте тоже можно применять aobscan.
-
Прыжок на кодкейв (инжект) всегда составляет 5 байт (в общих случаях, частности не рассматриваю сейчас). Обычно СЕ автоматически высчитывает длину инструкции и количество нопов для балансировки. Но если делаешь вручную - сначала подсчитай байты инструкции, которую ты будешь затирать прыжком на кодкейв (инжект).
-
Ты, очевидно, что-то не так понимаешь. AOBScan - это функция поиска инструкции по сигнатуре (соседним уникальным байтам). Почитай темы на форуме, вникни.
-
Для балансировки длины инструкции. Была инструкция, допустим, 7 байтов длиной, а ты прыжком ее забил. Стала инструкция 5 байт длиной, и образовались два лишних байта. А процессор выполняет инструкции последовательно. И тут ему два каких-то непонятных байта суют. Вот и вылет. А если вместо эти двух лишних байт поставить nop (No operation), процессор их выполнит ничего не делая (но оперейшн - нет операции) и дальше пошпарит по порядку как надо.
-
Сделай на AOBScan, больше людей смогут воспользоваться. Проверил на другой таблетке - не работает )
-
Обновил версию, вычистил несколько некритичных багов. Перекачайте, кто качал.
-
Написал на досуге плеер для данной радиостанции под винду. Если интересно - тестируйте. Прикрепил к первому посту.
-
1. Неинформативное название темы. 2. Не указано название игры. 3. Просто не давай обновляться координатам.
-
Тогда механизм такой 1. Находишь окно игры (FindWindow) 2. Получаешь контекст устройства этого окна (GetDC) 3. Создаешь шрифт (CreateFont) 4. Выбираешь его в контекст устройства, найденный выше (SelectObject) 5. Создаешь надпись и выводишь ее на выбранный контекст (DrawText или TextOut) 6. Уничтожаешь созданный шрифт (DeleteObject) 7. Освобождаешь контекст (ReleaseDC) Вот такой алгоритм, если вкратце. Читай про указанные функции, и применяй на практике.
-
Онлайн игра, говоришь? А какого рода информацию ты хочешь выводить? Если что-то, что поможет обмануть других игроков - топай читать правила нашего форума. А по выводу на чужую поверхность с мерцанием и без хуков - читай функции GetDC, SelectObject и другие функции GDI.
-
Не непосредственно в видеокарту. Мерцание возникает из-за того, что оригинальная частота обновления кадров приложения не синхронизирована с частотой обновления накладываемой картинки. Это бывает, когда для наложение используется GDI прием с получением контекста окна и выводом графических команд на него. GDI обновляет окно по-своему, DirectX - по-своему. Отсюда нестыковка и мерцание. Именно поэтому и стали использовать хуки, то есть, перехват функции вывода DirectX, и внедрение своего кода перед непосредственно самим выводом. Это даже не является перехватом, по сути. Это просто наложение одной графической информации поверх другой.
-
Так он драйвер так не загружает. Загружается драйвер при отладке. А у тебя подпись по-прежнему включена, отсюда и вылеты.
-
Да это не особо важно, они действительно связаны между собой. Факт в том, что ты видел на видео, как я сделал, и что оно работает. Дальше дело за тобой.
-
А как ты видел, что у тебя DBVM запустилась?
-
Так не нужно их совмещать. Что мешает сделать вот прямо вот так: http://www.youtube.com/watch?v=7C0KdKk1g64
-
Кликаешь в проекте на Form1.Designer.cs (не знаю, как он у тебя в русской версии называется, но похоже должен быть) Находишь функцию private void InitializeComponent() Убеждаешься, что в этой функции есть такой код: this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown);В моем случае регистрируется функция private void Form1_MouseDown(object sender, MouseEventArgs e) { this.Capture = false; var msg = Message.Create(this.Handle, 0xa1, new IntPtr(2), IntPtr.Zero); this.WndProc(ref msg); }И обрати внимание. Событие вешается на саму форму, а не на picturebox. Так что будь внимателен, и все у тебя получится. Надеюсь, поймешь, куда нужно вписать свои значения, а не будешь заниматься копипастой. И да, если ты не видишь фукнцию private void InitializeComponent() - у тебя она в коде скрыта, надо нажать плюсик в той же строке, где написано Windows Forms Designer Generated Code (у тебя может быть опять же по-русски написано).
-
Разумеется, нужно выбирать что-то одно. Но ты, судя по всему, не выбрал вообще ничего.
-
Вот у тебя там даже написано над твоей функцией - ссылок: 0. Потому что ты саму функцию скопипастил, а не зарегистрировал в качестве события. Читай внимательно, как это делается, выше в моем посте, и делай.