-
Постов
1 635 -
Зарегистрирован
-
Посещение
-
Победитель дней
55
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент keng
-
Staple intersection нужно делать очень аккуратно и правильно, иначе работать оно будет крайне нестабильно. Самый надежный вариант - это отреверсить код и делать статические инъекции (без сигнатур и без динамического выделения памяти под инъекцию) для каждой версии игры. Лучше всего, конечно, для официальной. Большинство людей ныне на это забивают, вот и выпускают некачественные релизы.
-
Привет! Примерно так: [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)
-
Игра может хранить свои переменные (например, очки) двумя способами. Первый - статический, то есть адреса у одних и тех же переменных всегда будут одни и те же. Один раз нашел - и все. Второй - динамический, благодаря штуке под названием DMA (Dynamic Memory Allocation, динамическое выделение памяти). В этом случае при каждом запуске игры все игровые переменные "создаются" на лету и адреса у них меняются каждый раз. От этой напасти есть панацея - указатели, или же изменение кода. Описание и того и другого есть у нас на форуме + есть видео.
-
В табличке указатели были или же просто найденные адреса?
-
Создание сигнатур для чайников и ковшиков. Автор: Михаил "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, вытатуированными на спине:
-
Сорян, не видел толком подобных сообщений. Не то, чтобы это сильно мешает, но банально раздражает. JS я знаю довольно фигово, но может придумаю что-нибудь, как время будет.
-
Вот в [этом] моем посте есть спойлер, под ним - картинка большого размера. Умеет ли движок форума автоматически ужимать картинки под ширину разметки? Не очень круто выглядит, когда страница вот так "расползается".
-
Только что попытался открыть CE x64 при помощи последней сборки OllyDbg 2.01, получил в ответ ERR_NOT_SUPPORTED. При этом вижу на сайте раздел по Olly x64, которая до сих пор в разработке. Я чего-то не понимаю? UPD: Специально скачал 2.01 alpha 4, попытался открыть х64-бинарник, в ответ отладчик дважды предупредил, уверен ли я, а потом отказался бинарник открывать. Я точно чего-то не понимаю.
-
2.01 поддерживает только х86, x64 до сих пор в разработке.
-
Привет! Событие [WM_SIZE], wParam == SIZE_MINIMIZED. Вот то, что тебе нужно искать. Хукай оконную процедуру и вперед.
- 2 ответа
-
- 1
-
-
Привет! Вполне возможно. Берешь свободный регистр и идешь читать справку об инструкции 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 тоже советую почитать.
-
А я когда-то просто много сидел в чатах и на форумах, вот и научился. Пробовал несколько подобных программ - не затянуло, могу разве что посоветовать [клавогонки].
-
Руслан, что планируешь делать с файловым разделом на главной? Лично я вижу это как плиточную страничку с иконками\картинками игры, названием игры, количеством опций и автором\датой создания. И поиском, да. А по клику - отдельная страничка, где можно почитать NFO и скачать. Кто может нарисовать то, что я описал - предлагаю попытаться.
-
Ну, в таких ситуациях все совсем просто. Тип значения - "все", ищешь Уменьшилось\Не уменьшилось. Не сработало? Увеличилось\Не увеличилось. Опять промах? Изменилось\Не изменилось. Если все еще нет, то повторяешь все, сняв в главном окне СЕ галочку "Fast Scan". Последний уровень - выставить в промежуточное положение галочку "Writable" в том же главном окне СЕ.
-
А, ну, тогда это делается тупо инъекцией в нужном месте. Можно поискать функцию, а потом трейсить вверх, пока не найдется проверка на нажатие кнопки, а можно поискать функцию, отвечающую за кнопки вообще, и смотреть как она работает. Там наверняка будет двусвязный список вида "кнопка:действие" с кодами кнопок и указателями на функции, ну и большой какой-нибудь switch, который этим делом управляет. Не совсем понимаю, зачем тут нужно рисование.
-
[Добавлю] пару книжек от себя, по которым учился сам. А тему закрою.