Софт-Архив

нех редактор

Рейтинг: 4.9/5.0 (355 проголосовавших)

Описание

Hex Editor 2015 скачать бесплатно на русском языке для windows 7

Hex Editor

Hex Editor - это мощный редактор шестнадцатеричного и бинарного кода. Данная утилита обладает многооконным интерфейсом, широким набором инструментов для редактирования, просмотра и отладке данных. Программа может похвастаться повышенным удобством и комфортным интерфейсом для работы.

При редактировании активируется неограниченная история изменений файла, позволяя её сохранять, что в значительной степени облегчает редактирования файла в будущем. Средства программы позволяют создавать патч из изменений в два клика мышкой. Hex Editor рассчитан в первую очередь на подкованный пользователей и будет полезен как разработчикам программного обеспечения, так и для взлома программ. Отличной особенностью данной программы является простота в использовании, при условия начальных познаний в отладке программ.

Редактирование программ Hex-редакторами используется при отладке не-текстовых данных, внесения изменений в скомпилированный код, без необходимости повторной перекомпиляции. С помощью данного редактора можно без особых усилий изменять строковые и числовые константы, которые жёстко прописаны в сам код программы. Главное, что необходимо знать - это точное месторасположение констант.

Другие статьи, обзоры программ, новости

Русификация программ, помощь и обучение

Скопировал сообщение 1450 из ветки с общими вопросами.

Работа в WinHEX - очень подробно, с картинками (на примере ресурсов CustomLiveWallpaperCreator.exe).

Итак, ты извлек из файла CustomLiveWallpaperCreator.exe с помощью утилиты Restorator ресурс под номером 688 и сохранил его под именем 688.raw. Запусти WinHEX и открой в нём файл 688.raw. В заголовке файла идет строка "JAR CustomLiveWallpaperCreator.jar ". Это метка JAR файла, которая является внутренней сигнатурой данных JAR для исполняемого модуля файла CustomLiveWallpaperCreator.exe. После этой строки через разделительный нулевой байт (00) идет сигнатура ZIP-архива. Это два байта 50 4В (или в ANSI-символах - РК ). Запомни, все архивы ZIP начинаются в этих двух байт 50 4В (РК ). Ты можешь это легко проверить, открыв в НЕХ-редакторе любой ZIP-архив.

Твоя задача - отделить строку "JAR CustomLiveWallpaperCreator.jar" от данных архива, чтобы получить "чистый" архив. Это можно сделать двумя способами:

Первый. Удалить НЕХ-данные строки "JAR CustomLiveWallpaperCreator.jar". Для этого выдели курсором мышки НЕХ-данные строки "JAR CustomLiveWallpaperCreator.jar", включая разделительный байт 00, и нажми клавишу [DEL].

Сохрани файл под другим именем, например, 688.zip (меню программы File -> Save as. (имя файла необходимо указывать с расширением!)). Таким образом мы получили "чистый архив" ZIP.

Второй способ заключается в том, чтобы выделить блок с необходимыми данными и сохранить его в отдельный файл. Для этого указывается начало блока, а затем конец блока. Нам нужно выделить блок с данными архива ZIP. Ты уже знаешь, что архив начинается сигнатурой 504В. поэтому установи курсор мышки на байт 50 (начало сигнатуры), нажми правую кнопку мышки и выбери в контекстном меню команду Beginning of block (Начало блока), горячие клавиши [Alt+1] (запомни эти команды!):

Опускаемся в конец файла, установи курсор мышки на последний байт, нажми правую кнопку мышки и в контекстном меню выбери команду End of block (Конец блока), горячие клавиши [Alt+2] (запомни эти команды!):

В итоге у тебя будет выделен блок с данными архива ZIP. Так как ресурс 688.raw, кроме метки JAR и архива ZIP не содержит больше никаких данных, то операцию выделения блока сданными архива ZIP можно выполнить по-другому. Для этого необходимо выделить всё содержимое файла. Это делается или командой в меню Edit -> Select All. или горячими клавишами [Ctrl+A] (запомни эти команды!):

Затем, установи курсор на начало сигнатуры архива ZIP (байт 50), нажми правую кнопку мышки и в контекстном меню выбери команду Beginning of block (горячие клавиши [Alt+1]):

Получится вот так:

Теперь выделенный блок нужно сохранить в новый файл. Для этого в меню редактора выбери команду Edit -> Copy Block -> Into New File или используй комбинацию клавиши [Ctrl+Shift+N] (запомни эти команды!):

Откроется диалог сохранения файла, где необходимо указать место сохранения и имя файла, включая расширение, например, 688.zip. В итоге, ты также получишь "чистый" файл с архивом ZIP. Этот файл WinHEX откроет в новой вкладке, но делать с ним пока ничего не нужно.

Сейчас ты узнал, как работать в редакторе HEX (на примере WinHEX), и получил архив ZIP. Далее уже работаешь с этим файлом (распаковываешь, находишь необходимые файлы для перевода, переводишь нужные строки и сохраняешь обратно в архив). Рекомендую, перед началом работы, сделать его резервную копию или, после изменения его содержимого, создать новый архив, например, 688_ru.zip, т.е. в нем уже будут переведенные файлы.

После того, как ты окончательно перевел все необходимые данные из архива и создал новый архив, необходимо переделать его в файл ресурсов *.raw, который понимает программа CustomLiveWallpaperCreator.exe. Итак, у тебя есть два файла 688.raw и 688_ru.zip.

Тебе снова понадобится НЕХ-редактор. И снова поставленную задачу можно выполнить двумя путями: или добавить метку JAR (строку "JAR CustomLiveWallpaperCreator.jar", включая разделительный байт 00) к файлу нового архива 688_ru.zip и сохранить его по именем 688_ru.raw, или в исходном файле ресурсов 688.raw данные исходного архива ZIP перезаписать данными нового архива ZIP из файла 688_ru.zip.

Рассмотрим первый способ . Открой в НЕХ-редакторе файл ресурсов 688.raw и файл нового архива 688_ru.zip. Перейди на вкладку с файлом 688.raw. Если ты помнишь метка JAR представляет собой строку "JAR CustomLiveWallpaperCreator.jar", которая находится перед данными архива ZIP. Между меткой JAR и сигнатурой ZIP-архива стоит разделительный нулевой байт (00). Это хорошо видно в редакторе. Тебе нужно выделить НЕХ-значения метки JAR, включая нулевой разделительный байт. Это можно сделать или курсором мышки с нажатой левой кнопкой, или командами контекстного меню выделения начала и конца блока (ты уже с ними знаком).

Теперь скопируй выделенные НЕХ-значения в буфер обмена. Для этого воспользуйся командой меню Edit -> Copy Block -> Hex Values или клавиатурной командой [Ctrl+Shift+C] (запомни эти команды!):

Теперь переключись на вкладку с файлом архива 688_ru.zip. Метка JAR должна находиться перед данными архива ZIP, поэтому установи курсор на нулевой адрес, щелкнув по первому байту (адрес 00000000).

