FAQ по созданию собственной прошивки



Реп: (350)
FAQ по созданию собственной прошивки
Билды Windows Mobile » | Драйвера и утилиты для редактирования прошивок | Создание и редактирование прошивок - вопросы, проблемы и их решения » | FAQ | Пакеты для кухонь » | Твики реестра | Общение ромоделов 4PDA

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

Внимание: разделы данного FAQ взамосвязаны, для понимания всего процесса, рекомендуется прочтение всего материала.

Если вы желаете добавить информацию в FAQ, просьба написать в этой теме
----
Вся информация и материалы, представленные в данном FAQ'е, являются неофициальными. Авторы и Администрация сайта ответственности за них не несут! Все действия производятся только на Ваш страх и риск!

Сообщение отредактировал Smartecs - 10.12.10, 19:20



Реп: (350)


Сообщение отредактировал Lens_flare - 03.10.10, 15:20



Реп: (350)
Часть первая: разбор прошивки

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

Сообщение отредактировал Lens_flare - 03.10.10, 12:08



Реп: (350)
Формат .bin

Рассматриваемые утилиты: OSNbTool, NBwork.
Чаще всего одного OSNbtool хватает, чтобы разобрать прошивку до imgfs и xip.
Переименовываем прошивку в flash.bin, кладем в папку с OSnbtool и выполняем серию команд (записываются в bat-файл) :
osnbtool -sp flash.bin
osnbtool -sp flash.bin.BIN.NB0
osnbtool -d flash.bin.BIN.NB0.OS.NB 1 xip.bin
osnbtool -d flash.bin.BIN.NB0.OS.NB 2 imgfs.bin

Первыми двумя командами мы получим Nb0 и заголовок, здесь важно запомнить адрес заголовка. Вторыми двумя командами получим Imgfs.bin (билд) и xip.bin (ядро).
Если xip вышел более 4 МБ (или очень маленький imgfs), значит нужно разбирать программой nbwork.
Код для разбора (опять же используем в бат-файле)
nbwork -d flash.bin.BIN.NB0.OS.NB

выполнение этой команды гарантированно разобьет OS на компоненты.

Сообщение отредактировал alex - 13.09.10, 20:42



Реп: (350)
Формат .nbh

Рассматриваемые утилиты 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-файл):
osnbtool -d OS.NB 1 xip.bin
osnbtool -d OS.NB 2 imgfs.bin

Этими командами получим Imgfs.bin (билд) и xip.bin (ядро).
Если xip вышел более 4 мб(или очень маленький imgfs), значит нужно разбирать программой nbwork.
Код для разбора (опять же, используем в бат-файле)
nbwork -d OS.NB

Выполнение этой команды гарантированно разобьет OS на компоненты.

Сообщение отредактировал alex - 13.09.10, 20:41



Реп: (350)
Формат .nb0

Рассматриваемые утилиты:
OSNbTool, NBwork
Чаще всего одного OSNbtool хватает, чтобы разобрать прошивку до imgfs и xip.
Переименовываем прошивку в удобное короткое имя, кладем в папку с OSnbtool и выполняем серию команд (записываются в bat-файл) :
osnbtool -sp [имя прошивки]
osnbtool -d [имя прошивки]OS.NB 1 xip.bin
osnbtool -d [имя прошивки]OS.NB 2 imgfs.bin

Первой командой мы получим Nb и заголовок.Остальными двумя — Imgfs.bin (билд) и xip.bin (ядро).
Если xip вышел более 4 МБ (или очень маленький imgfs), значит нужно разбирать программой nbwork.
Код для разбора (опять же используем в бат-файле)
nbwork -d [имя прошивки].OS.NB

Выполнение этой команды гарантированно разобьет OS на компоненты.

Сообщение отредактировал alex - 13.09.10, 20:40



Реп: (350)
Формат .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



Реп: (350)
Нестандартные форматы (DIP, KDZ, TMP и другие)

