<на главную Ромкор - тяжёлая дубина ромхакинга.
Особого умения в обращении не требует,
но выбить истину поможет.


Название программы происходит
от слияния первых звуков
словосочетания "ROM corruptor".


Ромкор (программа)

Это более мощный вариант корруптора. Программа должна быть интуитивно понятной, прочтения специальных инструкций не требует. Можно включить краткие всплывающие подсказки. Но если Вы планируете с помощью корруптора сделать более-менее объёмное дело, то имеет смысл ознакомиться с перечнем небольших особенностей, проясняющих работу приложения и позволяющих её ускорить.




=== ЗАМЕЧАНИЯ, КАСАЮЩИЕСЯ БОЛЕЕ ОДНОГО ОКНА ===

Начну с полей ввода. При вводе в них шестнадцатеричных цифр 'A','B','C','D','E' и 'F' не нужно обращать внимание на раскладку и регистр клавиатуры. В них также можно копировать значения вида '1 234 567', лишние пробелы и символы табуляции автоматически удалятся. Для увеличения/уменьшения находящегося в поле ввода числа можно использовать клавиши стрелка вверх/стрелка вниз, величина производимых при этом изменений зависит от положения курсора. Ввести в данное поле минимально или максимально возможное значение можно через нажатие клавиш PageUp и PageDown. Для запуска процесса запоганивания (или анализа) не обязательно щёлкать мышью по соответствующей кнопке, также можно нажать <Enter> при нахождении фокуса в одном из полей ввода адресов.

Переключиться между 10-ным и 16-ным режимами работы можно с помощью сочетания клавиш <Ctrl+Q>. Эта комбинация действует как на главной форме, так и в окнах анализаторов.

Внизу каждой формы имеется небольшое окно, позволяющее "заглянуть" в хекс-код файла. Если там показаны две строки, то верхняя показывает состояния данного участка в оригинальном файле (до запоганивания), а нижняя - в текущий момент. В окнах анализатора показана только одна строка, поскольку исследование проводится в коде оригинала и текущее состояние файла на винчестере никакого значения не имеет.

Результаты работы программы представляются в виде двух диаграмм, олицетворяющих собой файл. На правой диаграмме местоположение и размеры всех отрезков представлены в виде правильных пропорций, погрешность составляет 1 пиксель. Левая диаграмма - схематическая, создана для лучшего изучения мелких участков, которые на правой диаграмме сливаются.

Если хотите сделать диаграммы более детальными, растяните мышкой окно программы или щёлкните по системной кнопке, разворачивающей приложение на весь экран.

Одинарный щелчок на любой диаграмме позволит "заглянуть" в начало соответствующего отрезка файла. Если левая диаграмма слишком длинная, то щелчок по правой диаграмме прокрутит левую до места обозначения просматриваемого участка.

Максимальный объём файла, с которым программа теоретически способна работать, 2 Гб (-2 байта).

Если Вы решите обработать уже изменённый участок (неважно, самим корруптором или третьей программой), то эффект будет таким, как будто данный отрезок был вначале восстановлен, а уж затем пропоганен.






=== ЗАМЕЧАНИЯ, КАСАЮЩИЕСЯ ГЛАВНОГО ОКНА ===

Начну с того, что лежит на самой поверхности. Для вызова диалогового окна открытия файла достаточно просто произвести двойной щелчок на меню 'Файл' (или нажать <Ctrl+O>). Если Вы решите перезагрузить файл (к примеру, чтобы очистить диаграммы), то при открытии диалогового окна название в данный момент загруженного файла уже будет находиться в поле ввода, достаточно нажать <Enter>.

Программа позволяет сохранить текущую диаграмму (команда "Сохранить результаты работы") и в любой момент её просмотреть, присутствие изучавшегося файла необязательно. Сохранение можно открыть блокнотом и даже вручную подредактировать, если разберётесь в простеньком алгоритме. Первыми двумя строчками в нём идёт общая информация для пользователя, на всякий пожарный, Вы можете смело их полностью переписать. Важно лишь, чтобы строк осталось именно две.

Корруптор позволяет в любой момент полностью восстановить файл до первоначального состояния, делается это через команду "Восстановить файл" главного меню. Но перед восстановлением приложение обязательно сравнит текущую и эталонную версию файла. Если они полностью идентичны, то будет выведено сообщение, что операция восстановления лишена смысла. Соответственно, если это сообщение не выскочило, то значит были обнаружены отличия и файл восстановлен. Таким образом с помощью данной функции Вы всегда можете проверить корректность работы программы и своих действий.