С этой позиции нужно вставить метку JAR. Для этого воспользуйся командой меню Edit -> Clipboard Data -> Paste или клавиатурной командой [Ctrl+V] (запомни эти команды!):

WinHex выдаст предупреждение:

Нажми ОК. Готово.

Теперь сохрани файл под новым именем, например 688_ru.raw. Так как мы повторили структуру файла с ресурсом 688.raw, то конечно же теперь у нас будет новый файл RAW, но уже с нашим, новым архивом.

Рассмотрим второй способ . Он аналогичен предыдущему, только теперь мы будем перезаписывать данные оригинального архива новым архивом. Открой в НЕХ-редакторе файл ресурсов 688.raw и файл нового архива 688_ru.zip. Перейди на вкладку с файлом 688_ru.zip. Это данные архива и нам нужно их все скопировать в буфер обмена. Клавишной командой [Ctrl+A] выдели весь файл, или воспользуйся командой меню Edit -> Select All (запомни эти команды!). Теперь скопируй данные в буфер обмена как НЕХ-значения. Для этого дай клавиатурную команду [Ctrl+Shift+C] или воспользуйся командой меню Edit -> Copy Block -> Hex Values (запомни эти команды!). После этого перейди на вкладку с файлом 688.raw. Если ты помнишь, началом архива ZIP является сигнатура 50 4В (РК). Тебе нужно установить курсор мышки на начало сигнатуры архива ZIP, т.е. на байт 50.

Теперь нужно данные оригинального архива перезаписать данными нового архива. Это делается командой в меню Edit -> Clipboard Data -> Write или при помощи клавиатурной команды [Ctrl+B] (запомни эти команды!):

Перезапись означает, что текущие НЕХ-значения будут перезаписаны новыми.

В итоге получится вот так:

Теперь сохрани файл под новым именем, например 688_ru.raw. Так как мы повторили структуру файла с ресурсом 688.raw, то конечно же теперь у нас будет новый файл RAW, но уже с нашим, новым архивом.

Теперь с помощью утилиты Restorator выполни в файле CustomLiveWallpaperCreator.exe замену оригинального ресурса на новый из файла 688_ru.raw. Сохрани и проверь программу в работе. Если нигде не сделал ошибок (включая перевод), то программа будет работать.

Hex Editor Neo Ultimate Rus

Hex Editor Neo Ultimate 5.14.00.4787 Rus

Hex Editor Neo Ultimate - удобный шестнадцатеричный редактор с мощным функционалом и русскоязычным интерфейсом. Помимо базовых возможностей стандартного hex редактора обладает дополнительными возможностями и инструментарием для работы с бинарными файлами.

Многоуровневая система откатов, полностью настраиваемая подсветка, встроенный дизассемблер, поиск выражений в группе файлов, сравнение файлов, поддержка файлов более 2 Гб, великолепный интерфейс - вот далеко не полный перечень характеристик Hex Editor Neo Ultimate .

В архиве инсталлятор Hex Editor Neo Ultimate 5.14.00.4787 и "лекарство" в комплекте с дополнительными языковыми файлами, в том числе русским. Обратите внимание, что файлы локализации нужно установить в папку C:\Documents and Settings\User\Local Settings\Application Data\HHD Software\Hex Editor Neo\Localization .

Для предыдущей версии программы (5.13.00.4760) после установки программы просто скопируйте папку Localization из скачанного архива в папку установки программы и выберите русский интерфейс в главном окне.

Разработчик: www.hhdsoftware.com

Язык интерфейса: русский, английский

Скачать Hex Editor Neo Ultimate 5.14.00.4787 Rus | 10,31 Мб | .rar |

Скачать Hex Editor Neo Ultimate 5.13.00.4760 Rus | 10,04 Мб | .rar |

Полезные советы - Работа с НЕХ-редактором на смарте

Profi Administrator [7568]

13 ноября 2006, 15:44

Свой первый перевод я делал именно этим способом. Таблицу символов методом тыка подбирал. Ошибка может получится при изменении длины строки. Для начала лучше не выходить за длину английского слова. А если получается короче, то заменять пробелами. В дальнейшем можно начать изменять и саму длину строки.

14 ноября 2006, 09:06

Profi спасибо за пост, я полностью с тобой согласен!

Но, тут те не как на компе и длину строки я пробывал увеличить.

Я как понял, этот редактор существует тока как на замену символов.

Хотя есть один вариант:

нужно найти в любом файле определеной длины строку, и скопировать ее в буфер. Далее вставить туда куда нужно.

А виды кодировок я подбирал так, просто писал алфавит в текстовом файле. И сохранял в нужной мне кодировке, потом открывал в НЕХсе.

Вот так все и просто!

Akbar (off) VIP [1355]

14 ноября 2006, 11:58

мда,чем дальше тем страшнее. Нахрена на смарте перегонщик кодировок. Популярно мне,тупому,обьясните плыс.

Profi Administrator [7568]

14 ноября 2006, 15:46

Hex-редактор позволяет работать с кодом программы. Можно заниматься переводом программ, вносить свои изменения, лечить от жадности.

А на компе я hex-редактором ни разу и не пользовался. Там есть специализированные программы для перевода. Но на смарте работать с кодом интереснее (трудностей больше)

26 ноября 2006, 11:47

Ура,товарищи! Комрады,френды! / пойду разбираться что за штука такая / а программы им писать можно? (извините, если глупый вопрос)

Отладичк и НЕХ-Редактор - Почему есть отличие

Gamehacklab[RU] Отладичк и НЕХ-Редактор - Почему есть отли.
krocki 27 июня 2015

Есть вопрос может кто подскажет.

Когда я взламываю игры и нахожу инструкцию например жизней в игре,

то смещение отличается которое отображает отладчик, от того что показывает НЕХ-Редактор.

То есть например GAME.EXE+32456 Код: 8D 88 98 64 00 00 показывает отладчик, а вот в НЕХ-Редакторе показывает совсем другое, но я вычислил базовое смещение и в НЕХ-Редакторе.

Я отнял от смещения 32456 - 0С00 = 31856 это смещение в Нех-Редакторе и код совпадает.

Как я понял разработчики игр сжимают файлы|модули включая и сам EXE файл, но в отладчике когда игра запущена он как бы разжимается, в общем как то так/фиг поймёшь.

В общем смотрите скриншоты и их отличия по смещениям (игра Doom 3 BFG Edition )

И не только игра Doom 3 и другие игры тоже так же. особенно новинки.

Помогите разобратся с HEX редактором - ChipTuner Forum

Коммерческие прошивки

Прошивки ВАЗ

Прошивки ВАЗ M73

Прошивки ВАЗ M74

Прошивки ВАЗ M75

Прошивки ГБО M74

Прошивки ВАЗ M74 RCO

Двухрежимки M74

Прошивки ВАЗ М17.9.7

Прошивки ВАЗ Я7.2+

Прошивки ВАЗ М7.9.7(+)

Прошивки ВАЗ "классика"

Прошивки ВАЗ (ГБО)