Рассматриваемые утилиты: OSNbTool, NBwork, специальные утилиты
Переименовываем прошивку в flash.bin, кладем в папку с OSnbtool и выполняем серию команд (записываются в bat-файл) :
osnbtool -sp flash.bin
osnbtool -sp flash.bin.BIN.NB0
osnbtool -d flash.bin.BIN.NB0.OS.NB 1 xip.bin
osnbtool -d flash.bin.BIN.NB0.OS.NB 2 imgfs.bin

Первыми двумя командами мы получим Nb0 и заголовок, здесь важно запомнить адрес заголовка. Вторыми двумя командами получим Imgfs.bin (билд) и xip.bin (ядро).
Если xip вышел более 4 мб (или очень маленький imgfs), значит нужно разбирать программой nbwork.
Код для разбора (опять же, используем в бат-файле)
nbwork -d flash.bin.BIN.NB0.OS.NB

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

Сообщение отредактировал Catg - 13.09.10, 20:26



Реп: (350)
Разборка билда

Вот мы и разобрали прошивку на составляющие, дело за малым - разобрать билд.
Рассматриваемые утилиты: IMgfstodump by Mamaich или подобная(часто можно увидеть в комплекте imgfs tools), Bepe's PKG tool(чаще всего встречается в комплекте Package tools), OSBuilder.
Первое, что необходимо сделать, положить рядом с утилитой imgfstodump файл imgfs.bin, полученный на предыдущем этапе.
Код для распаковки (чаще всего бат с таким кодом уже приложен рядом с утилитой, в таком случае его нужно просто запустить)
imgfstodump.exe 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



Реп: (350)
Часть вторая: редактирование OS

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

Сообщение отредактировал alex - 13.09.10, 20:16



Реп: (350)
Основные правила

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
Причина редактирования: эпик фэил



Реп: (350)
Список пакетов 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



Реп: (350)
Важные ОЕМ-пакеты (которые нельзя удалять)

OEM_lang -содержит часть языковых файлов устройства, среди которых важнейший initflashfiles.dat(о нем ниже)
OEM_dpi - служебная информация по экрану
OEMMisc (есть не везде)-служебная информация
OEMapps (есть не везде)- ОЕМ-приложения и некоторые драйверы
OEMdrivers - основные системные драйверы и некоторые приложения (если нет OEMapps, все ОЕМ-приложения располагаются здесь)
Примечание: из пакетов можно удалять лишние файлы и модули, некоторые можно установить экспериментально, некоторые уже известны.

Сообщение отредактировал alex - 13.09.10, 20:55



Реп: (350)
Создание собственного ОЕМ-пакета

С нуля:
Рассматриваемые утилиты: блокнот(или ему подобные текстовые редакторы), 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. Кодирование правок файловой системы
Directory("[имя1]"):-Directory("[имя2]") -создание папки имя2 в папке(или по пути) имя1
Directory("[путь копирования файла]"):-File("[имя файла]","[реальный путь до файла+реальное имя файла]")- копирование файла из windows в какую-либо папку с возможностью изменения имени файла

Пример:
Directory("\Program Files"):-Directory("MMS")
Directory("\Program Files\MMS"):-Directory("Smileys")
Directory("\Program Files\MMS\Smileys"):-File("jMMS_01.bmp","\Windows\jMMS_01.bmp")

Подобных примеров много в основном файле Initflashfiles.dat (его редактирование осуществляется по тем же принципам, только с помощью Initffbuilder). Важный момент: как и в случае с rgu, кодировка текста должна быть Unicode. Механизм обработки initflashfiles системой:
  • интерпретируется код
  • проверяется возможность копирования файла (создания директории)
  • если возникла ошибка (неправильное имя файла, не существующий путь и т.п.), строчка игнорируется.
  • из папки Windows (где в итоге оказывается все содержимое ОЕМ и SYS) файл копируется в указанное в коде место в файловой системе.

