![]() |
Небольшая простенькая программка, предназначенная для поиска в файле неявных данных методом частичного контролируемого изменения части кода с целью его последующей проверки на предмет искажения выводимой информации. Говоря проще, бессовестно поганим участок файла и смотрим, изменились ли искомые данные. Написана на VB 2005. К сожалению, обладает серьёзным недостатком. А именно, нуждается в соответствующей среде. Как я поняла, в .NET Framework 2.0. Простите, ничего придумать не получается. |
Главная рабочая область программы (во всех других местах значения достаточно выставить всего один раз). Здесь задаётся с какого и по какой по счёту байт производить запоганивание. Начиная с нуля, включая концы участка. Также можно приказать программе анализировать и обрабатывать один байт через несколько. Эта возможность в совокупности с возможностью выводить за границы обработки байты с крайними значениями (см. ниже) по идее должны позволить просматривать за раз крупные участки с малой вероятностью зависания файла. Значения в полях очень удобно увеличивать/уменьшать через стрелки клавиатуры "вверх" и "вниз". Также можно оперировать клавишами Home, End, а также Ctrl+стрелки. Затем для запуска программы необходимо либо щёлкнуть на кнопке "Запоганить участок", либо на клавише Enter (но убедитесь, что активным является одно из пяти данных полей).
Мой небольшой опыт перевода ROM-ов подсказывает, что в качестве своеобразных внутренних разделителей обычно используются байты с крайними значениями, чаще всего [00], [FF] и [FE]. С помощью задания диапазона можно приказать программе не обрабатывать подобные байты. Особо прошу заметить, что при операциях увеличения/уменьшения значений происходит не просто пропускание соответствующих байт, но и результат преобразований также всегда находится внутри указанного диапазона (подробности - ниже, в описании дополнительных настроек). Т.е. программа не только не убирает старые разделители, но и не создаёт новые. Эту маленькую деталь я считаю одним из главных фундаментальных отличий Visual Pogank-и от классической Поганки (по крайней мере версии 1.03). Могу порекомендовать не ограничиваться тремя указанными выше значениями, а действовать несколько более смело. В случае надобности Вы всегда можете перепроверить участок ещё раз. Кстати, из-за этой особенности операции увеличения/уменьшения не могут быть применены к строго определённым значениям, к ним может быть применена только операция замены на другое строго определённое значение (const).
![]() |
Выбор действия, которое будет произведено с байтами, подпадающими под обработку. |
Поясню некоторые моменты.
Два верхних дополнительных параметра имеют низкую практическую ценность. Можете просто держать оба переключателя в верхнем положении и не вникать в их смысл. Для тех, кому интересно, но немного непонятно, уточню.
Циклический метод преобразования значений
![]() |
Копия файла из ОЗУ целиком переписывается на диск. |
![]() |
Самая главная команда, вокруг которой всё и вертится. После её нажатия в файле происходят соответствующие изменения, и появляется представленное окно, предлагающее внести в диаграмму информацию о поведении искомых данных. |
![]() |
Нажатие на ту или иную кнопку определяет, каким цветом будет отображён указанный участок на диаграмме. Никаких побочных последствии выбор кнопки не имеет. Разве что стоит не забывать о том, что при соприкосновении на диаграммах двух одноцветных диапазонов происходит их слияние. Предполагается, что пользователь в основном будет пользоваться лишь тремя верхними кнопками. Но мой небольшой опыт общения с классической Поганкой показал, что не всегда возможно чётко и однозначно отнести участок к одному из этих случаев. Подумав, я решила добавить ещё два цвета. Естественно, их трактовки могут отличаться от предложенных мною. Самая нижняя кнопка отдаёт программе распоряжение закрыть окно без внесения каких-либо изменений в диаграммы, но остальные настройки данного окна выполняются в любом случае. |
Visual Poganka для ускорения работы способна сама менять границы участка запоганивания. Если данная вещь покажется Вам неудобной, просто поставьте точечку напротив пункта "Не трогать". Или "Обнулить". Что касается пунктов "Шаг вперёд на..." и "Шаг назад на...", то здесь немного сложнее, чем просто прибавление/вычитание данных цифр и уже имеющихся в полях адресов. При использовании первого пункта новый запоганиваемый участок будет начинаться там, где закончился предыдущий. Вернее, со следующего байта. А вводимое на данном окне число определяет длину участка. Благодаря подобной функции можно перепоганить файл всего двумя щелчками мышки. Буквально: один щелчок на одной из цветных кнопок и один - на кнопке "Запоганить участок" главного окна.
Если на этом пункте установлена галочка, то сразу после закрытия данного вспомогательного окна последний изменённый участок будет автоматически восстановлен.