Редактирование домашней страницы браузера UCWEB в НЕХ редакторе на ПК

Редактирование домашней страницы браузера UCWEB в НЕХ редакторе на ПК

В данной статье будет описан способ, с помощью которого Вы сможете отредактировать на свой вкус страницы китайского браузера UCWEB .

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

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

Главное в статье - понять принцип построения страниц, тогда и изменять их можно разными способами, какие будут для Вас удобны.

1. Изменение домашней страницы UCWEB на ПК.

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

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

Рассмотрим скрин и что на нем я отметила:

Немного страшновато выглядит, но сейчас мы все с Вами разберем.

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

Но давайте разберем все по порядку.
  • красным цветом на скриншоте отмечен заголовок страницы
  • синим цветом на скриншоте отмечен заголовок раскрывающегося списка
  • зеленым цветом на скриншоте отмечена ссылка на раздел внутри раскрывающегося списка
  • желтым цветом на скриншоте отмечено название ссылки раздела внутри раскрывающегося списка
  • малиновым цветом на скриншоте отмечен разделитель между названиями ссылок разделов внутри раскрывающегося списка
Откроем страницу lp_navi.cd_data в НЕХ редакторе. Это и есть домашняя страница, что откроется сразу же после загрузки браузера.

Я в качестве НЕХ редактора использую программу WinHEX.

Начнем изучение НЕХ значений страницы с самого верха.

То, что мной выделено на скрине, то, что выглядит так ужасно, есть ни что иное, как сделанная мной надпись "Навигация" для названия домашней страницы и записанная в кодировке UTF-8. Есть ни чем иным, если это можно так назвать, как заголовком страницы.

К сожалению, в WinHEX она отображается в таком вот виде. Поэтому редактирование скорее на понимание, на внимательность, приглядитесь внимательно к отмеченному на скрине и Вы заметите закономерность того, что я правлю, или что я оставляю без редактирования.

Для редактирования Вам надо запомнить одно - менять надо часть байтов, что начинаются с первой буквы этих вот нечитаемых символов и заканчивая байтом, что стоит перед парой F3 F3.

Немного теории: Каждая буква слова, написанного на кириллице в UTF-8 - это два байта в НЕХ значении.

Заглавная буква Н - это D0 9D в НЕХ отображении. Т.о. у нас в слове Навигация - 9 букв, следовательно, в НЕХ значениях, т.е. в байтовом представление это слово будет из 18 байтов. 18 - это представление в DEC системе счисления, а в НЕХ - это будет выражено числом 12. О чем и говорит первый байт, что мной отмечен не скрине отдельно.

Очень важно правильно подсчитать длину строки, количество байт, что занимает слово, иначе. если допустить ошибку, то вся ваша страничка, что Вы будете редактировать - развалится.

Но я Вам подскажу, как все сделать проще, Вам останется только считать байты и менять значения количества символов.

Открываем Блокнот и в нем начинаем заполнять текст:
  • Если Вы решили менять название домашней страницы, то запишите на кириллице это название. В моем примере я написала - Главная.
  • Далее напишите название раскрывающего списка, под которым будут спрятаны ссылки. В моем примере я написала - Allnokia, т.к. создаю страничку со ссылками на разделы на форуме данного сайта.
  • Далее подготовьте все ссылки, что вы хотите использовать, т.е. просто скопируйте их в наш текстовый файл. В моем случае - это ссылки для разделов форума.
  • Теперь, после каждой ссылки впишите на кириллице Название данной ссылки, которым Вы бы хотели обозначит данную ссылку. В моем случае - это название разделов форума.
Подсказка: Для удобства, ставьте все слова и ссылки в строку, подряд, разделяя их, например, 3-мя пробелами, так потом Вам будет удобней ориентироваться в НЕХ редакторе.

Теперь выберите Сохранить как с Блокноте и при сохранении укажите кодировку UTF-8. Т.о. мы заготовили шаблон, который, открыв в НЕХ редакторе, мы сможем использовать для копирования и вставки.

Теперь давайте перейдем непосредственно к редактированию, в ходе которого я буду давать некоторые пояснения.

Итак, первым мы решили заменить Заголовок, т.е. название нашей домашней страницы. Мы решили ее назвать - Главная.

У нас открыт в НЕХ редакторе файл lp_navi.cd_data. Открываем еще один файл, что мы только что создали - наш текстовый файл. Для удобства я использую следующую возможность приложения WinHEX - отображение нескольких окон в одном, разделяя их по горизонтали.

Находим и выделяем наш Заголовок в окне, где открыта домашняя страничка UCWEB, те символы, что мы собираемся править.

Теперь работаем с тем окном, в котором у нас текстовый файл, первое слово у нас был Заголовок, его сейчас очень хорошо видно между проблемами. Выделяем все символы этого слова.

После выделения используем контекстное меню Правка - Копировать блок - НЕХ значения (либо используем комбинацию клавиш: Ctrl+Shift+C ).

Теперь возвращаемся в окно редактируемой страницы браузера, наш Зголовок уже выделен, если Вы его не выделили ранее, то можете выделить сейчас, обратите внимание еще раз на скрин, что приведен выше - выделяем значения, что идут после байта 12 до пары байт F3 F3. Т.е. таким образом, мы выделяем все байты слова Навигация, написанного на кириллице в кодировке UTF-8. После того, как все слово целиком выделено, нажимаем на клавиатуре Delete. Этим действием мы удалили все НЕХ значения слова Навигация.

Теперь мы выделяем первый байт F3, т.е. тот байт, что ранее следовал за Заголовком. И через контекстное меню выбираем Правка - Данные буфера - Вписать (либо стандартная комбинация клавиш Вставить для пользователей ПК - Ctrl+V )

Таким образом мы впишем новое слово Главная на место старого слова Навигация.

Но не забываем о том, что нам надо указать точное число байт, ранее число байты было 18 (в DEC счислении), что есть 12 (в НЕХ счислении). Нам необходимо пересчитать число байт и внести изменения.

Открываем калькулятор Windows. Активируем в нем Инженерный вид. Проверяем, что отмечена DEC (десятичная) система счисления. Вводим число байт, что занимает наше слово. Слово Главная - это 7 букв, как я указывала ранее, что в кодировке UTF-8, каждый символ кириллицы занимаает два байта. Следовательно, наше слово занимает 7х2=14 байт. Вводим число 14 в калькулятор.

Теперь достаточно переключиться НЕХ в калькуляторе, чтобы получить уже НЕХ значение числа 14, а именно: Вы увидите там 0Е. Вписываем это значение вместо байта 12:

На этом этапе я рекомендую Вам проверить работу страницы. Дело в том, что если Вы сейчас все выполнили верно, то далее Вам будет проще. Ибо принцип везде одинаков.

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

А вот ошибка с подсчетом символов и байтов вполне возможна. И тогджа страница у Вас просто развалится. Что такое "разваливаться" - я описывать не буду, Вы это сами увидите, когда страница либо вообще не будет отображаться, либо на ней не будет части информации.

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

Переходим к следующему этапу. Редактируем заголовок разворачиваемых списков.

Как видно из скрина, что принцип тут точно такой же. Только байты другие. Обратите внимание на символы я@P. Именно такой комбинацией всегда закачивается заголовок разворачивающего списка. А по аналогии, как описано выше - 09 - число байт, что соответствует числу в байт занимаемых символами в НЕХ представлении.

В нашем случае мы вставляем слово allnokia.ru, скопируем НЕХ значения из текстового файла (как мы делали это выше) этого слова. Переходим в окно редактируемой страницы, выделяем слово waping.ru, и жмем Delete. Затем устанавливаем курсор на байт FF (в правом поле символ я) и используя комбинацию Ctrl+V вставляем НЕХ значения слова allnokia.ru.

Теперь осталось отредактировать число байт, занимаемых символами. В данном случае у нас некириллистическое написание, а английское, поэтому каждый символ занимает всего один байт. Т.о, сколько символов в английском слове - столько и байт. Слово allnokia.ru состоит из 11 символов (вместе с точкой), что соответствует 0B в НЕХ счислении. Изменяем 09 на 0B.

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

Если все сделано верно, если работу над ошибками делать не пришлось, то переходим к следующей части работы.

Начинаем работы по редактированию раскрывающего списка. Будьте внимательны, первой идет всегда в нем ссылка, а второй идет название ссылки.

Редактируем ссылку по описанному выше алгоритму. Пересчитываем и редактируем число байт символов строки.

Ссылки всегда пишутся на латинице, поэтому один символ - это один байт. Т.о. подсчитав число всех символов, из которых состоит ссылка, переводим их в НЕХ значения и вносим изменения в редактируемую страницу.

А далее, ниже самой ссылки идет ее название, то, что отображается в самом раскрывающемся списке.

Название ссылки, скорее всего, будет написано на кирилллице. Редактируем аналогично, выделяем и копируем с текстового файла название ссылки. Затем выделяем и удаляем название ссылки в редактируемой странице. Затем вставляем скопированное. Затем пересчет байт строки символов. Помним, что криллица в UTF-8 - это два байта. Считаем символы, умножаем на 2, переводим в НЕХ значения. Полученное число байт вводим при редактировании длины строки.

И так редактируем все ссылки и их названия в раскрывающемся списке.

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

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

Для примера, перенесем Историю посещений наверх.

Рассмотрим подробнее, как это выполнено:

Обратим внимание на то, как заканчивается последнее имя ссылки раскрывающего списка (выделено синим). Того списка, что мы только что редактировали. Обращаем внимание на последовательность байт 01 D4 68 (выделено желтым).

Теперь посмотрим, как выглядит в НЕХ значениях запись раскрывающегося списка История сообщений (выделено красным). Мы видим отличия в НЕХ значениях, что следуют далее за выделением. Байты, что выделены желтым: D4 DC E6. Именно эти байты и те, что идут следом FF FF FF FF, всегда должны быть в конце страницы. Значит наша задача: поменять местами раскрывающиеся ссылки, при этом не разрушить страницу.

Копируем НЕХ значения, что выделены красным на скриншоте, включительно с байтом DC.

Переходим в верхнею часть редактируемой страницы. Находим начало нашего раскрывающего списка, его название. Ищем байт 15. Наступаем на него и используем команду Вписать (вставка Ctrl+V) .

Таким образом, мы переместили раскрывающийся список Истории выше. Теперь необходимо подправить байты, на которые мы обращали внимание ранее, иначе страница развалится.

Заменяем один байт DC на байт 68, тем самым убрав то значение, которое показывало, что страница закончена. Данное значение байта теперь показывает, что далее идет следующий блок, а именно раскрывающийся список.

А в конце странице, где у нас закончился блок раскрывающего списка, удаляем выделение, то, что мы использовали для копирования и переноса, т.е. Историю. И меняем значения наоборот. Вместо байта 68 вписываем байт DC.

Основные моменты мной описаны. На вид воспринимается сложно, но тут главное попробовать самому, понять схему построения, присмотреться к байтам. Тогда простой процесс копирования, удаления и вставки будет у вас занимать немного времени.

Мне работать с ПК убодней и привычней, поэтому я использую именно этот метод. Но сразу оговорюсь, с точки зрения новичка, с точки зрения человека, который первый раз прочел слова НЕХ значения, скорее всего, этот способ будет немного сложен. Но здесь главное попробовать, потом все становится понятным.

Метод, который я опишу в следующей статье - будет проще, проще с точки зрения как наглядности процесса, так и восприятия.

Червоная Ольга Редактирование домашней страницы браузера UCWEB в НЕХ редакторе на ПК

Описание программы BinEdit

Описание программы BinEdit

Программа предназначена для изучения прошивок для сотовых телефонов построенных на базе ARM процессоров.

    Проводить исследование прошивки на наличие различных данных и алгоритмов. Позволяет редактировать прошивку, создавать и переносить патчи (изменения прошивки). Компилировать ARM код. Связываться с телефоном через COM интерфейс и, при помощи патча в телефоне, контролировать его работу в реальном времени. Управлять патчами в файле resman. xml (для Resman по 3 версию, сейчас уже не применяется)

В состав, на данный момент, входит HEX -редактор, редактор патчей, СОМ терминал и ARM компилятор. Далее о каждом подробнее.

Hex -редактор

Позволяет непосредственно редактировать код в hex формате. Производить поиск различной информации в прошивке, просматривать ассемблерный код процессора, создавать и вести учет имен для конкретных адресов, сканировать МСС команды и строить дерево меню, редактировать текстовые ресурсы, в том числе проводить импорт/экспорт текстовых ресурсов между прошивками, находить и заменять в прошивке базы ввода T 9. Производить пошаговое выполнение команд в отладчике. Просматривать прошивку в виде RAW графики

Описание окна

Hex -редактор разделён на две части

С левой находится сам редактор

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

Редактор состоит из пяти вкладок HEX. Код, МСС, Графика, Отладчик. Далее по порядку:

Позволяет редактировать и просматривать непосредственно hex данные. Разделён на 3 колонки (адрес, Hex данные, Строковые данные). Можно непосредственно редактировать Hex данные или через контекстное меню копировать и изменять. При копировании данных над ними могут производится различные манипуляции. Можно сохранить в буфер обмена выделенный блок как HEX. BIN данные, а также как THUMB. ARM и MCC сигнатуры.

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

Данный текст можно скопировать в буфер или напечатать.

Нех код после адреса можно редактировать, при этом можно задействовать режим автопатч.

Позволяет просматривать данные как МСС код. Нех данные можно редактировать. Режим автопатч также работает. двойной щелчок по адресу вызывает переход на него.

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

1 – горизонтальный ч/б рисунок (биты из байта располагаются горизонтально)

2 – вертикальный ч/б рисунок (биты из байта располагаются вертикально)

3,4 – цветной рисунок по 1 биту на цвет (пол байта на точку)

5,6,7 -  не используются

