Примеры работы с программой Happy Finder |
Guyver | |
08.01.2015 . | |
Примеры работы с программой Happy Finder (автор: Guyver) Оглавление. 1. Введение. 2. Пример с игрой Operation Europe - Path to Victory 1939-1945 (U) [!].gen. 3. Пример с игрой Front Mission (J) (V1.0) [T+Eng1.0b_FH].smc. 4. Поиск непоследовательных значений.
5. Вместо заключения. Введение. Программа Happy Finder предназначена для простого поиска данных в файле и нахождения адреса найденных данных с возможностью cдвига реального адреса на заданный интервал. Найденные адреса, к примеру, можно подключить в Kruptar в качестве поинтеров. В этом документе на примерах будет рассмотрена работа самой программы, и даны некоторые пояснения для работы с программой Kruptar. Пример с игрой Operation Europe - Path to Victory 1939-1945 (U) [!].gen Игра: Operation Europe - Path to Victory 1939-1945 (U) [!].gen Задача: найти и подключить пойнтеры в программе Kruptar. В этой игре используются абсолютные четырёхбайтные пойнтеры. Для примера рассмотрим текст из игры: адрес фразы: 00047830: Soviet advance on адрес фразы: 00047842: drive east and stop the адрес фразы: 0004785A: Hitler then planned to адрес фразы: 00047872: Antwerp in Belgium. Так вот, пойнтеры в самом роме имеют вид, абсолютно идентичный адресу фразы, т.е. Пойнтер на 1 фразу будет: 00047830 Пойнтер на 2 фразу будет: 00047842 Пойнтер на 3 фразу будет: 0004785A Пойнтер на 4 фразу будет: 00047872 Сами адреса на фразы очень легко получить в виде списка в программе Kruptar, используя нулевые пойнтеры. Просто ставим размер пойнтеров PtPointerSize: «0», сдвиг PtReference: «0» и вынимаем адреса текста командой «Add Pointers», где указываем адрес первой и последней фраз вместо адресов пойнтеров. Таким образом можно получить адреса всего текста в совершенно любой игре. А потом сохранить их в текстовой файл командой «Save To File». ![]() Мы получили адреса фраз. Теперь найдём сами пойнтеры с помощью программы Happy Finder. Открываем программу, задаём начальный адрес «00», задаём конечный адрес «FFFF0» (размер самого рома 1048576 байт, в шестнадцатиричном виде это 100000, поэтому нужно ввести значение чуть меньше размера самого рома), задаём значения для поиска и нажимаем кнопку «Начать поиск». ![]() Поиск завершён, найдено 4 адреса, это и есть адреса самих пойнтеров! Сохраняем их в текстовой файл. Теперь пойнтеры можно легко подключить в программе Kruptar командой «Add From File». Пример с игрой Front Mission (J) (V1.0) [T+Eng1.0b_FH].smc Игра: Front Mission (J) (V1.0) [T+Eng1.0b_FH].smc Задача: найти и подключить пойнтеры в программе Kruptar. В этой игре используются абсолютные двухбайтные пойнтеры. С разным значением PtReference. Но у некоторых из них есть одна особенность. Перед каждым пойнтером стоит определённое значение. К примеру, A9. Для примера рассмотрим текст из игры: адрес фразы: 00318826: Not enough money. адрес фразы: 00318838: Is this OK? адрес фразы: 00318844: Data loaded. адрес фразы: 00318851: Data saved Пойнтеры в самом роме имеют следующий вид (выделенные цифры): … A9 26 88 A2 F1 … … A9 38 88 A2 F1 … … A9 44 88 A2 F1 … … A9 51 88 A2 F1 … Как можно заметить, пойнтеры легко определить по одинаковым символам, которые стоят перед/за ними. Эти символы – разная служебная информация. Сами пойнтеры разбросаны по всему рому. Поэтому проще их найти автоматически, а не вручную. Список адресов можно получить из Kruptar с помощью нулевых пойнтеров. Но сам список нужно модифицировать перед тем, как вставлять его в программу поиска. 0031 нужно заменить на A9, а последние цифры в адресе поменять местами. Теперь найдём сами пойнтеры с помощью программы Happy Finder. Открываем программу, задаём начальный адрес «00», задаём конечный адрес «347FF0» (размер самого рома 3440640 байт, в шестнадцатиричном виде это 348000, поэтому нужно ввести значение чуть меньше размера самого рома), задаём значения для поиска, задаём сдвиг и нажимаем кнопку «Начать поиск». Сам поиск можно провести несколькими способами. Результат будет довольно неоднозначным: 1 Способ: ![]() 2 Способ: ![]() 3 Способ: ![]() 4 Способ: ![]() Как видно из скриншотов, во втором способе нашёлся лишний адрес. Если у вас будет много значений для поиска, и если они к тому же будут короткими по длине, есть вероятность найти вместо нужных адресов мусор. Но его можно отсеять уже в процессе тестирования игры. А если вообще искать пойнтеры без учёта спецсимволов, как в четвёртом способе, то среди адресов будет просто куча ненужного мусора. Первый и третий способы – самые верные, но третий более долгий. Всё, адреса пойнтеров найдены. Сохраняем их в текстовой файл. Теперь пойнтеры можно легко подключить в программе Kruptar командой «Add From File». Поиск непоследовательных значений: (используйте «QQ» для такого поиска) Задача: найти и подключить пойнтеры в программе Kruptar, если известны только сами признаки, по которым можно идентифицировать пойнтеры. Т.е. когда у нас нет адресов фраз текста. Как рассмотрено выше, пойнтеры для интересующего нас текста имеют вид: … A9 26 88 A2 F1 … … A9 38 88 A2 F1 … … A9 44 88 A2 F1 … … A9 51 88 A2 F1 … Чтобы не вбивать в программу все эти адреса для поиска, можно вбить одно универсальное значение, по которому будет происходить поиск адресов. A9 QQ QQ A2 F1 – где вместо QQ программа будет искать любые байты: ![]() Среди всех найденных будут и наши 4 адреса, как и все остальные, которые удовлетворяют заданному нами условию: первый символ должен быть A9, а четвёртый и пятый – A2 F1. Все остальные символы (второй и третий) могут быть произвольными. Вместо заключения Guyver (X.B.M.) 2015 год. Мой E-Mail: e-mail -. Java-script |
|
( 09.01.2015 . ) |