Перейти к содержанию

keng

Ветераны
  • Постов

    1 635
  • Зарегистрирован

  • Посещение

  • Победитель дней

    55

Весь контент keng

  1. Допустим, у тебя есть 4-байтный буфер, куда ты читаешь значение того или ного адреса: var buf = new byte[] { 0, 0, 0, 0 }; Ты делаешь ReadProcessMemory, скармливая ему этот буфер: ReadProcessMemory(address, size, out buf); После этого в массиве buf у тебя лежат прочитанные данные: buf = { 0xAA, 0xBB, 0xCC, 0xDD }; Допустим, если это float: var floatResult = BitConverter.ToSingle(buf, 0); (0 - индекс элемента массива, с которого надо начинать конвертацию) Не знаю, как именно у тебя устроена функция чтения из памяти, но в этом случае удобно будет возвращать этот самый buf, чтобы затем его конвертировать в нужный тип данных. Обратный процесс, если я правильно помню: BitConverter.GetBytes(floatResult.ToString()); В общем, пробуй и смотри результат через отладчик - там всё наглядно. PS: Если ты хочешь записать float-значение в память, его нужно этим же конвертером переделать в цепочку байт, которую уже в память и писать.
  2. Ну как бы, я этого и не понимаю - если есть горячие клавиши + красивое экранное меню (во многих трейнерах), в которое можно удобно тыкать мышкой. Кому-то, конечно, удобнее вводить команды, но их для начала надо запомнить - а это не всем, увы, под силу. С другой стороны, для мода, где куча-куча всяких опций помимо геймхакинга собственно, это было бы очень удобно.
  3. Пишем в трейнере функцию, рисующую поверх окна игры маленькое окошко с полем ввода, вводим туда ту или иную команду - в зависимости от команды, включаем ту или иную опцию в трейнере. Вопрос - нафига, если я правильно описал результат.
  4. Я работал плотно, времени свободного не было. Блин, по поводу эмуляторных игр не могу подсказать - не шарю в них.
  5. №38, привет! Фишка тут в том, когда именно скрипт выполняет функцию dealloc. Вкратце, как это работает: 1. alloc(size) - выделяет в адресном пространстве процесса игры кусок памяти размером size байт, возвращает адрес первого байта (начала куска). Дальше ты пишешь туда код скрипта, всякие mov, dec, inc, fld, nop и прочие команды. Это всё находится в секции enable редактора скриптов. Когда же ты скрипт отключаешь - вызывается секция disable, которая должна привести игровой код к оригиналу (вместо jmp script_address сделать original code, а память, выделенную под скрипт через alloc - очистить). Очищать память - это вообще круто, потому что она не резиновая. Проблема тут в том, что если игра попытается обратиться к памяти, которой нету (её уже очистили) - игра умрёт. Т.е. всегда нужно сначала восстанавливать оригинальную инструкцию и только после этого очищать память под скрипт, выделенную через alloc, т.е. вызывать dealloc. Проверь код скрипта, возможно проблема в этом.
  6. Угадывать можно, но это не очень эффективно. Например, если есть полоска здоровья - смотрим на наносимый урон и прикидываем максимальное значение полоски. Скажем, наносит по 10 урона за удар, отнимает примерно треть полоски - значит, ищем в диапазоне от 0 до 30-40. Куда эффективнее сразу искать уменьшилось\увеличилось. Если что-то не понятно по моим урокам - пожалуйста, укажи урок и конкретные вопросы - постараюсь объяснить подробнее.
  7. Чем можно помочь с учебником?
  8. №88, пробуй искать все значения, затем, если не нашлось - ищи неизвестное, затем (если всё ещё не нашлось) - тип все, изменилось \ не изменилось. Не надо бежать на форум за помощью, если ты попытался найти адрес только одним способом и способ не сработал.
  9. Привет! Во-первых, укажи тип значения - целое 1\2\4 байта, float\double и так далее. Ибо ты можешь в трейнере писать в память неправильное значение. Во-вторых, как у тебя в трейнере работает заморозка? Одно дело - разок записать в память цифру - игра всё равно сможет нанести персонажу урон и здоровье отнимется. Другое дело - писать в память по таймеру (есть ли он в твоём трейнере?). Третье дело - сделать по-хорошему - найти инструкцию, отнимающую здоровье и отключить её через отладчик, а в трейнере после этого изменять код игры, отключая функцию нанесения урона. Заодно покажи код трейнера, кстати.
  10. Ищешь значения, которые выпадают (как угодно), затем долго-долго отлаживаешь и находишь функцию генерации этого числа. Меняешь, как тебе нужно.
  11. №33, не поверишь, школьным курсом тригонометрии.
  12. А объяснить, что делает инструкция? (:
  13. А я как был нубом, так и остаюсь, чего мне эти плюсики. О_О
  14. 1. Если есть чит на открытие тумана - вкл\выкл изменилось\ не изменилось. 2. Более геморно - находишь юнит, который от тебя скрыт - открываешь - изменилось, закрываешь - изменилось. И т.д. У меня видеоурок есть как раз на этот вариант. Чтобы добраться отсюда до самого массива - придётся потрейсить код. 3. В olly есть клёвая фича, позволяющая снимать дампы памяти и сравнивать их между собой. Т.е. снял дамп д1, открыл карту, снял дамп д2, сравнил их. Сравниваешь до тех пор, пока не останется N адресов, это и будет массив. Не помню точно этот метод, но суть примерно такая и есть.
  15. В том-то вся и штука, что это одно и то же. Почитай про формат РЕ-файлов - там есть секции, код и данные по сути хранятся в этих секциях, так что одними и теми же функциями можно менять и то и другое.
  16. В видео как раз это наглядно показано. 0_о Т.е. например у тебя есть вот такой код: 0x004321 | AA BB CC DD | MOV EAX,EBX Хочется получить вот такой результат: 0x004321 | 90 90 90 90 | NOP NOP NOP NOP Что для этого нужно сделать? Псевдокод: addr = 0x004321; valueOn = {0x90, 0x90, 0x90, 0x90}; valueOff = {0xAA, 0xBB, 0xCC, 0xDD}; handle = OpenProcess(P_A_A, 0, pID); WriteProcessMemory(handle, addr, valueOn, 4, 0); CloseHandle(handle);
  17. В большинстве игр игровая карта - это сетка, т.е. массив. Представить можно примерно вот так: 0 0 0 0 0 0 0 0 0 0 0 0 Допустим, что мы взяли и открыли всю карту. Стало вот так: 1 1 1 1 1 1 1 1 1 1 1 1 Т.е. искать надо этот самый массив. Ещё один вариант я у себя в блоге выкладывал - там у юнита есть флажок, указывающий его видимость для того или иного игрока.
  18. [Держи], посмотри первый урок, если что-то не поймёшь - задавай вопросы.
  19. Если box esp - это вот так: То надо ещё научиться рисовать в окошке игры, одними координатами не обойдёшься. А что за игра, кстати? Не на картинке, а которую ломаешь.
  20. И чем плохо? Сканеров памяти полно и помимо СЕ, зато это единственная программа (на моём пк, как минимум), которая про сегодняшний день знает.
  21. Да ладно, по-моему - отличная!
  22. С первым апреля!
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.