8 – цветной рисунок по 1 байту на точку

9 – сжатый рисунок (09 кодирование)

12 – по 4 бита на цвет (полтора байта на точку)

13,14,15 – не используется

С правой стороны HEX -редактора есть набор вкладок с инструментами поиска и обработки.

Позволяет находить различные данные по прошивке. А именно:

Поиск hex кода. причем в строке поиска можно некоторые байты заменять знаком вопроса “?”. Вместо них в найденном коде могут быть любые символы.

Поиск строки символов в кодировке ANSI и UTF 8. также некоторые символы можно заменять на вопрос.

Поиск сигнатуры, аналогичен поиску hex кода, только дополнительно обрабатываются ключи сигнатуры. Дополнительно при невозможности найти hex маску, она укорачивается.

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

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

Поиск функций. Простое нажатие на кнопку находит команду сохранения регистров в стек PUSH. относительно текущего адреса в соответствии с направлением поиска. Теоретически можно искать начало функции для текущего кода. Также реализован поиск адресов вызова кода MCC (поиск ведётся только для явно указанных адресов кода МСС) и запросов строк для вывода по индексу (после реализации редактора строковых ресурсов будут указываться конкретные строки).

Сохранение найденных адресов в список сигнатур. см. далее

Также найденные адреса можно напечатать и скопировать в буфер обмена.

Сигнатуры (описание адресов)

Это специальные метки для адресов прошивки. Каждому  адресу можно дать название, описание и hex -строку – для поиска эквивалентных данных в другой прошивке. В последствии эти имена используются при дизассемблировании кода и поиска эквивалентных данных.

При загрузке сигнатур для другой прошивки будет предложено найти эквивалентные данные для текущей прошивки с сохранением имен сигнатур. Не определённые сигнатуры помечаются звездочкой “*”

Можно сохранить текущие сигнатуры и открыть ранее сохраненные. Файл с сигнатурами имеет расширение sig и представляет собой простой текстовый файл. Также поддерживается загрузка и сохранение файлов символьного описания ( sym или map ) с данными по прошивке. (Для полного sym(map) файла это довольно длительный процесс). Есть также более интересный вариант загрузка из sym файла только имен тех адресов, которые есть в списке сигнатур.

Для адресов можно найти сигнатуры. Причем на автомате для адресов,  принадлежащих прошивке, будут сформированы сигнатуры, как для поиска кода, иначе будут сформированы сигнатуры для поиска данных.

На вкладке приводится список МСС команд для текущей прошивки. Указывается их имена, коды и адреса запуска непосредственного кода, для текущей команды. Двойной щелчок мыши открывает прошивку по указанному адресу.

Вкладка разделена на две половины, на левой выводятся адреса запуска МСС команд из прошивки. При наличии загруженных описаний адресов, будут также и названия МСС блоков. Сканирование запускается по первой кнопке на толбаре вкладки. Двойной щелчок вызывает анализ МСС скрипта на наличие меню с указанного адреса. С правой стороны расположено поле с деревьями отсканированных меню. По второй кнопке на толбаре можно провести полное сканирование прошивки. Режим сканирования определяется тремя следующими кнопками. Первая из них позволяет отключить поиск  начал МСС скриптов, в результате поиск будет проводиться значительно быстрее, но стартовые адреса корневых меню скорее всего будут определены не правильно. Вторая позволяет показывать при сканировании условные и безусловные переходы. Качество сканирования улучшится, но время увеличится. Третья кнопка позволит добавить в результаты сканирования различные окна сообщений и вопросов, выводимых на экран.

Дальше в толбаре идет поле ввода. Там можно ввести адрес в hex формате с «0 x » для сканирования с него или текст для поиска его в меню. Поиск производится по кнопке или по ENTER. Дальше расположена кнопка удаления текущей ветки. Следующие две кнопки будут использоваться для загрузки и сохранения меню, пока данные функции не реализованы. Сохранять можно будет в том числе и в формате ResMan ( rxt ). Скорее всего будет и поиск адресов кнопок джойстика.

Языковые ресурсы.

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

Если в настройках разрешено то можно редактировать текст.

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

Удаление и перемещение языков по списку пока не реализовано. Поиск текста в ресурсах производиться по кнопке или по ENTER. В перспективе будет реализовано копирование языков ввода.

На вкладке производится поиск расположения баз T 9 в прошивке, загрузка и сохранение их в формате T 9 и lng. Для баз возможно редактирование набора символов на кнопках для ABC и кодов символов для T 9. Можно просмотреть параметры баз, менять код языка, внедрять базы в прошивку.

Скрипт с описанием параметров прошивки. Можно загрузить, сохранить, редактировать. А также запускать сканирование прошивки.

Описание меню.

Открыть новый редактор – открывает новую прошивку и связывает её с текущей. Это позволяет синхронно перемещаться по обеим прошивкам, синхронизировать данные прошивок одной кнопкой. Также две прошивки используются для поиска эквивалентной информации при редактировании патча.

Создать – просто создаёт новый пустой файл заданной длины.

Загрузить – открывает файл с диска. Поддерживаются два формата – простой код ( bin. ogm ) или в виде Hex описания ( hex ). При загрузке можно как загрузить файл, так и наложить его на уже имеющийся. Также можно выбрать файл с патчем – тогда будет загружен файл патча в радакторе патчей.

Программа помнит последние 10 загруженных файлов, доступ к которым производиться кнопку загрузки на панели управления.

Загрузить с адреса – тоже самое, но можно указать адрес с которого надо разместить новые данные.

Загрузить файл ResMan – открывает файл в формате xml для программы ResMan ( by Javer ) в виде менеджера патчей, с именами прошивок и патчей. Подробнее в описании редактора патчей.

Сохранить – сохраняет текущий открытый файл.

Сохранить как – то же самое, но спрашивает, под каким именем.

Сохранить блок – то же самое, но сохраняется блок, указанный с адреса “ c ” и до адреса “до”

Выход – закрытие программы.

Инструменты

Редактор патчей – открывает редактор патчей.

Отладчик – открывает вкладку с off line отладчиком.

Компилятор – открывает новый или уже ранее открытый компилятор. Описание компилятора представлено отдельным документом.

Подключение к телефону – пока вызывает COM модуль для связи с телефоном. При наличии CGSN патча можно производить поиск в памяти телефона, запускать код, просматривать участки памяти, делать дамп блоков памяти.

Создать патч по другому бину – (аналогичная функция есть в редакторе патчей) Если открыто два бина с одинаковыми идентификаторами, то будет создаваться разность по ним, иначе будет предложено указать файл с оригинальными данными. Не рекомендуется создавать патч разности бинов с разными идентификаторами.

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

Активация режима подмены адресов – активируется автоматически при загрузке прошивки.

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

IDA модуль – сохранение скриптов для IDA

XML модуль – сохранение ресурсов прошивки в формате ResMan 3. xx ( xml ).

Сканирование прошивки – производит определение свойств и поиск поиск ресурсов в прошивке

