Создание сигнатур для чайников и ковшиков. Автор: Михаил "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, вытатуированными на спине: