Сообщения без ответов | Активные темы Текущее время: 28 мар 2024, 19:34



Ответить на тему  [ 1 сообщение ] 
 Sega дебаггер-альтернатива 
Автор Сообщение
Сообщение 27 июл 2007, 01:00
Профиль
Аватара пользователя

Зарегистрирован:
22 июл 2007, 02:10
Сообщения: 313
Откуда: ниоткуда
Originally posted by Яковлев Виктор at forum.romov.net 14.06.2005 04:38
Все хоте ли бы иметь сеговский эмулятор с возможностью устанавливать бряки на чтение из памяти и запись в память. Но такого эмулятора нет!Пока! Тем не менее я придумал довольно не стандартный метод всетаки добраться до команды чтения и записи в эмуляторе!
Для этого нам понадобится дебаггер OllyDbg, эмулятор Gens+ 0.39(подойдет только он), игра для примера- Sparkster!Для начала поиграйте в игру и найдите адрес текущей жизни в озу эмулятора с помощью например другого эмулятора(например Gens 2.11 mk2) и адрес озу винды но только для эмулятора Gens+ 0.39!У меня получилдось что жизнь храниться в озу эмулятора по адресу FFD2A3, а в озу винды по адресу 6C35E2!
Теперь грузим эмулятор в дебаггере OllyDbg жмем кнопку Run в дебаггере и эмулятор запустится!Загрузите игру в эмуляторе!Дойдите до того места где есть опасность что герой потеряет жизнь!Нажмите остановить эмуляцию ESC-ом!Теперь поставьте в дебаггере бряк на запись в память 6C35E2!Перейдите опять в эмуль и жмите Enter(запускать игру по кадру)!Не забывайте сохраняться после каждого пропущенного кадра!Нужно сохраниться обязательно до того момента, когда после пропуска одного кадра сработает бряк!Ага сохранились!Жмете Enter и срабатывает бряк!Отлично!Жмем опять Run в дебаггере, чтобы эмулятор опять работал после срабатывания бряка!Жмем в эмуле загрузить сохранение!Опять сработает бряк в дебаггере!Не обращаем на него внимания, т.к. грузятся старое значение!Жмем опять Run!
Теперь переходим в дебаггер эмулятора!Жмем кнопку T для выполнения 1 команды игры!После 10 команд сохраняемся!Ага сохранились и после скажем 6-7 каманд(к примеру) сработал бряк в дебаггере!Отлично!Запускаем опять дальше эмуль кнопкой Run дебаггере!И грузим старое сохранение в эмуле, минуем срабатывание бряка кнопкой Run!И выполняем скажем 4 команды в эмуле кнопкой T!И видим в дебаггере следующий код:
41С4 sub.w $0026(A0),D0 //уменьшение жизни на 1
41С8 move.w D0, $0022(A0) //сохранение нового значения жизни в памяти
т.д.
(прим.Непривычно что команды для сега читаются слева - направо, а не стандартно как во всех справо налево)
Таким образом нашли со 100% вероятностью то место где должен был бы сработать бряк на запись в память в эмуле, если он был бы!
Две эти команды соответствуют 9068 0026 3140 0022 по hex-су!Нужно поменяем команду sub.w $0026(A0),D0 на две холостые NOP ее Hex код 4E71!Эти команды находятся потому же адресу в роме!Меняем 9068 0026 на 4E71 4Е71!Сохраняем в роме!Грузим игру в эмуле и вуаля!Жизнь больше не уменьшается!

Два часа используя этот метод для взлома игр Сега, я столкнулся с гемороем!Сохраняться после 10 команд это не дело!А если должно выполниться 1000 каманд до того момента когда сработает бряк!Я подумал, а что если просто зажать Т и ждать когда сработает бряк!Но я боялся, что есть задержки между записью в озу эмуля и в озу винды, но я ошибся!Задержек нет и бряк сработает как раз в тот момент когда дебаггер эмуля перейдет к следующей команде после команды записи в память!Т.е. для игры Sparkster дебаггер встанет на команде move.w D0, $0022(A0), т.е. следующей после команды sub.w $0026(A0),D0.
Таким образом, перейдя в дебаггер эмуля просто зажмите Т и ждите срабатывания бряка!И вы очутитесь как раз в том месте плюс 1 команда где осуществляется
запись в память озу эмуля!

Примечание:
1)В эмулу лучше сохраняться опцией "сохраниться как"!Просто сохраниться у меня не получается!Возможно это только у меня!
2)Вместо дебаггера OllyDbg подойдет дебаггер SoftIce, но его устанавливать сложнее!
Кто не нашел ссылки на OllyDbg то вот: http://clabz.com/new/ollydbg110xp.rar
3)Для того чтобы поставить бряк на запись в озу в OllyDbg, нужно курсор мыши подвести в левое нижнее окно и в ячейке 6C35E2 щелкнуть правой кнопкой мыши и выбрать Breakpoint -> Memory, on write!
4)Не которые захотят убыстрить процесс, зайдя в дебаггер сега после срабатывания бряка в дебаггере!Не получится!Потому что после запуска эмуля после срабатывания бряка эмуль обработает до конца 1кадр!Поэтому вы проскочите тот момент когда жизнь меняет свое значение на другое(проскочите команду записи в память озу)!
5)!!!!!!!!Самое главное забыл!!!!!!!!!!:нужно эмулятор распаковать, т.к. он запакован EXE-паковщиком ASPACK 2.12!Для распаковки используйте программу Aspackdia 1.4!После распаковки эмуль вырастит в размере до 20 Мб!Без распаковки дебаггер не даст ставить бряки!

_________________
Мысль - это интеллектуальный эксцесс данного индивидуума.


Показать сообщения за:  Поле сортировки  
Ответить на тему   [ 1 сообщение ] 

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF (mod by Zeru-j).
Русская поддержка phpBB