Авто патч – включает и отключает соответствующий режим (есть аналогичная кнопка на панели управления). В этом режиме при редактировании hex кода не записываются в прошивку, а помещаются сразу в патч. В этом режиме изменения только отображаются на экране, за исключением случая, когда вносимые изменения попадают в область наложенного патча.

Минимальный размер блока – минимальный размер блока патча. Размер блоков патча будет кратен этому числу. Оптимальное, на мой взгляд, значение равно 4. Т.к. оно совпадает с основным типом данных процессора и все данные прошивки начинаются с числа кратного 4. Значение 1 соответствует режиму по умолчанию для флешера ( by Alex / AT ).

Байт заполнения – предлагается два варианта 00 и FF. Первое часто используется для затирки данных, второе соответствует чистой флешь памяти. Данное значения используется при заполнении, когда нет данных прошивки.

Загружать первым – позволяет выбрать в каком режиме загружать программу. Пока есть четыре варианта: Hex -редактор. Редактор патчей, Компилтор и менеджер патчей ResMan

Длина сигнатур при создании – определяет сколько байт брать из прошивки при создании сигнатуры. Чем больше тем выше точность определения эквивалентов, но падает производительность.

Длина сигнатур MCC при создании – тоже самое, но для сигнатур МСС кода – указывается количество инструкций.

Режим создания сигнатур – пока реализованы 2 первых варианта (простой и обычный)

Смещать начало показа кода – позволяет выбрать на сколько байтов раньше начинать показывать код при выборе адреса в списке поиска.

Сохранять базу данных по прошивке – позволяет сохранять разметку прошивки, данные отладчика по текущей прошивке.

Подменять дальние переходы через BLX – позволяет компенсировать редиректы переходов на реальные переходы, тем самым увеличивая читаемость кода.

Выводить информацию по адресам под курсором – при удержании указателя мыши над адресом будет появлятся окно с кодом по этому адресу.

Дизассемблировать код под курсором в HEX редакторе – при удержании указателя мыши над HEX кодом в появившемся окне будет показан его дизассемблерный вариант.

ARM BigEndian   - определяет тип кода  big или little endian .

Формировать дерево при поиске данных -  позволяет группировать данные при поиске в древовидную структуру

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

Язык – меню позволяет сохранить или загрузить языковой блок меню и сообщений программы.

О программе – краткая информация о программе и разработчиках.

Справка – пока тоже, только это описание

Информация о бине – краткая (очень) информация о прошивке.

Редактор патчей

Отдельный модуль программы предназначенный для работы с патчами.

Описание рабочей зоны

Всё окно поделено на три части сверху вниз:

1. Список блоков патча.

Блоки могут быть одного из следующих типов:

  I – блок информации о патче. Можно изменить название патча, группу, версию, идентификатор прошивки (при загруженной пошивке двойной щелчок по полю вызывает его автоматическое заполнение), Flash ID – идентификатор помещаемый в Dif   файл (максимум 16 символов), язык индексов (пока не используется, будет нужен после реализации редактора строковых ресурсов, для идентификации индексов строковых ресурсов в МСС коде) и комментарий к всему патчу (при загрузке некоторых форматов патчей из этого пол выделяется информация об авторе и патчере в отдельные поля.).

A – автор. Позволяет ввести описание автора или соавтора

С – блоки с кодом. После реализации поддержки AMR режима процессора, формат блока будет дополнен

D – блоки с данными

M – блоки с MCC кодом

Разделение блоков на данные типы обусловлена различным методом обработки информации блоков. Насколько верно будут разделены блоки, настолько качественным будет автоматическое портирование

F – TFS блоки – при портировании не обрабатываются (пока). Если будет необходимо, то формат блока будет расширен для поддержки кодовых TFS блоков (плагинов)

R – описание ресурсов. Многие патчи ссылаются на ресурсы прошивки, некоторые создают (или заменяют) свои собственные которые не включены в основное описание прошивки, вот для описания таких ресурсов и служит этот блок.

S – блоки сигнатур – основной элемент портирования. Могут иметь разное назначение, но пока не подразделяются на типы. Пока хватает автоматического определения назначения.

Т – блоки текстовых индексов – своеобразные сигнатуры для поиска текстовых индексов. Так как в разных прошивках один и тот же текст может иметь разные индексы.

O – блок опций. Описывает блок с опциями для менеджера патчей.

2. Элементы обработки блоков патча

Состоит из 3 вкладок: основные свойства (для всех блоков), hex -редактор для основных блоков патча и просмотр кода  для блоков С и M

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

При просмотре hex -кода можно поменять тип блока C , D и M между собой, и редактировать как данные патча, так и данные отмены.

В режиме просмотра кода, также можно посмотреть как данные патча, так и данные отмены. Если активна кнопка “Далее”, то скорее всего размер блока большой и сразу весь не декодирован. Нажмите “Далее” чтобы декодировать весь код блока.

3. Панель результатов

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

Выбор пунктов списка приводит к открытию соответствующего блока патча. Результаты можно напечатать, сохранить в буфер обмена или просто удалить.

Описание меню.

Новый – создает чистый заголовок патча

Открыть – открывает файлы содержащие данные патча. Поддерживаются форматы:

dif – формат флешера sghfd ( by Alex / AT ) версии 0.55 – полностью, 0.60 – всё кроме упаковки ( RTF описание загружается, но не показывается. Его можно сохранить в отдельный файл.).

dep – формат редактора патчей DIFEditor (by Stepan_v)

xml. smp – формат редактора прошивки ResMan ( by Javer ). На данном этапе в программу встроен менеджер патчей для файлов xml. Подробнее далее.

pth – собственный формат программы BinEdit ( by AlexeyK ) – содержимое патчей расширено набором дополнительных данных необходимых для портирования патча.

Формат smp для данной версии программы является базовым и как для новых версий ResMan. так и для BinEdit и поддерживает все возможности программы.

Открыть файл ResMan – программа помнит последний редактируемый файл в формате xml и открывает его автоматически при выборе этого пункта. Иначе будет запрошено имя файла в формате xml. При открытии запускается менеджер патчей ResMan.

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

Сохранить в ResMan – если программа знает где расположен файл xml. то будет проведено автоматическое внедрение патча.

Сохранить Dif отмены – сохраняет файл в формате dif в качестве основных данных которого используются данные отмены.

Сохранять Dif   в формате 0.55 -  переключатель позволяет установить сохранение Dif патчей в старом формате (не сохраняются данные отмены и комментарий)

Сохранять данные переноса – при выбранном пункте в патчи smp будут внедряться данные переноса (сигнатуры, типы блоков)

Аналогичное меню появляется при нажатии правой кнопки на списке блоков

Открыть по адресу блока – открывает НЕХ редактор по адресу блока.

Открыть по адресу эквивалента – открывает НЕХ редактор для второй прошивки по адресу эквивалента.

Новый блок – позволяет создать новый блок в патче. При создании блоков с данными предлагается загрузить данные из внешнего файла.

