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

keng

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

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

  • Посещение

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

    55

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

  1. Staple intersection нужно делать очень аккуратно и правильно, иначе работать оно будет крайне нестабильно. Самый надежный вариант - это отреверсить код и делать статические инъекции (без сигнатур и без динамического выделения памяти под инъекцию) для каждой версии игры. Лучше всего, конечно, для официальной. Большинство людей ныне на это забивают, вот и выпускают некачественные релизы.
  2. Привет! Примерно так: [ENABLE]alloc(newmem,2048) newmem:CMP [0064840F],5 // Берем адрес, где храним текущее значение счетчикаJE @F // Если там уже максимальное значение, то выходимINC [0064840F] // Увеличиваем счетчик// Делаем тут что-то полезноеFLDZ // Игровая инструкцияRET // Выход@@:MOV [0064840F],1 // Если счетчик достиг максимального значения - сбрасываем его на 1FLDZ // Игровая инструкцияRET // Выход "Tutorial-i386.exe"+27DA6:CALL newmem [DISABLE]"Tutorial-i386.exe"+27DA6:MOV [EBX+04],EAXFLDZdealloc(newmem)
  3. Игра может хранить свои переменные (например, очки) двумя способами. Первый - статический, то есть адреса у одних и тех же переменных всегда будут одни и те же. Один раз нашел - и все. Второй - динамический, благодаря штуке под названием DMA (Dynamic Memory Allocation, динамическое выделение памяти). В этом случае при каждом запуске игры все игровые переменные "создаются" на лету и адреса у них меняются каждый раз. От этой напасти есть панацея - указатели, или же изменение кода. Описание и того и другого есть у нас на форуме + есть видео.
  4. В табличке указатели были или же просто найденные адреса?
  5. Создание сигнатур для чайников и ковшиков. Автор: Михаил "keng" Ремизов Дата: 26.07.15 Понадобится: -Cheat Engine (http://www.cheatengine.org) -Бумажка и ручка (из любого канцелярского магазина) -Пальцы (чтобы держать ручку и нажимать кнопки клавиатуры) Привет, поЧИТыватель! Ты - невероятно крутой геймхакер, выпускающий эксклюзивные релизы каждые 45 минут даже на те тайтлы, бюджет на которые еще не выделен. Тебя все обожают, у тебя есть деньги, власть и маленький плагин для горячо любимого тобой отладчика Olly под названием Signature Maker, который позволяет создавать так называемые сигнатуры - последовательности байт, однозначно идентифицирующие участок дизассемблированного исходного кода. Но случается так, что тебя зовут на чемпионат галактики по взлому игр и программированию трейнеров (с вами кенг!) на не самую далекую планету Kepler 452b. Билеты тебе оплачивает Роскосмос в одну сторону, NASA - в другую, и ты отправляешься, по дороге взломав предельную скорость и ускорение двигателей твоего пепелаца. На месте РЕЗКО выясняется, что компьютер со всем твоим софтом развалился на атомы во время пути, но выход есть - на планете еще задолго до зарождения разумных цивилизаций обосновался Dark Byte, который с глуповатой, странной улыбкой предоставляет тебе последнюю версию своего флагманского продукта - Cheat Engine! Проблема в том, что чудо-плагина, которым ты так привык пользоваться, нет. Что же делать? 8B FF - mov edi,edi 55 - push ebp 8B EC - mov ebp,esp F6 45 08 02 - test byte ptr [ebp+08],02 57 - push edi 8B F9 - mov edi,ecx 74 25 - je dontstarve_steam.exe+2180C5 56 - push esi 68 008EDD00 - push dontstarve_steam.exe+218E00 Проще простого! Ты не ударяешь в грязь лицом, и, найдя нужный участок кода, делаешь следующее: Выделаешь несколько строк кода и копируешь их, выбрав опцию Copy to clipboard - Bytes only (no address), или нажав Ctrl+Alt+C. Получаешь, допустим, вот такую строчку: 8B FF 55 8B EC F6 45 08 02 57 8B F9 74 25 56 68 00 8E DD 00 Делаешь в Cheat Engine новый поиск, ставишь тип Array of byte. Сколько адресов нашлось? Один? Отлично! Не один? Копируешь из отладчика на одну команду больше. Получив один-единственный результат, ты, с раскалывающейся после сверхскоростного перелета головой, начинаешь вспоминать обрывки теории. Команда находится по адресу, записывается в виде мнемоники (mov, push, call, je), состоит из опкода и операндов. Другой опкод - другая команда, но в твоем случае важно то, что при смещении адресации операнды в одних и тех же командах могут смениться. Такими операндами могут быть (в твоем случае) test, je и последний push. Сверяемся со справочными материалами по командам x86, вытатуированными на спине:
  6. Сорян, не видел толком подобных сообщений. Не то, чтобы это сильно мешает, но банально раздражает. JS я знаю довольно фигово, но может придумаю что-нибудь, как время будет.
  7. Вот в [этом] моем посте есть спойлер, под ним - картинка большого размера. Умеет ли движок форума автоматически ужимать картинки под ширину разметки? Не очень круто выглядит, когда страница вот так "расползается".
  8. Только что попытался открыть CE x64 при помощи последней сборки OllyDbg 2.01, получил в ответ ERR_NOT_SUPPORTED. При этом вижу на сайте раздел по Olly x64, которая до сих пор в разработке. Я чего-то не понимаю? UPD: Специально скачал 2.01 alpha 4, попытался открыть х64-бинарник, в ответ отладчик дважды предупредил, уверен ли я, а потом отказался бинарник открывать. Я точно чего-то не понимаю.
  9. 2.01 поддерживает только х86, x64 до сих пор в разработке.
  10. Привет! Событие [WM_SIZE], wParam == SIZE_MINIMIZED. Вот то, что тебе нужно искать. Хукай оконную процедуру и вперед.
  11. А искал как? Неизвестное значение и изменилось\не изменилось?
  12. Игра запросто может вылететь. Что делать в этом случае? Начинать поиск с начала. А большие картинки убирать под спойлер.
  13. Привет! Вполне возможно. Берешь свободный регистр и идешь читать справку об инструкции lea. Алгоритм будет примерно такой (допустим, мы инжектимся в инструкцию, отнимающую патроны): 0. Сохраняем регистр на стеке 1. Загружаем в него нашу структуру+0х18 - указатель на "подструктуру" 2. Загружаем в него же его значение + 0х28 - максимальное значение патронов 3. Сравниваем его с текущим значением 4. Если равно, то 5. Возвращаем регистр из стека на место 6. Выходим 7. Иначе делаем с патронами то, что нам нужно (например, увеличиваем) 8. Возвращаем регистр из стека на место 9. Выходим. push lea mov cmp je pop ret add pop ret Примерно так. UPD: А, я плохо прочитал. Да, лучше использовать тупо mov, но про lea тоже советую почитать.
  14. Когда остается меньше 1000 адресов и отсеивание дальше не идет, можно воспользоваться проверенным способом - замораживать адреса по одному и проверять результат. Рабочий адрес всегда один, без исключений.
  15. Нет, серьезно? А я во втором и шестом посте что написал? Про гранату - могу повторить. Пробуй тип "все".
  16. А я когда-то просто много сидел в чатах и на форумах, вот и научился. Пробовал несколько подобных программ - не затянуло, могу разве что посоветовать [клавогонки].
  17. Руслан, что планируешь делать с файловым разделом на главной? Лично я вижу это как плиточную страничку с иконками\картинками игры, названием игры, количеством опций и автором\датой создания. И поиском, да. А по клику - отдельная страничка, где можно почитать NFO и скачать. Кто может нарисовать то, что я описал - предлагаю попытаться.
  18. Ну, в таких ситуациях все совсем просто. Тип значения - "все", ищешь Уменьшилось\Не уменьшилось. Не сработало? Увеличилось\Не увеличилось. Опять промах? Изменилось\Не изменилось. Если все еще нет, то повторяешь все, сняв в главном окне СЕ галочку "Fast Scan". Последний уровень - выставить в промежуточное положение галочку "Writable" в том же главном окне СЕ.
  19. Попробуй искать тип "все". Сначала пробуешь все возможное, потом уже спрашиваешь.
  20. Поиск неизвестного значения, которое или увеличивается или уменьшается. Затем: - Заморозить значение - Найти инструкцию, изменяющую значение, занопить ее - Найти инструкцию, изменяющую значение, оттрейсить код вверх и запретить передачу управления вообще на эту ветку кода
  21. А, ну, тогда это делается тупо инъекцией в нужном месте. Можно поискать функцию, а потом трейсить вверх, пока не найдется проверка на нажатие кнопки, а можно поискать функцию, отвечающую за кнопки вообще, и смотреть как она работает. Там наверняка будет двусвязный список вида "кнопка:действие" с кодами кнопок и указателями на функции, ну и большой какой-нибудь switch, который этим делом управляет. Не совсем понимаю, зачем тут нужно рисование.
  22. [Добавлю] пару книжек от себя, по которым учился сам. А тему закрою.
  23. В количестве скобок, я уверен.
×
×
  • Создать...

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

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