Теперь, когда все файлы на месте, перемещаем наш пакет в ОЕМ или EXT(зависит от кухни, но чаще всего в ОЕМ) нам нужен любой дсм-креатор(DSMbuilder, OSBuilder), с помощью него нужно открыть наш пустой дсм и наполнить его содержимым. Рассмотрим на примере OSBuilder:
-должен быть включен показ несгрупированных пакетов
-выбираем ОЕМ или EXT, находим пакет по имени, правой кнопкой мыши-DSM пакета
-OSBuilder предложит создать дсм-создаем и сохраняем.
-в дальнейшем программа сборки(по крайней мере OSbuilder точно) сама переформирует дсм в согласовании со списком файлов и другими важными моментами.

Если есть 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



Реп: (350)
Практическое применение пакетов

Замена иконок в меню пуск:
Пакет с иконками лучше создавать с нуля. Допустим мы выкачали пак иконок. Вам повезло, если модифицированные иконки имеют те же имена, что и их оригиналы в windows, в противном случае, имена иконок необходимо брать из папки Base_dpi_[ваш dpi], там же их и нужно сверить. Как только все иконки-заменители приведены в порядок, создаем пакет с ними по вышеуказанным правилам и вшиваем его в прошивку. Если необходимо заменить иконку стороннего приложения(или ОЕМ-приложения) или применить иконку из имеющихся в wm к не предназначенному для нее приложению, используется пакет с реестровыми правками вида
[HKEY_LOCAL_MACHINE\Security\Shell\StartInfo\Start\[точное имя ярлыка из initflashfiles]]
"Icon"="\\Windows\\[точное имя иконки]"

Замена иконки папки в том же меню пуск:
[HKEY_LOCAL_MACHINE\Security\Shell\StartInfo\Start\[точное имя папки из initflashfiles]]
"Icon"="\\Windows\\[точное имя иконки]"


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

Сообщение отредактировал Lens_flare - 13.07.11, 14:58



Реп: (350)
Модули и что с ними можно сделать
Прозрачные бары в WM 6.1/6.5/6.5.X:
Рассматриваемая утилита: HEX-редактор(WinHex, TinyHexer и им подобные)
Берём любой HEX редактор, открываем файл S001 из модуля shell32.exe(из пакета Shell в SYS).
Воспользуемся поиском по 16-ричным данным(обычно функцию поиска представляет команда Find HEX) сигнатуры FF000000FFFFFFFF
Выделенное жирным ничто иное, как степень прозрачности.
Находится она по адресу 0x9A0, изменяя FF на 80 получим полупрозрачный бар. Изменив ее на 00,получим полностью прозрачный бар.
Для регулировки прозрачности нижнего бара правим файл S001 из модуля aygshell.dll(из пакета Shell в SYS). Выполняем подобные предыдущему действия, только теперь строка с значением будет находиться по адресу 0x750.
Перевод/замена ресурсов системы:
Рассматриваемая утилита: Restorator
Внимание! Было выявлено несколько случаев, когда, после установки Restorator, переставали запускаться другие программы. В этом случае добавляем в реестр ББ:
REGEDIT4

[HKEY_CLASSES_ROOT\.exe]
@="exefile"
"Content Type"="application/x-msdownload"

[HKEY_CLASSES_ROOT\.exe\PersistentHandler]
@="{098f2470-bae0-11cd-b579-08002b30bfeb}"

Обычно системные ресурсы представлены в виде модулей; это файлы .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 в файле, подобным образом:
14368 DIALOG 0, 15, 196, 145
STYLE DS_SETFONT | DS_CONTROL | WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS
FONT 8, "Tahoma"
{
LTEXT "", 563, 4, 3, 150, 18
LTEXT "ОС", 564, 4, 20, 150, 9
LTEXT "© Корпорация Майкрософт, 2009.", 565, 6, 28, 150, 9
LTEXT "Все права защищены.", 579, 4, 36, 124, 9
LTEXT "Программа защищена законами об авторских правах в США и других странах.", 566, 4, 46, 150, 26
RTEXT "Процессор:", 568, 1, 73, 63, 9
LTEXT "", 569, 66, 72, 120, 10
RTEXT "Память:", 570, 1, 82, 63, 9
LTEXT "", 571, 66, 81, 120, 9
RTEXT "Гнездо расшир.:", 572, 1, 91, 63, 9
LTEXT "не используется", 573, 66, 91, 120, 9
RTEXT "Автор сборки:", 574, 1, 102, 63, 9
LTEXT "[ваш ник]", 575, 66, 102, 120, 9
}


Сообщение отредактировал Lens_flare - 16.03.11, 13:31



Реп: (350)
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



Реп: (350)
Портирование/пересборка XIP вручную
Рассматриваемые утилиты: XIPPort, OSBuilder, m'reloc, m'reloc nk.exe
Итак, на предыдущем шаге мы разобрали наше ядро.
Портирование - шаг, необходимый для замены ядра системы на более новое(т.н. смена билда ядра)
или системы на более новую. Будем называть ядро официальной прошивки родным, а ядро, которое хотим портировать, донорным.
Чтобы произвести портирование вручную, необходимо выполнить следующие шаги:
-Создать структуру папок: создать папку ROM в ней папки NK и DONOR, в папки скопировать ядра(в NK родное, в DONOR соотв. донорное) и xipport+pkgcommon.
-сделать dump обоих ядер, донорского и родного с помощью XIPPort(см. разборка XIP)
-скопировать родное ядро в новую папку(например Port)
-удалить MSXipKerneL И MSXipKerneLLTK из дампа ядра в папке Port
-перенести MSXipKerneL И MSXipKerneLLTK из дампа донора в дамп ядра из папки Port
-воспользоваться M'reloc для полуавтоматического размещения модулей в адресном пространстве(в обоих ксипах[родном и портированном] запускаем ее и сравниваем каждый адрес, если есть несовпадение, правим адрес портированного и нажимаем do it и так с каждым модулем, для сравнения nk.exe и некоторых других применяем m'reloc nk.exe).
-скопировать XipPort в папку Port, запустить и нажать след. комбинацию: undo->Realloc P->Write maps->make xip_new.bin.
полученный xip_new.bin и есть потрированное ядро, которое можно вшивать в систему.
Замечание: данный алгоритм универсален для всех устройств, однако при портировании Wm 6.x на родную wm 5, необходима модификация OEMXiPKernel части при помощи патчей nk.exe от BePe, при его открытии нужно лишь выбрать модуль nk.exe или само ядро xip.bin.
Иногда ОЕМ-производитель устройства производит так называемый регион-лок, защищая систему от модификации. Для его снятия есть специальный patcher - RegionLockPatcher, применяется он аналогично другим патчам nk.
Пересборка xip:
Освобождения дополнительной оперативной памяти и максимальной производительности можно достичь, правильно пересобрав ядро прошивки.
варианты пересборки(можно комбинировать)
-удаление лишних модулей
В системах на основе 6.x возможно увеличить RAM, удалив лишние модули, такие как:
-zbmui.nb0
-bmui.nb0
-hd.dll
-kd.dll
-mencfilt.dll
-OsaXst0.dll
-OsaXst1.dll
-encfilt.dll
-relfsd.dll
это в основном фильтры, которые на протяжении всей деятельности устройства практически бездействуют, занимая драгоценную оперативную память.
-отключение сертификатов на уровне ядра
Данное действие позволяет устанавливать приложения, которые ранее были помечены системой как не предназначенные для нее. Осуществляется програмкой Certpatcher.
-замена модулей более производительными
Например модуль cecompr.dll можно заменить на такой же с поддержкой LZX, что позволяет уменьшить размер прошивки, но при этом замедлить скорость загрузки системы.
-добавление новых модулей
EXtendir
фильтр системы, с помощью которого можно ускорить ее по некоторым данным в 10-12 раз. Это достигается за счет более корректного управления системой.
Сам модуль возможно в xip и не интегрируется(тогда придется применять как ОЕМ-пакет), но модификация ядра для него все же понадобится.
Модифицируем boot.rgu из xip(путем дописывания строк)
[HKEY_LOCAL_MACHINE\System\StorageManager\filters\Extendir]
"Order"=dword:0
[HKEY_LOCAL_MACHINE\System\StorageManager\FATFS\filters\Extendir]
"Dll"="Extendir.dll"
"Order"=dword:0