Загрузить/Сохранить блок из/в файла – соответственно загрузка и сохранение блока в файл на диске.

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

Склеить блоки – позволяет объединить выделенные блоки. Блоки объединяются в соответствии с их типом.

Вставить, копировать, вырезать и удалить блок – соответственно выполняет действия с выбранными блоками патча с использованием буфера обмена.

Перенести блок – позволяет применить функции переноса к отдельному блоку.

Наложить/отменить блок – позволяет наложить данные блока на прошивку. При наложении контролируются данные отмены и при необходимости их можно обновить.

Аналогичные действия производятся при установке чекбокса у соответствующего блока

Определить блок отмены – действия аналогичны названию. Ничего не делается если блок наложен. Аналогичные действия можно выполнить при просмотре hex кода отмены.

Применить/Отменить патч – наложение и отмена всего патча. Аналогичные действия выполняются при установке/снятии чекбокса на блоке с информацией о патче.

Создать по другому бину – Выполняются действия аналогичные hex -редактору

Минимельный размер блока – Тоже самое, что и в hex -редакторе.

Минимизировать размер патча – позволяет убрать из патча данные совпадающие с прошивкой, но не все, а только не увеличивающие патч в связи с появлением дополнительной информации необходимой для описания блоков(пока не реализовано).

Оставить только различия в патче – оставить только байты не совпадающие с прошивкой (пока не реализовано)

Корректировать данные патча при изменении адреса блока – установка пункта приведёт к тому, что при изменении адреса блока будет автоматически проводиться его анализ и корректировка адресов переходов и ссылок на данные.

Корректировать данные прошивки при изменении адреса блока – дополнительно будут создаваться блоки патча с корректировкой прошивки при изменении адреса блока (пока не реализовано).

Перенос патча

Сброс эквивалентных данных – очистка полей эквивалентных данных

Сброс данных портирования – удаление всех второстепенных данных патча.

Сброс сигнатур  - удаляются сигнатуры, но найденные по ним адреса останутся.

Удалить все комментарии – производит очистку полей комментариев.

1. Проверить патч – производиться проверка взаимного наложения блоков патча. Результаты выводятся внизу окна в виде списка. Конфликтные места помечаются цветом.

2. Определение типов и размеров блоков – проводится анализ содержимого блоков патча на адекватность и достаточность данных для портирования по следующим параметрам: все блоки должны начинаться с четного адреса, определяются типы блоков, размер блоков данных содержащих числа должны быть равны 4, строк – кратны 4, код должен по возможности содержать данные которые использует (не всегда возможно), код МСС должен начинаться с основной команды (или команды стартовой для всего скрипта МСС) и его размер должен быть кратен длине МСС команды. Для данной операции необходима оригинальная прошивка.

3. Анализ патча на изменяемые данные – сканирование патча и выявление всех данных подверженных изменению: адреса перехода, ссылки на данные и сами данные. По результатам сканирования составляются сигнатуры для поиска эквивалентных данных в новой прошивке. Для данной операции необходима оригинальная прошивка.

4. Определение эквивалентных значений сигнатур – сканирование блоков патча и определение эквивалентных значений для сигнатур. Для данной операции необходим файл прошивки на которую производится перенос. Если в основном hex -редакторе открыта прошивка с другим идентификатором, то будет использоваться она, иначе, будет предложено загрузить прошивку в связанный hex -редактор.

5. Определение эквивалентных адресов блоков – по сигнатурам или по данным отмены производится поиск эквивалентных адресов размещения блоков патча.

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

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

Потом идут пункты переключатели:

Только комментарии – при проведении операций переноса, будут выводиться только комментарии, без выполнения каких либо действий.

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

Короткий поиск МСС – выполняется поиск только начала текущей МСС команды, иначе проводиться поиск МСС инструкции на которую есть ссылка из другого места прошивки.

Встраивать имена сигнатур – если загружены имена адресов для прошивок, то данная опция может позволить существенно сократить поиск, так как эквивалентные адреса будут находиться по их именам.

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

Автоматически объединять блоки МСС. При анализе типов и размеров для МСС блоков часто возникает ситуация когда адрес конца одного совпадает с началом следующего. В данном случае производиться их автоматическое объединение.

Автоматически объединить остальные блоки – аналогичные действия, как и предыдущий, но для других блоков.

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

Копировать комментарии в новый патч. При переносе патча позволяет также копировать и описания блоков из оригинального патча.

Переносить сигнатуры при переносе патча. Дополнительно переносятся и сигнатуры в новый патч.

Панель результатов

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

СправкаИнформация о патче – краткая статистика по патчу (размеры и типы блоков)

Кнопки на панели в большинстве своём дублируют пункты меню, за исключением кнопки S. которая приводит к копированию сигнатур патча в список сигнатур hex редактора, для анализа в нем.

Значения бит для команд ARM режима.

Cond – флаг необходимости выполнения инструкции. Если текущее состояние флагов соответствует команде, то она выполняется, иначе пропускается.

Значения бит для команд TRUMB режима:

Логика поиска изменяемых байтов прошивки в области кода (блоки CODE)

загрузка адреса в регистр Rx=PC+0xXX

Смещение XX может быть разным

Это как правило ссылка на строку или таблицу - надо искать эквивалентные данные в прошивке, если ссылка не на патч.

Загрузка данных в регистр по адресу Rx=[PC+0xXX]

Смещение XX может быть разным

Данные по смещению могут быть разными

по смещению как правило находится адрес в прошивке, в памяти или просто число.

возможны варианты:

а. адрес по ссылки принадлежит патчу и ссылается на патч, то обработку можно сделать при применении патча и не добавлять дополнительных сигнатур

б. адрес по ссылке принадлежит патчу и ссылается на адрес не в патче, но в прошивке, то добавляется сигнатура для поиска нового адреса в другой прошивке

в. адрес по ссылке принадлежит патчу и ссылается на область за границами прошивки, то добавляется именная сигнатура если адрес есть в базе сигнатур или пустая сигнатура

г. адрес не принадлежит патчу, подразумевается что там должны находится данные и добавляетс сигнатура для поиска адреса ссылки на эти данные, как для блока DATA

для числа в зависимости от его значения тоже создаётся сигнатура. но её скорее всего можно удалить.

переход по смещению B 0xXXXXXXXX (короткий переход) XXXXXXXX=PC+0xXXX

смещение XXX может быть разным, а следовательно и XXXXXXXX

это обычно длинные переходы внутри процедуры. Если ссылка не на патч, то надо искать сигнатуру взятую с этого адреса

Переход по смещению BL 0xXXXXXXXX (длинный переход) XXXXXXXX=PC+0xXXX<<12 + 0xYYY

смещение 0xXXX и 0xYYY могут быть разными, а следовательно и XXXXXXXX

это обычно вызов процедуры если ссылка не на патч, то надо искать аналогичный код по сигнатуре, взятой с этого адреса

Условные переходы могут быть разными адрес=PC + 0xXX

смещение 0xXX может быть разным