Когда Вы закрываете корруптор или перезагружаете в нём файл, аналогичная проверка производится автоматически. В случае обнаружения программой отличий будет выведен запрос, стоит ли восстанавливать файл. Если же подобный вопрос не выскочил, значит отличий обнаружено не было. Эта проверка обязательна, Вы даже при желании не можете от неё отказаться.

При установленном флажке "Работать только с каждым xx-ым байтом" отсчёт начинается с первого байта указанного участка. Т.е. первый байт обрабатывается всегда, и дальше - через введённый интервал.

При операциях увеличения и уменьшения значений байт Вы можете заметить одну странность. Нет, это не глюк, это "фича" программы, позволяющая немного уменьшить вероятность зависаний файла. Дело в том, что при операциях увеличения/уменьшения новое значение байта не может выйти за пределы диапазона обрабатываемых значений байт. К примеру, если Вы отдаёте распоряжение увелить все байты со значением не более $EF на 8 единиц, то отдельные байты могут увеличить лишь на 7, 6, 5 и т.д. - если это необходимо, чтобы их новое значение не превысило те самые $EF. Байты со значением $EF (и более) вообще не изменятся. Такое усложнённое поведение корруптора связано с тем, что байты со значениями, близкими к $00 и $FF, обычно используются в качестве своеобразных управляющих тормозов, обозначая конец строки и т.п. Ведь целью запоганивания является изменения именно ресурсов (текста, графики или звука), а не сбой в командном коде, зачем нам выставлять в файле ROM-е лишние тормоза?

Пункт "Заменить байты на" -> "Последовательность" позволяет вставлять в файл как возрастающую, так и убывающую последовательности. Это зависит от того, больше первое указанное Вами значение, чем второе, или наоборот меньше. Пункт "Полный хаос" заполняет указанные места случайными байтами любых значений (от $00 до $FF).

Повторный щелчок по уже выделенному участку на любой диаграмме приведёт к переносу координат его начала и конца в соответствующие поля ввода, в которых выставляются границы очередного запоганивания.






=== ЗАМЕЧАНИЯ, КАСАЮЩИЕСЯ ОКНА ПОИСКА ПРОСТЫХ ЗАКОНОМЕРНОСТЕЙ ===

Корруптор может найти в файле участки простейших закономерностей (длиной от 16 символов), отфильтровать их и, при желании, наложить поверх диаграмм главного окна. Бывают ROM-ы, в которых более трети внутреннего содержания заняты нулями, ну какой смысл нам в этих нулях копаться? Если говорить более детально, то программа ищет участки из одинаковых символов ('FE FE FE FE ...'), из чередующихся ('00 08 00 08 ...'), а также возрастающие и убывающие последовательности ('EF EE ED EC ...'), из которых в самом простом случае состоят карты тайлов. Чтобы более детально увидеть, что за последовательность обнаружена в том или ином месте, щёлкните по нему на одной из диаграмм. Минимальный размер отображаемых на диаграммах участков можно изменить, перемещая соответствующий ползунок. Использование клавиш PageUp и PageDown перемещают ползунок на длину, равную расстоянию между двумя засечками.

Диаграммы в окне поиска закономерностей строятся по немного другому принципу, чем в главном окне. На них, к примеру, могут соседствовать одноцветные участки. При перенесении информации в главное окно все соприкасающиеся одноцветные участки будут объединены.

Двойной щелчок на диаграммах в этом окне ничего не даёт.






=== ЗАМЕЧАНИЯ, КАСАЮЩИЕСЯ ОКНА ПОДСЧЁТА КОЛИЧЕСТВА БАЙТ ===

Программа позволяет подсчитать на произвольном участке соотношение байтов с различными значениями. Как нетрудно вычислить, средняя встречаемость каждого значения байта в условиях идеального хаоса составляет 0,390625% (100%:256). Я приняла решение использовала эту цифру в качестве условной единицы при создании шкалы масштабирования.

Если под диаграммой появится прерывистая оранжевая полоска, то значит соответствующие участки полностью пусты. Поскольку небольшое, едва заметное количество байт на некотором участке и полное их отсутсвие - это разные вещи, я решила дополнительно обозначить подобные места.

Участок, который программа предлагает проанализировать по умолчанию - то же самый, который подлежит очередному пропоганиванию. Т.е. его координаты переносятся из главного окна.



Cкачать программу (v1.0) - 258 Кб

Дополнительные скриншоты и исходный код >





(Корруптор распространяется свободно-бесплатно и даже вместе с исходным кодом. Я не имею возможности проконтролировать его использование. Но всё же надеюсь, что тот будет применяться исключительно для создания любительских переводов, модов и хаков, не причиняющих коммерческого ущерба создателям оригинальных файлов.)

<на главную