не забудьте скомпилировать boot.hv(хотя некоторые кухни делают это автоматически)
-изменение PagePOol(коротко PP или ПП)
PagePool-участок оперативной памяти, в который первоначально подгружаются данные из ROM.
Соответственно он эту память занимает. Чтобы ограничить его или убрать вовсе есть несколько методов:
Ограничение/отключение вручную
подойдет любой HEX-редактор, нужно лишь знать сигнатуру(участок HEX-кода, указывающий на положение PP), после ее нахождения(обычно нужно повторить поиск),
слева должен быть участок кода, подобный этому
00 00 00 00 FF 00 00 00 00

распространенные размеры ПП: 20-2мб 40-4мб 80-8мб FF-15 мб
Чтобы отключить PP нужно все байты заполнить F:
FF FF FF FF FF FF FF FF FF

Рекомендуемые размеры в зависимости от связки кол-во рам-разрешение экрана
64-QVGA 4мб
64-VGA 2мб
128 и выше-[не важно какое] 0мб
Ограничение/отключение програмными средствами
Умельцами написано множество программ, которые меняют размер pagepool автоматически, необходимо только указать им размер, не важно в командной строке или с помощью графического интерфейса.
Ярким примером являются кухни и утилиты от ERvius(EVK), где с помощью простых графических интерфейсов легко и просто изменить PP В прошивке.
Не менее ярким представителем является программа OSBuilder, не самая простая в плане совершения простых действий но самая функциональная. Рассмотрим на его примере изменение pagepool:
Внимание: выбор этого метода привязывает вас к пользованию программой OSBuilder, ибо только она может дальше работать с выданным шаблоном.
-Кнопка с шестеренкой->создать шаблон
-выбираем Nb-файл(или nb0), если прошивка имеет не такой формат, его легко добиться с помощью разборки утилитами класса osnbtool(см. 1 часть)
-в появившемся окне выбираем размер PP в соотв. графе в левом нижнем углу(или ставим нулевой)
-сохраняем шаблон.

Сообщение отредактировал Lens_flare - 08.06.11, 05:14



Реп: (350)
Автоматическое портирование XIP
Рассматриваемые утилиты: XipKitchen, EXTreloc, OSBuilder
Существует множество утилит с автоматическим или полуавтоматическим методом портирования XIP,
все они так или иначе завязаны на алгоритме, разобранном в предыдущей подчасти.
XipKitchen
утилита, имеющая за собой опыт портирования ядер старых устройств. Ее графический интерфейс довольно прост и содержит только кнопки.
нажатие на них со знанием алгоритма(который описан в предыдущей подчасти) дает отличный результат.
Build_xip(на основе EXTReloc)
Более продвинутая утилита, которая умеет работать практически с любыми ядрами.
Размещаем в папках XIP_DONOR и XIP_DEVICE соответствующие ядра и запускаем Build_xip.bat.
Желательно наличие SYS с .VM и .ROM внутри, поскольку происходит их коррекция по данным XIP.
OSBuilder
Наш старый знакомый и не такое умеет :D
Для того чтобы портировать xip с ним, нужно создать структуру папок OEM SYS и ROM.
в SYS должен быть корректный пакет metadata, в ROM - xip.bin с устройства, папка XIP с boot.rgu внутри(помните, в предыдущем разделе говорилось, что он еще понадобится?) и папка DONOR с донорным ядром.
Подготовка к портированию:
-настройки->сборка xip
-выбираем "файл xip.bin в папке Donor" или "файлы и модули в папке Donor" в зависимости от того, предоставляет ли билд файл bin или только файлы и модули MSXip
-путь к донору прописываем так: ".\ROM\DONOR"
-выставляем галочки "портировать MSXiPKernel" и "портировать MSXiPKernelLTK"
-в случае редактирования boot.rgu, необходимо отметить "компилировать boot.hv"
-дыру в слоте 0, секцию reloc удаляем только в специфических случаях-нужно отключить, а вот секции ramstart запретить двигать надо.
в принципе можно приступать к портированию(закрыть настройки->кнопка с шестренкой->портировать xip), но у билдера есть возможность автоматической пересборки xip, с удалением модулей и заменой.
Напомню, ранее мы уже рассматривали эту модификацию ядра, теперь это легко проделать с помощью OSBuilder.

