Как можно отредактировать hex файл?
Пишу небольшую программку wpf для управления светодиодной лентой ws2812b через COM-порт. Сама лента управляется через arduino nano с предварительно загруженным скетчем. Программка умеет управлять всеми параметрами ленты + спецэффекты и в добавок умеет прошивать arduino предварительно подготовленным файлом скетча в формате hex с дефолтными настройками. Теперь необходимо придумать, как можно поменять дефолтные настройки в hex файле. Т.е. конвертировать файл до читаемого вида, заменить пару параметров текущими настройками и сгенерировать новый hex файл для заливки на arduino.
Еще возможный вариант, получить файл скетча для arduino и его конвертировать в hex, но тогда как-то надо подключать к приложению библиотеки ардуины. Сдается мне, что это нереальная задача.
- Вопрос задан более трёх лет назад
- 1501 просмотр
- Вконтакте
- Вконтакте

- Вконтакте
Выбирайте:
а) делить файл на 2 части: прошивка и отдельный сегмент с переменными для настройки; зашивается в два этапа, для каждого файла свой
б) модификация уже подсказанного: хранить в еепром, что тоже отдельный сегмент по факту
в) поищите задачу с серийными номерами приборов: по сути тоже самое, только там параметр=серийник
г) делать настройку на этапе компиляции, если возможно.
д) самому пережёвывать hex в бинарник, искать там вашу переменную, определять по какому адресу лежит, и корректировать содержимое hex-а с пересчётом контрольной суммы. Вроде как avreal умел что-то подобное.
В последнем случае пишите тулзу, которая по смещению и размеру переменной будет поправлять значение в HEX-e.
Как отредактировать hex файл прошивки
Требуется вносить изменения в файл eeprom.hex. Т.е. я меняю байт, а мне автоматом пересчитывает контрольную сумму в конце строки.
Изрыл весь интернет, нашел кучу программ на подобие Hex Editor Neo, HxD и пр. Муть там какая-то, отображают мой hex с совсем левыми значениями.
Однажды я находил требуемую утилиту, работала она как нужно. Забыл название.
Подскажите, какую скачать ?
Или же в АВР студии есть возможность править файл с изменением сумм ?
Спасибо.
Как отредактировать hex файл прошивки
В этом FAQ'е содержится информация для новичков, которые хотят сделать собственную прошивку.
Внимание: разделы данного FAQ взамосвязаны, для понимания всего процесса, рекомендуется прочтение всего материала.
Если вы желаете добавить информацию в FAQ, просьба написать в этой теме
—-
Вся информация и материалы, представленные в данном FAQ'е, являются неофициальными. Авторы и Администрация сайта ответственности за них не несут! Все действия производятся только на Ваш страх и риск!
Сообщение отредактировал Smartecs — 10.12.10, 19:20
-
1. Разбор прошивки
- интерпретируется код
- проверяется возможность копирования файла (создания директории)
- если возникла ошибка (неправильное имя файла, не существующий путь и т.п.), строчка игнорируется.
- из папки Windows (где в итоге оказывается все содержимое ОЕМ и SYS) файл копируется в указанное в коде место в файловой системе.
- Слева от матрицы отображается линейка из чисел: каждой строчке соответствует число, означающее адрес/смещение первого байта этой строчки. Шаг адресов при этом равен количеству колонок.
- Сверху от матрицы отображается другая линейка: над каждой колонкой отображается смещение байта, стоящего в этой колонке, относительно первого байта соответствующей строчки. Сумма числа, соответствующего i -той строке, и числа, соответствующего j -той колонке является адресом/смещением байта (i;j) , стоящего на пересечении взятой строки и взятого столбца.
- Справа от матрицы отображаются те же данные, но в другой интерпретации. Чаще всего используется альтернативное отображение данных как текста в кодировке ASCII , при этом байты, значения которых соответствуют непечатным символам, отображаются как точки ( · ). Редактировать значения можно и в этой области.
- Для исправления ошибки «Требуется MS SQL Server 6.5 + Service Pack 5a или более старшая версия!» изменяем поля:
по смещению 000d9cca значение 83 меняем на eb
по смещению 000d9ccb значение e8 меняем на 15
по смещению 000db130 значение 83 меняем на eb
по смещению 000db131 значение e8 меняем на 10 - Для исправления ошибки «Порядок сортировки, установленный для базы, отличается от системного!»:
по смещению 0018a79d значение 75 меняем на eb - Для исправления ошибки «Неправильный синтаксис около ключевого слова «TRANSACTION»
Фразу DUMP TRANSACTION %s WITH TRUNCATE_ONLY , которая находится по смещению 002856B0 заменяем на фразу ALTER DATABASE %s SET RECOVERY SIMPLE - Для исправления ошибки «База данных не может быть открыта в однопользовательском режиме», изменяем поля:
по смещению 0028549c значение 64 меняем на 6b
по смещению 0028549d значение 62 меняем на 70
1.1 Форматы прошивки:
Сообщение отредактировал Lens_flare — 03.10.10, 15:20
Часть первая: разбор прошивки
Итак, у нас есть файл прошивки, для первичной его разборки обычно необходима утилита, рассмотрим самые распространенные.
Сообщение отредактировал Lens_flare — 03.10.10, 12:08
Рассматриваемые утилиты: OSNbTool, NBwork.
Чаще всего одного OSNbtool хватает, чтобы разобрать прошивку до imgfs и xip.
Переименовываем прошивку в flash.bin, кладем в папку с OSnbtool и выполняем серию команд (записываются в bat-файл) :
выполнение этой команды гарантированно разобьет OS на компоненты.
Сообщение отредактировал alex — 13.09.10, 20:42
Рассматриваемые утилиты HTC ROM image editor (далее RIE), OSNbTool, NBwork.
File-open-открываем прошивку (обычно RUU_signed.nbh), RIE сам должен определить ваше устройство (список поддерживаемых устройств в теме по ссылке выше). В программе заходим в корневой раздел с пиктограмкой кпк (например, для HTC Herald это будет HERA 10000), должен открыться список разделов с форматом .nb, нас будет интересовать OS.nb.
Чаще всего одного OSNbtool хватает, чтобы разобрать ОС до imgfs и xip.
Кладем OS.nb в папку с OSnbtool и выполняем серию команд (записываются в bat-файл):
Выполнение этой команды гарантированно разобьет OS на компоненты.
Сообщение отредактировал alex — 13.09.10, 20:41
Рассматриваемые утилиты:
OSNbTool, NBwork
Чаще всего одного OSNbtool хватает, чтобы разобрать прошивку до imgfs и xip.
Переименовываем прошивку в удобное короткое имя, кладем в папку с OSnbtool и выполняем серию команд (записываются в bat-файл) :
Выполнение этой команды гарантированно разобьет OS на компоненты.
Сообщение отредактировал alex — 13.09.10, 20:40
Формат .bin (.dat) — аппараты ETEN/Acer
Рассматриваемая утилита: KVA kitchen/DX900tools(KVA by Ravik)
Предупреждение: для работы утилиты необходимы Visual J# redistributable, Java Runtime Environment.
KVA-подходит для девайсов ETEN и некоторых Acer, DX900tools подходит для большинства девайсов Acer.
Разобрать с помощью нее довольно просто, необходимо лишь переименовать файл прошивки в temp.dat, скопировать его в корень кухни и запустить extract.bat, кухня сама разложит прошивку на составляющие.
В состав папки ROM, которая создастся в результате работы кухни входят файлы os.dat header.bin boot.dat ipl.dat knight.dat usbdl.dat и папка OS, красным выделены компоненты бутлоадера, которые нужно удалить при готовке кастомной прошивки.
В папке OS/Fat вы найдете необходимые в дальнейшем компоненты прошивки, а именно билд(imgfs.bin) и ядро(xip.bin) системы. В папке OS/EXTROM находятся cab-файлы, которые ставятся в систему при загрузке.
ВНИМАНИЕ: xip.bin, полученный при разборке может быть поврежден. В таком случае нужно пересоздать все DSM в нем, предварительно "разжав" его утилитой srpx2xip. После данной процедуры xip обретет запускаемый вид. Подробнее о DSM и способах его создания смотрите раздел Редактирование прошивки.
Сообщение отредактировал Lens_flare — 11.01.11, 15:33
Нестандартные форматы (DIP, KDZ, TMP и другие)
Рассматриваемые утилиты: OSNbTool, NBwork, специальные утилиты
Переименовываем прошивку в flash.bin, кладем в папку с OSnbtool и выполняем серию команд (записываются в bat-файл) :
Выполнение этой команды гарантированно разобьет OS на компоненты.
Если же подобный метод не помогает, наверняка в теме по перепрошивке девайса найдется необходимая утилита.
Сообщение отредактировал Catg — 13.09.10, 20:26
Разборка билда
Вот мы и разобрали прошивку на составляющие, дело за малым — разобрать билд.
Рассматриваемые утилиты: IMgfstodump by Mamaich или подобная(часто можно увидеть в комплекте imgfs tools), Bepe's PKG tool(чаще всего встречается в комплекте Package tools), OSBuilder.
Первое, что необходимо сделать, положить рядом с утилитой imgfstodump файл imgfs.bin, полученный на предыдущем этапе.
Код для распаковки (чаще всего бат с таким кодом уже приложен рядом с утилитой, в таком случае его нужно просто запустить)
После разборки увидим папку Dump, это и есть наш билд, но чтобы его можно было полноценно редактировать, нам нужно отправить его на обработку утилите PKG Tool, запускаем ее, выбираем load, в открывшемся меню выбираем место где лежит наш дамп (саму папку нужно открыть), после вышеописанной процедуры, в папке dump должны появиться папки OEM и SYS с пакетами OS внутри.
Способ разборки дампа на пакеты OSBuilder-ом:
-Запускаем OSBuilder
-переключаем в режим Dump Tool(верхний правый угол->Режим OS Builder)
-файл-открыть папку, указываем путь до папки dump(саму папку нужно открыть)
-увидим основополагающую информацию о билде: разрешение, язык, версию билда, Framework и пакетов, а так же сертификаты.
-нажимаем "разложить дамп на пакеты" (четвертая слева кнопка с квадратиками)
-в папке dump увидим разложенный на ОЕМ и SYS дамп ОС.
Сообщение отредактировал Pixel #1 — 06.12.11, 12:18
Часть вторая: редактирование OS
Внимание: данный раздел обязателен к прочтению полностью вне зависимости от выбранного метода редактирования.
Итак, вот мы подошли к самому творческому этапу создания прошивки. Следуя определенным правилам, можно создавать яркую, индивидуальную ОС с красочными иконками или своим набором программ, или вообще супер лайт!
Сообщение отредактировал alex — 13.09.10, 20:16
1. Помните о создателе.
Создателей у официальной прошивки, которую мы берем за основу, двое: Microsoft и OEM-производитель(Acer, HTC, Samsung и т.п.), поэтому в ОС две составляющих: SYS(от MS) и ОЕМ(от производителя). Что бы вы ни делали, всегда помните, что та или иная программа была заложена в устройство не зря(с точки зрения производителя), порой удаление таковой может сказаться на работе устройства(глюки зависания отказ беспроводных интерфейсов и т.п.), вплоть до отказа загрузки ОС, так что вы должны точно знать ее предназначение.
2. Помните основные определения.
Пакет(Package) — папка, состоящая из набора файлов, связанных одним предназначением. Пакет-единица условная, цель которой сделать из прошивки эдакий конструктор для упрощения редактирования. Различают OEM-пакеты — от производителя, содержащие драйвера и программы, иногда этим термином называют пакеты, встраиваемые в прошивку, и SYS-пакеты-пакеты с файлами Windows Mobile.
Структура пакета:
Важные
-.DSM(далее по тексту: дсм) файл-файл, определяющий местоположение пакета в пространстве ОС(подробнее в ч. 3), а так же хранящий всю информацию по пакету(в т.ч. и имена файлов);
-.RGU(далее по тексту: ргу) файл[аналог-.reg файл настольной и мобильной ОС]-файл реестра пакета, в нем хранятся важные реестровые правки, вносимые пакетом.
второстепенные
-основные файлы пакета(да, да, пакет может состоять только из дсм или дсм+ргу);
-Initflashfiles.txt- содержит изменения, вносимые в структуру файловой системы.
-option.xml-описание пакета в xml-форме(можно удалить).
DPI(Dot Per Inch) и ResH, ResV — задают разрешение экрана, которое будет использоваться в windows mobile, здесь важно точно знать свое разрешение экрана, потому что если что-то перепутать, система может не запуститься(это касается лишь таковых пакетов в SYS и некоторых ОЕМ, ошибка в разрешении ОЕМ пакета создаст трудности в работе программы[приложение может идти не в полный экран или не влазить в экран или вообще не запускаться]);
Основные DPI и соответствующие им разрешения:
96: ResH 320 ResV 240(QVGA), ResH 240 ResV 400(Wgvga) и вариации(квадратные экраны);
128: ResH 320 ResV 480(HVGA);
192: ResH 640 ResV 480(VGA), ResH 480 ResV 800(WvGa).
Ланг(лангпак)[англ. Language-язык] — языковой пакет, идущий вместе с приложениями, большинство лангов-это SYS ланги, которые отвечают за язык OS, но так же встречаются и OEM-ланги, которые отвечают или за язык некоторых элементов windows(например пакет OEM_lang) или за язык программных пакетов производителя. Обозначается [имя пакета]_Lang_[код языка].
Наиболее часто встречающиеся языки:
0409-WWE(WorldWide english), проще говоря английский.
0419-русский.
Модуль -папка, в которой расположены компоненты файла. Например папка shellres.96.dll будет обозначать файл shellres.96.dll. Сделано это для Windows, поскольку ей так проще оперировать с файлом. Обычный состав модуля-файлы Imageinfo.bin, imageinfo.txt, S000, далее опционально могут быть S001 и т.д., это и отличает его от пакета, в пакете не может быть подобных файлов, ну и само название должно сказать, что это модуль. Если вам необходимо отредактировать данный модуль(заменить кривой перевод в случае MUI, переписать какую-нибудь функцию в нем и т.д.), необходимо воспользоваться программой RecMod, которая преобразует модуль в обычный файл настольной windows, который уже можно редактировать. Для того чтобы перевести файл обратно в модуль, существует утилита Reversmode; ее можно применять на любой файл, даже тот, что никогда не был модулем; существует поверие, что таким образом можно экономить оперативную память.
3. Не бойтесь экспериментировать.
Ведь создание прошивок — занятие творческое. Удалили что-то, раз-получили прирост к оперативной памяти (ну и к постоянной соответственно), если все работает и без этого-запоминаем, накапливаем опыт. Пробуем еще что-нибудь, не получилось-возвращаем как было.
Сообщение отредактировал Lens_flare — 07.06.11, 11:07
Список пакетов SYS с описанием (поможет при очистке прошивки от лишнего)
ADC — автоматическая настройка сети
AdobeFlash — Adobe Flash
AdobeFlashCodecs — кодеки Adobe Flash для воспроизведения видео
AlarmSounds — звуки уведомлений
AUTOUPDATE — автоматическое обновление (нигде особо не используется, можно смело удалять happy.gif )
Base — крайне нужный пакет — основные файлы. В частности, там лежат иконки smile_good.gif
BaseApps — крайне нужный пакет — основные программы. В частности, там лежит калькулятор, проводник, почта, заметки и т. д.
BaseAppsFiles, BaseAppsModules — включает поддержку камеры системой (но это не отменяет необходимость подключения драйверов камеры устройства)
Bluetooth — поддержка Bluetooth
bronze — компоненты для CHome (внутри может быть много ненужных иконок от Live Messenger'а)
BronzeEA — компоненты для CHome (для восточноазиатских языков)
BronzeNonEA — компоненты для CHome (для остальных языков)
BROWSING — компоненты IE 5
BROWSINGCORE — компоненты скриптования IE 6on6
browsingie — интерфейс IE 6on6 и RenderCore (по сути, ядро IE)
BTDUN — поддержка dial-up дозвона через Bluetooth
Bth_A2DP — аоддержка Bluetooth A2DP
Bth_HID — поддержка профилей Bluetooth HID (Human Interface Device)
Bth_Watch — поддержка Sony Erricssion Wrist Watch
CHome — Titanium (новый интерфейс WM 6.5)
CommonEA — настройки для восточноазиатских языков
CommonNonEA — настройки для остальных языков
COMPLEXSCRIPT_FONTS — шрифты для арабских билдов (взаимозаменяемо с SYSTEM_DEFAULT_FONTS)
ConfettiCore — аппаратно-ускоренный движок RenderCore для 6.5 Chrome
DRM — поддержка Digital Rights Management (DRM). Нужна для воспроизведения MP4 и 3GP.
Enterprise — поддержка IPSec, l2TP and Winscard (хм. наверное, лучше оставить)
Entertainment — игры
FWUPDATE — поддержка ImageUpdate. Это такая фиговина, которая позволяет легко обновлять прошивку. Фиговина наверное хорошая, но ее никто не использует.
gb18030 — поддержка восточноазиатских шрифтов (в версиях для остальных языков убирается)
GPSID — драйвер GPS, позволяющий нескольким программам совместно использовать один порт
INTERNETSHARING — то, что называется "общим интернетом". Позволяет делать из устройства роутер для доступа в интернет через USB или Bluetooth.
IPSECVPN — поддержка IPSec VPN
IRDA — поддержка IR порта (инфракрасник)
LangDB — wince.nls для нужного языка (0404, 0411, 0412, 0804, WWE)
Livesearch — поиск через Windows Live Search/Bing Search
Lockscreen — экран блокировки WM 6.5
LockscreenEA — экран блокировки для восточноазиатских сборок
LockscreenNonEA — экран блокировки для всех остальных сборок
MediaOS — Windows Media Player. Возможно, нужен для проигрывания MP3 файлов
MediaOSFiles, MediaOSModules — декодер DMO (нужен для воспроизведения MP3)
Metadata — крайне нужный пакет — содержит информацию о реестре
MODEMLINK — старая реализация "общего интернета" (через DUN)
MSIMAR — поддержка SIP для арабских билдов (не используется в не-арабских)
MSTag — Microsoft Tag Reader (программа для чтения картинок-кодов оригинального формата; фтопку ее! happy.gif )
MSXIPKernel — обязательный пакет — компоненты ядра системы
MSXIPKernelLTK — пустой пакет для ImageUpdate (можно убирать, если не собираетесь использовать ImageUpdate)
NetCF — Microsoft .NET Compact Framework
NonPhone — компоненты для не-коммуникаторов (т. е. для устройств без возможности совершения звонков; не используются в версиях для коммуникаторов)
OEMXIPKerne — обязательный пакет — компоненты OEM Native Kernel (ядро, приспособленное под конкретное устройство)
Office — Microsoft Office Mobile
OneNote — Microsoft OneNote Mobile
OS — крайне нужный пакет — компоненты системы
OSFiles, OSModules — нужный пакет — MS WMV DMO. Кажется, это декодер DMO для Windows Media Video
Perf — монитор производительности (нужен для отладки)
Perfbox — монитор производительности (нужен для отладки)
Phone — крайне нужный пакет — поддержка функций телефонии (не используется в билдах для не-коммуникаторов)
PhoneRedist — крайне нужный пакет — поддержка функций телефонии (не используется в билдах для не-коммуникаторов)
ppgprov — поддержка доступа по протоколам OMA (не используется в билдах для не-коммуникаторов). Кажется, нужно для пересылки SMS.
Redist — крайне нужный пакет — содержит драйвера Bluetooth, WAP и другие системные файлы. Тут же лежит welcome.exe
RemoteDesktopMobile — удаленный рабочий стол
Riched20 — поддержка Rich HTML Editor для не-арабских билдов
Riched20_CS — поддержка Rich HTML Editor для арабских билдов
RIL710MUX — компонент CellCore (сотовая телефония), но для чего конкретно нужен — не знаю (кто-то его оставляет, кто-то выкидывает)
RingsAndalerts — звуки звонков и уведомлений
RMGR — менеджер роуминга (. говорят, что необязательно. )
RUNTIMES — нужный пакет — компоненты C Runtimes
SipAR — поддерка SIP для арабских билдов (не используется в не-арабских)
SampleMusic — примеры музыки
Shell — крайне нужный пакет — содержит кучу компонентов системы. Здесь же есть кой-какие системные звуки (например, звуки будильника).
SIM_TKit — менеджер SIM карты (не используется в CDMA билдах)
Skybox — Microsoft MyPhone (для синхронизации с сервисами Microsoft)
Skymarket — WM MarketPlace (не работает happy.gif )
SMIME — крайне нужный пакет — поддержка криптографических функций
SMS_Providers — нужный пакет — поддержка SMS
SQLCE — SQL сервер
SQM — Systems Quality Metrics (отчет пользователей о использовании их устройств)
SqlCeMobile — более полноценный SQL сервер (можно заменить им SQLCE, но обычно он не требуется)
SYSTEM_DEFAULT_FONTS — нужный пакет — шрифты для не-арабских билдов (взаимозаменяемо с COMPLEXSCRIPT_FONTS)
Themes — дополнительные темы
Transcriber — распознавание прописных букв (существует не для всех языков)
UNISCRIBE — что-то непонятное, вроде бы распознавание прописных букв для остальных языков
VoiceCommand — голосовое управление
VoIP — VoIP
VoIPOS — VoIP (вторая часть)
Webview — компонент IE 6on6 RenderCore для использования IE системой (для не-арабских билдов)
Webview_CS — компонент IE 6on6 RenderCore для использования IE системой (для арабских билдов)
WelcomeCenter — Welcome Center. Вроде как нужен для справки.
WindowsLive — Windows Live Mobile
WindowsLiveIM — Windows Live Messenger
WMLiveSearchWidget — виджет MS Live Search
WMMoneyWidget — виджет MS Money
WMWeatherWidget — виджет MS Weather
WMWidgets — поддержка виджетов MS Widgets (требует IE 6on6)
WWAN — поддержка WWAN (не используется в билдах для не-коммуникаторов)
Сообщение отредактировал alex — 13.09.10, 20:07
Важные ОЕМ-пакеты (которые нельзя удалять)
OEM_lang -содержит часть языковых файлов устройства, среди которых важнейший initflashfiles.dat(о нем ниже)
OEM_dpi — служебная информация по экрану
OEMMisc (есть не везде)-служебная информация
OEMapps (есть не везде)- ОЕМ-приложения и некоторые драйверы
OEMdrivers — основные системные драйверы и некоторые приложения (если нет OEMapps, все ОЕМ-приложения располагаются здесь)
Примечание: из пакетов можно удалять лишние файлы и модули, некоторые можно установить экспериментально, некоторые уже известны.
Сообщение отредактировал alex — 13.09.10, 20:55
Создание собственного ОЕМ-пакета
С нуля:
Рассматриваемые утилиты: блокнот(или ему подобные текстовые редакторы), OSBuilder(или более узконаправленная утилита DSMbuilder), Initffbuilder.
Мы уже знаем о дсм и ргу файлах, пришло время применить наше знание на практике.
Создаем папку, и называем ее как-нибудь(принято обозначать файловые пакеты PACKAGE_[имя], а реестровые правки REG_[имя])
Создаем 2 пустых текстовых файла[предполагается что отключено скрытие разрешений зарегистрированных типов], название у них должно быть одинаковым, за исключением расширения: у одного оно будет .dsm, у другого .rgu; название должно быть подобрано на основе следующих фактов:
1) название представляет собой 32-разрядный HEX-код
2) общий вид названия XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, где X-16-ричное число(0-f);
3) чем больше код(а этот код ни что иное как число) тем выше порядок обработки;
3) ffffffff-ffff-ffff-ffff-ffffffffff99 принято считать последним обрабатываемым программой сборки.
В файл .rgu можно вносить реестровые правки, полученные путем экспорта ветки реестра с кпк или на основе известных твиков. ВАЖНО: поскольку ргу редактируется блокнотом, не забывайте, что кодировка текста при сохранении должна быть Unicode. Чем больше рассмотренный выше порядок обработки, тем больше шансов, что реестровая правка применится(дело в том что средства сборки собирают реестр в порядке возрастания кода ргу и если встречается аналогичная реестровая правка, происходит безусловная ее замена).
Потом в пакет помещаем файлы, если это необходимо.
Если предполагается внесение изменений в структуру файловой системы(создание ярлыков, папок и т.п.), создается файл initflashfiles.txt. Кодирование правок файловой системы
Если есть Cab-файл с программой:
Рассматриваемая утилита: package creator by ervius и ей подобные
Здесь все просто: открываем утилиту, указываем ей Cab-Файл(open cab) и рядом с ним получаем пакет, при этом галочку про remodule лучше убрать.
Конечно не без нюансов:
-initflashfiles создается в любом случае с тегом end package(даже если указаний на правку файловой системы не заложено)
-нужно проверить пакет на наличие всех необходимых файлов, бывало и такое, что файлы при преобразовании терялись
-нужно переписать дсм, потому что программы сборки посчитают его несоответсвующим
-поскольку cab часто при установке записывает программу в какую-то папку, отличную от windows, при встраивании программы вы получите дубликат в папке windows(В связи с вышеописанными особенностями алгоритма initflashfiles), поэтому протестируйте программу на корректный запуск из папки windows, если запуск происходит некорректно или программа не запускается, подумайте, "а действительно ли вам настолько нужна данная программа, что вы готовы выделить для нее удвоенное количество внутренней памяти?".
Если есть готовый пакет, просто перенесите его в ОЕМ или EXT кухни.
Сообщение отредактировал Lens_flare — 11.01.11, 15:35
Практическое применение пакетов
Замена иконок в меню пуск:
Пакет с иконками лучше создавать с нуля. Допустим мы выкачали пак иконок. Вам повезло, если модифицированные иконки имеют те же имена, что и их оригиналы в windows, в противном случае, имена иконок необходимо брать из папки Base_dpi_[ваш dpi], там же их и нужно сверить. Как только все иконки-заменители приведены в порядок, создаем пакет с ними по вышеуказанным правилам и вшиваем его в прошивку. Если необходимо заменить иконку стороннего приложения(или ОЕМ-приложения) или применить иконку из имеющихся в wm к не предназначенному для нее приложению, используется пакет с реестровыми правками вида
Вшивание твиков реестра/редактирование реестра:
Мы знаем, что файл ргу в пакете отвечает за реестр. Чтобы внести реестровую правку, просто добавьте в ргу необходимые твики и задайте файлу соответствующее порядку сборки имя. Список твиков реестра можно найти в соответствующей теме из шапки.
Сообщение отредактировал Lens_flare — 13.07.11, 14:58
Обычно системные ресурсы представлены в виде модулей; это файлы .mui(языковые ресурсы) , .dll(графика) и .dll.mui(специфическая для данного языка графика) , переведенные в модульный вид.
Чтобы получить файл, произведем reversemod модуля.
Теперь с помощью UnSigner.exe снимем сертификат соответствия, на всякий случай.
Можно открывать файл ресторатором. File->open. в окне увидим структуру ресурсов, которые можно редактировать.
Чтобы заменить какой-либо графический объект , необходимо сделать следующее:
-найти необходимую иконку в файле(как упоминалось выше, это могут быть dll и dll.mui файлы)
-извлечь объект, если необходимо снятие размеров, показателей и прочего(ресторатор-пр.кн.мыши по объекту-извлечь как)
-после редактирования искомого/нахождения готового модифицированного объекта в рестораторе надо всего лишь назначить новый графический объект вместо предыдущего(ресторатор-пр.кн.мыши по объекту-назначить).
Чтобы заменить какой-либо текст в системе , необходимо сделать следующее:
-открыть нужный файл ресторатором(обычно .mui)
-находим нужную строку и редактируем по своему усмотрению
Помните, мы удаляли подпись в начале редактирования? Теперь ее необходимо вернуть.
Порядок подписывания файла:
— signcode
— SdkCerts запускаем на устройстве
-переносимся в прошлое:
——- ставим дату компа на 2009 год
——- ставим .net framework версии 1.0
— запускаем на ББ signcode . Появиться мастер создания цифровой подписи
— Нажимаем далее и в появившимся окне выбираем файл который необходимо подписать
— тип подписи-"особая"
— "выбрать из файла"
выбираем "SDKSamplePrivDeveloper"
— "обзор"
выбираем "SDKSamplePrivDeveloper.pvk"
— Все остальные настройки по умолчанию
Теперь отредактированный файл необходимо привести к исходному виду(т.е. превратить в модуль), для этого проведем его RecMod.
Примеры редактирования модулей:
Хотите, чтобы в сведениях о системе гордо красовался ваш ник?
открывайте shellres.dll.0419.mui и редактируйте диалог 14368 в файле, подобным образом:
Сообщение отредактировал Lens_flare — 16.03.11, 13:31
XIP и способы работы с ним
разборка XIP
Рассматриваемая утилита: XIPPort
В предыдущих разделах мы уже извлекли xip.bin из прошивки.
Чтобы его отредактировать, сделаем дамп с помощью XipPort:
-Запускаем утилиту
-кнопка dump xip.bin
-кнопка make pkgs(возможно возникнет ошибка, в таком случае убедитесь, что версия pkgcommon.dll корректна: если была 5.2, замените на 5.1, если 5.1, замените на 5.2)
Мы получили пакетный dump ядра, рассмотрим его структуру:
— OEMXIPKernel — так называемая девайсозависимая часть, где хранятся основные файлы и модули, необходимые для первичной загрузки устройства
— MSXipKernel — часть от microsoft, содержит различные фильтры для поддержания работы системы
— MSXipKernelLTK — наличие этой части означает возможность апгрейда системы
— LangDB — языковая основа
— wincenls_wwe — редкий пакет но все же встречается — кодовая страница русского и английского; при сборке лучше его перенести в SYS.
Основные файлы и модули, которые нам понадобятся:
— nk.exe — так называемый модуль нативного ядра
— boot.rgu — файл, который пригодится нам при портировании xip/сборке прошивки
Некоторые специфические(работающие не на всех устройствах) усовершенствования XIP
Изменение MainMemoryEndAddress в nk.exe
Как утверждается, RAM увеличивается на 16 мб .
Обязательно наличие официальной прошивки WM6.0 для устройства. Из прошивки необходимо будет взять 2 файла из OEM drivers:
-ddi.dll
-wce_pmem.dll
и заменить ими файлы в текущей прошивке.
в модуле nk.exe находим файл S000, открываем его HEX-редактором, ищем сигнатуру
38459FE530559FE5A13EA0E38224A0E3
и заменяем 82 на 83. Должно получиться нечто вроде этого:
38459FE530559FE5A13EA0E38324A0E3.
Сообщение отредактировал Lens_flare — 05.10.10, 04:40
Рекомендуемые размеры в зависимости от связки кол-во рам-разрешение экрана
64-QVGA 4мб
64-VGA 2мб
128 и выше-[не важно какое] 0мб
Ограничение/отключение програмными средствами
Умельцами написано множество программ, которые меняют размер pagepool автоматически, необходимо только указать им размер, не важно в командной строке или с помощью графического интерфейса.
Ярким примером являются кухни и утилиты от ERvius(EVK), где с помощью простых графических интерфейсов легко и просто изменить PP В прошивке.
Не менее ярким представителем является программа OSBuilder, не самая простая в плане совершения простых действий но самая функциональная. Рассмотрим на его примере изменение pagepool:
Внимание: выбор этого метода привязывает вас к пользованию программой OSBuilder, ибо только она может дальше работать с выданным шаблоном.
-Кнопка с шестеренкой->создать шаблон
-выбираем Nb-файл(или nb0), если прошивка имеет не такой формат, его легко добиться с помощью разборки утилитами класса osnbtool(см. 1 часть)
-в появившемся окне выбираем размер PP в соотв. графе в левом нижнем углу(или ставим нулевой)
-сохраняем шаблон.
Работа в Hex-редакторе Free Hex Editor Neo, на примере патча файла BkEnd.dll для работы 1С:Предприятие 7.7 с Microsoft SQL Server 2008 R2
В данной статье будет рассказано о работе в бесплатном hex-редакторе Free Hex Editor Neo, на примере правки файла BkEnd.dll из поставки 1С:Предприятие 7.7 для корректной работы этой системы с Microsoft SQL Server 2008 R2.
0. Оглавление
1. Немного о hex-редакторах и файлах
Как известно, любой файл, хранясь на жестком диске компьютера, представляет собой последовательность машинных слов — байтов. Байт, в свою очередь, состоит из 8 битов, каждый из которых может принимать значение «0» или «1» , а это означает, что один байт может принимать 2 8 =256 значений в диапазоне от 0 до 255. Число 25610, записанное в шестнадцатеричной системе, является круглым трёхзначным числом — 10016, т. е. для представления любого числа из диапазона 0—255 потребуется не более 2 разрядов. А это значит, что значение каждого байта очень удобно записать двузначным числом в шестнадцатеричной системе счисления.
Hex-редактор (англ. hex-editor) показывает нам файл, так, как его «видит» машина, а именно, последовательностью байтов. Например, открыв файл в редакторе, мы увидим матрицу, состоящую из 16 колонок и числа строк зависящего от размера файла. Каждое значение матрицы соответствует одному байту, записанному двузначным шестнадцатеричным числом. Изменяя значение нужного байта, мы можем, соответственно, изменить сам файл.
Кроме того, рядом с таблицей можем увидеть:

Подробнее о Hex-редакторах можно прочитать здесь.
2. Установка Free Hex Editor Neo
Скачиваем Free Hex Editor Neo с официального сайта. Программа бесплатна, на момент написания статьи последней была версия 5.14. Устанавливаем, следуя инструкциям инсталлятора, не меняя настроек по умолчанию. При первом запуске программа предложит выбрать режим интерфейса. Выбираем «Novice user» , этого более чем достаточно.

3. Работа с файлом hex-редакторе
Теперь откроем файл, который нам необходимо «подправить» выбрав «File» — «Open» — «Open File» в меню Free Hex Editor Neo. В моем случае это файл BkEnd.dll, находящийся в папке с установленной 1С:Предприятие 7.7 (По умолчанию «C:\Program Files\1Cv77\BIN» ) для статьи Установка 1С:Предприятие 7.7 на Microsoft SQL Server 2008 R2.
Например, мне нужно в байт со смещением 000d9cca записать значение eb. Для этого я нахожу строку «000d9cco» и столбец «0a», кликаю два раза по нужной ячейке и забиваю новое значение.

Действуя аналогично, я вношу следующие изменения:
После того, как все изменения сделаны, сохраним файл, нажав «File» — «Save» .
Смотрите также:
В данном вебинаре я расскажу о применяемых в нашей компании правилах и приемах доработки типовых конфигураций 1С для облегчения их дальнейшей поддержки и обновления. В видео использованы материалы…
Официально, платформа 1С:Предприятие 7.7 работает только с MS SQL Server 2000. Но с помощью небольших манипуляций можно организовать стабильную работу и с последней, на момент написания статьи, версий Microsoft SQL…
Небольшая зарисовка на тему, какие были бы сливные трубы, если бы их делали 1С-ники.