как правило короткие переходы внутри процедуры. Если патч составлен правильно, то они как правило не меняются, т.к. относительные и внутри процедуры

Логика поиска изменяемых байтов прошивки в области данных (блоки DATA)

Данные располагаются после кода и вызываются либо по смещению в диапазоне -1024 - 0 байт или по фиксированному адресу, указанному явно в прошивке

Этот адрес естественно может указываться по разному и из разных мест

При подготовке исходного патча необходимо обеспечить чтобы ссылки из патча на данные были в том же блоке что и данные и блок был CODE

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

Возможен и более длинный путь ссылок, например ссылка на таблицу ссылок, по одной из которых будут манятся данные, но это пока отдельная история

Логика поиска изменяемых байтов прошивки в области управляющих структур (блоки MCC)

Для каждой прошивки необходимо создать банк возможных видов структур. Их список сохранён в прошивке. Но некоторые параметры их команд могут отличаться для разных прошивок.

В данных могут меняться:

адреса переходов - явно указывается адрес, по нему надо делать MCC-сигнатуру в соответствие с таблицей структур

индексы (текста, иконок, мелодий и т.д.) - явно указываются в коде.

Предполагается в патч сохранять сами данные вместе с кодом, а потом по данным менять индекс.

Порядок переноса патча в основном соответствует пунктам меню переноса.

Пример переноса любезно предоставил Илья ( Ki $, ArmAGEDon )

Итак, перенос патчей выглядит примерно так:

    Когда запускаем программу, открываем в hex редакторе прошивку, с которой будем переносить патч. Потом нажимаем, заходим в меню Инструменты >> Редактор патчей Потом открываем нужный патч Начинаем перенос путем нажатия  последовательно кнопки, которая при запуске программы выглядит как единица на полосатом фоне На четвертом пункте программа спросит прошивку, на которую вы хотите осуществить перенос Советую остановиться на 5 пункте и проверить, все ли эквиваленты для адресов патча найдены Если не найдены то попытаться вручную найти адреса, делается это очень просто. Берем нажимаем на блок с ненайденным эквивалентом правой кнопкой, там нажимает открыть по адресу блока, когда он переведет вас на прошивку там стоит выбрать часть кода ну например как делаю я, 2-3 строчки, и нажать кнопку найти аналогичный код в связанном бине, если все же код не будет найден, посмотреть в патче, сколько строк кода занимает данный патч, и выделить данное количество кода в прошивке, к тому же лучше проверить адреса, содержащие F. даже если они были найдены. Проверить, нет ли одинаковых адресов. Если есть, то искать так же, как будто он не был найден (смотри инструкцию выше). Если же код все адреса будут найдены, с чувством полного наслаждения нажимаем предпоследний пункт, потом сохраняем патч в нужный формат, я использую формат ResMan v .4, хотя возможно использование и других форматов как, например формат Alex / AT ( dif ) Ставим патч на прошивку если все работает,  то значит, все выше перечисленные пункты вы выполнили грамотно и вам повезло.

Поиск пунктов меню в МСС коде можно провести на вкладке МЕНЮ с правой стороны HEX редактора.

    После запуска программы откройте  файл с необходимой прошивкой. Откройте с правой стороны вкладку «Меню» и при помощи второй кнопки запустите сканирование прошивки. Через некоторое время должен появиться список (дерево) меню для загруженной прошивки. Меню, начинающиеся с апострофа, являются запускаемыми из кода телефона. Это, скорее всего главное меню телефона. Меню можно искать по его заголовку или по пунктам, или найти меню, проследив дерево пунктов. В первом случае введите имя пункта в поле поиска и нажмите Enter (или кнопку поиска текста). Возможно, придётся несколько раз нажимать на Enter. так как в прошивке может быть несколько пунктов с одинаковыми именами и ещё некоторые меню дублируются в прошивке. Во втором случае ищется пункт, который находится в необходимой ветке меню телефона и потом от него проследить до нужного меню. Проблемы могут заключаться в отсутствии прямой связи между пунктами главного меню с второстепенными меню. В этом случае, как правило, будет пункт без подменю. Для решения этой проблемы двойным щелчком по пункту попытайтесь его открыть. Дальнейший  поиск проводите аналогично. Адреса меню и их пунктов определить довольно просто. Одиночный щелчок по пункту меню открывает HEX -редактор на соответствующем адресе.

Далее приведены некоторые проблемы и способы их решения .

1. Одна из самых частых проблем – это не правильное расположение данных в коде перенесённого патча. Это вызвано следующим. Команды THUMB режима занимают в памяти по 2 байта и соответственно по прошивке могут располагаться по адресам кратным 2 (по четным адресам), но сами команды при обращении к данным адресуются к адресам кратным 4 (так как процессор 32 разрядный). Следовательно при переносе возможна ситуация когда данные будут смещены на адрес не кратный 4. Проблему можно решить 2 способами. В-первых, принудительно изменить эквивалентный адрес исходного блока на 2 в большую или меньшую сторону, а затем повторно провести перенос. Этот вариант подходит для ситуаций, когда данные исходного патча размещены на коде и сам код занимает меньше места, чем код прошивки заменяемый патчем. Второй вариант заключается в выделении данных из блока патча и перенос их на другой адрес. Этот вариант более сложен и требует знаний ассемблера.

Программа, как правило, сообщает о таком не правильном расположении данных в комментариях.

2. Программа автоматически не находит все эквиваленты. Довольно частая проблема, чем больше разница между прошивками, тем меньше эквивалентов будет находится. Особенно это касается прошивок для разных телефонов, я например, не видел прошивок с одинаковым кодом функции регулировки яркости дисплея, в X 600 такой функции вообще нет. Для поиска эквивалента, если это вообще возможно, надо разобраться что же представляет из себя искомое число. Это может быть адрес (признаком этого является то что он принадлежит началу прошивки адресам примерно с 0 x 1000 по 0 x 40000 или то что оно не четное) для поиска можно воспользоваться Нех редактором и поискать эквивалентный код в другой прошивке изменяя начальный адрес в большую или меньшую сторону. Полезным может оказаться наличие описаний адресов для прошивок, так как искомый адрес может оказаться относительно в том же месте в другой прошивке, в соответствии с именами адресов.

Если искомое значение это данные или адрес расположения данных, то можно в Нех редакторе найти все адреса по которым эти данные используются, а потом поискать эти адреса в другой прошивке и посмотреть какие данные используются в там. Для некоторых данных не надо искать эквиваленты, хотя они и будут автоматически найдены. Это как правило с 0 и по 0 x 1000, но может быть и больше. Это могут быть данные, используемые в вычислениях, какие ни будь индексы или константы. Как правило, в таких случая получившийся патч может и будет даже работать, но не правильно с ошибками вызывая разнообразные глюки (то картинка кривая, то не выполнение каких, то действий и так далее). Для корректировки таких глюков надо детально разбираться в работе кода, что и для чего используется. Имена (сигнатуры) адресов тоже могут пригодиться.

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

При создании сигнатур можно также поэкспериментировать с их длиной и методом создания.