Сообщение отредактировал Lens_flare - 02.10.10, 15:28



Реп: (350)
User Customize или установка софта после Hard Reset
Специально для аппаратов ETEN/Acer
Это возможно единственные аппараты, в которых EXTrom(специальный раздел ROM, хранящий установщики программ и некоторую служебную информацию) можно отредактировать в явном виде при помощи спец. утилит.
Когда мы разбирали прошивку кухней KVA, в папке ROM создавалась папка EXTrom. В нее можно добавлять различные Cab-файлы по следующим правилам:
-имя каждого такого cab-а должен начинаться с префикса PREI_
-имя обязательно должно быть прописано хотя бы в файле filesinfo.txt
Для того, чтобы файл был распознан системой под кратким именем , необходимо внести код в файл OEM.XML после
<characteristic type="Registry">

код имеет вид:
<characteristic type="HKLM\ControlPanel\ACER\OemCustomization">
<parm name="[ИМЯ CAB-файла]" value="[Короткое имя]" datatype="string" />
</characteristic>

Например:
<characteristic type="HKLM\ControlPanel\ACER\OemCustomization">
<parm name="PREI_GPRSWIZARD.RUS.CAB" value="GPRS Wizard" datatype="string" />
</characteristic>

Для того, чтобы была возможность контролировать, предустанавливать cab, или дать пользователю выбор при установке, необходимо внести код в файл OPTIONALAP.XML после
<characteristic type="Registry">

код имеет вид:
<characteristic type="HKLM\ControlPanel\Acer\OemCustomization\CabProperty">
<parm name="[ИМЯ CAB-файла]" value="[0-на выбор пользователя,1-безусловная установка]" datatype="integer"/>
</characteristic>

Например:
<characteristic type="HKLM\ControlPanel\Acer\OemCustomization\CabProperty">
<parm name="PREI_GPRSWIZARD.RUS.CAB" value="0" datatype="integer"/>
</characteristic>


Сообщение отредактировал Lens_flare - 01.10.10, 18:54



Реп: (350)
Кастомизация с помощью изменения родного EXTRom
Если для вашего устройства возможно конвертировать extrom-раздел в файлы, то такой раздел говорят подлежит кастомизации. Процесс разборки extra-раздела индивидуален и сводится к применению различных ROM extractor-ов.
Например HTC ROM Image editor позволяет извлекать EXTROM-файлы и config.txt, в который они прописыватся(вспоминаем KVA) и соответственно добавлять новые.
Самый простой случай-extrom представлен в явном или полуявном виде и может быть скачан отдельно, например как у старых аппаратов gigabyte gsmart.
Редактирование EXTrom - добавление/удаление файлов в раздел и последующая его сборка, чаще всего все файлы прописываются автоматически и исполняются программой установки в алфавитном порядке.

Сообщение отредактировал Lens_flare - 03.10.10, 08:35


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 29.03.24, 10:42