IPB

Здравствуйте, гость ( Вход | Регистрация )

Форум перемещен на новый домен: forum.pda2u.ru - исправьте, пожалуйста, свои ссылки
 
 
Ответить в данную темуНачать новую тему
> Сборка, разборка и анализ CAB-файлов, Технологии, инструменты и хитрости
AGC
сообщение 23.1.2008, 22:00
Сообщение #1


PDA2U.RU Team
****

Группа: Admin
Сообщений: 4884
Регистрация: 25.11.2007
Из: СПб
Пользователь №: 32
Спасибо сказали: 1657 раз(а)

Девайс:RW6815/P320/Diamond


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

Прикладываю два основных инструмента для "мелкой" работы с кабами:
1. MSCEInf - анализ и разборка кабов
2. CabArc - MS Cabinet Tool

Вместо CabArc я обычно использую встроенную работу с кабами в FreeCommander. Более удобно для извлечения, добавления и замены файлов.
Прикрепленные файлы
Прикрепленный файл  WinCE_CAB_Analyser_MSCEInf.zip ( 562.38 килобайт ) Кол-во скачиваний: 172
Прикрепленный файл  cabarc.zip ( 35.64 килобайт ) Кол-во скачиваний: 126
 
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
AGC
сообщение 23.1.2008, 22:12
Сообщение #2


PDA2U.RU Team
****

Группа: Admin
Сообщений: 4884
Регистрация: 25.11.2007
Из: СПб
Пользователь №: 32
Спасибо сказали: 1657 раз(а)

Девайс:RW6815/P320/Diamond


Быстрое "добавление" файлов 0419 MUI в кабы (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Технология быстрой "адаптации" кабов с 0409 MUI для 0419 MUI:

1. Берем каб с файлами 0409 MUI
2. Открываем его в FreeCommander (либо используем другие средства)
3. Копируем в любое место _setup.xml
4. Открываем вытащенный _setup.xml в Блокноте (или любом другом текстовом редакторе)
5. Ищем в тексте подстроку 0409, копируем в буфер обмена все между началом тега <characteristic... слева от 0409 до соответствующего ему закрывающего тега </characteristic>.

Будет что-то типа:
<characteristic type="AudioManager.exe.0409.mui" translation="install"><characteristic type="Extract"><parm name="Source" value="AUDIOM~1.002" /><parm name="WarnIfSkip" /></characteristic></characteristic>

6. Вставляем скопированный кусок сразу после закрывающего тега </characteristic> (откуда копировали в буфер). Правим во втором новом блоке 0409 на 0419.

Будет что-то типа:
<characteristic type="AudioManager.exe.0419.mui" translation="install"><characteristic type="Extract"><parm name="Source" value="AUDIOM~1.002" /><parm name="WarnIfSkip" /></characteristic></characteristic>

7. Повторяем операции 5-6 пока не кончаться файлы MUI.
8. Заменяем оригинальный _setup.xml в кабе на отредактированный.

Все. Каб готов к использованию и под 0409 и под 0419 MUI.


P.S. Если 0409 не нужно, то просто правим на 0419 (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif)


Спасибо сказали:
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
ArHon
сообщение 7.3.2008, 11:16
Сообщение #3


PDA2U.RU Team
****

Группа: Друзья PDA-Hack
Сообщений: 396
Регистрация: 24.11.2007
Из: Р.Татарстан, г.Набережные Челны
Пользователь №: 28
Спасибо сказали: 129 раз(а)

Девайс:HP iPAQ rw6815


Хочу поделиться результатом расковыривания файлов *.000, содержащих информацию о кабе, структура выяснена не полностью, но достаточно для извлечения файлов. Опишу на основе программы RumusMobile. Итак, вот содержимое файла 000:
CODE
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F

00000000 4D 53 43 45 00 00 00 00 70 01 00 00 00 00 00 00 MSCE....p.......
00000010 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ................
00000020 05 00 00 00 63 00 00 00 00 00 00 00 00 00 00 E0 ....c..........а
00000030 05 00 03 00 05 00 00 00 00 00 01 00 80 00 00 00 ............Ђ...
00000040 D8 00 00 00 F2 00 00 00 62 01 00 00 62 01 00 00 Ш...т...b...b...
00000050 62 01 00 00 64 00 10 00 74 00 0C 00 80 00 00 00 b...d...t...Ђ...
00000060 00 00 00 00 52 75 6D 75 73 20 4D 6F 62 69 6C 65 ....Rumus Mobile
00000070 00 00 00 00 46 6F 72 65 78 20 43 6C 75 62 00 00 ....Forex Club..
00000080 01 00 14 00 25 43 45 31 25 5C 52 75 6D 75 73 20 ....%CE1%\Rumus
00000090 4D 6F 62 69 6C 65 00 00 02 00 08 00 25 43 45 32 Mobile......%CE2
000000A0 25 00 00 00 03 00 0C 00 53 74 61 72 74 20 4D 65 %.......Start Me
000000B0 6E 75 00 00 04 00 08 00 25 43 45 31 37 25 00 00 nu......%CE17%..
000000C0 05 00 14 00 52 75 6D 75 73 20 4D 6F 62 69 6C 65 ....Rumus Mobile
000000D0 2E 6C 6E 6B 00 00 00 00 02 00 06 00 02 00 03 00 .lnk............
000000E0 00 00 03 00 04 00 01 00 00 00 04 00 04 00 04 00 ................
000000F0 00 00 01 00 03 00 01 00 00 00 00 00 08 00 65 6E ..............en
00000100 67 2E 78 6D 6C 00 02 00 03 00 02 00 00 00 00 00 g.xml...........
00000110 08 00 63 68 6E 2E 78 6D 6C 00 03 00 03 00 03 00 ..chn.xml.......
00000120 00 00 00 00 08 00 72 75 73 2E 78 6D 6C 00 04 00 ......rus.xml...
00000130 03 00 04 00 00 00 00 00 0C 00 63 6F 6E 66 69 67 ..........config
00000140 2E 78 6D 6C 00 00 05 00 03 00 05 00 00 00 00 00 .xml............
00000150 10 00 52 75 6D 75 73 4D 6F 62 69 6C 65 2E 65 78 ..RumusMobile.ex
00000160 65 00 01 00 00 00 11 00 05 00 01 00 02 00 05 00 e...............


0x0000 - 0x0003: Признак каба - MSCE
0x0008 - 0x000B: Длина файла
0x0018 - 0x001F: Минимальная версия WM (0x0018-0x001B - цифра до точки, 0x001C-0x001F - цифра после точки)
0x0020 - 0x0027: Максимальная версия WM
0x0030 - 0x0031: Количество "Каталогов", будет разъяснено позже
0x0032 - 0x0033: Количество "Путей"
0x0034 - 0x0035: Количество файлов
0x0036 - 0x0037: Количество ключей реестра
0x0038 - 0x0039: Количество значений реестра
0x003A - 0x003B: Количество ярлыков
0x003C - 0x003F: Смещение начала блока "Каталогов"
0x0040 - 0x0043: Смещение начала блока "Путей"
0x0044 - 0x0047: Смещение начала блока файлов
0x0048 - 0x004B: Смещение начала блока ключей реестра
0x004C - 0x004F: Смещение начала блока значений реестра
0x0050 - 0x0053: Смещение начала блока ярлыков
0x0054 - 0x0055: Смещение названия приложения
0x0056 - 0x0057: Длина названия приложения
0x0058 - 0x0059: Смещение названия компании
0x005A - 0x005B: Длина названия компании

Теперь что такое "Каталоги". Это каталоги установки, ключи реестра и названия ярлыков - все в куче. В блоке каталогов хранятся отдельные элементы деревьев ("путей"), т.е. для Windows\Start Menu\Programs здесь будет 3 значения: Windows, Start Menu и Programs соответственно. Аналогично для ключей реестра. Ярлыки же хранятся просто Rumus mobile.lnk. Теперь структура этого блока:
off:00-01 - Номер "каталога"
off:02-03 - Длина "каталога"
off:04-xx - Название каталога
потом опять номер, длина, название и так далее...

Теперь блок "путей". Это как раз деревья, составленные из "каталогов".
off:00-01 - номер "пути", обратите внимание, что порядок нумерации может быть совершенно произвольный, не стоит думать, что они будут идти подряд
off:02-03 - длина "пути" в байтах! Обратите внимание, что длина указывается в байтах, хотя считываются двухбайтные значения!
off:04 и дальше двухбайтные коды "каталогов", заканчивающиеся нулевым значением, т.е. к примеру \0x0001\0x0006\0x0000 означает дерево из "каталога" 1, подкаталог в нем 6
потом опять номер, длина и т.д.

Блок файлов.
off:00-01 - номер файла
off:02-03 - номер "пути" файла из предыдущего блока
off:04-09 - параметры файла типа можно ли пропускать, заменять ли и т.п., с ними не разбирался
off:10-11 - длина имени файла (вернее количество байт, оставшихся до следующего файла, начиная со смещения 12. Это важно, т.к. иногда имя файла короче, чем указано в этом параметре и остаток заполнен нулями, которые считывать нам не нужно, их нужно пропускать)
off:12-xx - имя файла
следующий файл

Блок ключей реестра.
off:00-01 - номер ключа
off:02-03 - номер кода родительской ветки (1 - HKEY_CLASSES_ROOT, 2 - HKEY_CURRENT_USER и т.д.)
off:04-05 - длина оставшегося блока
off:06-xx - коды блока "каталогов", принцип такой же как у блока путей

Блок значений реестра.
off:00-01 - номер значения
off:02-03 - номер ключа реестра из предыдущей секции
off:04-05 - ??
off:06-09 - тип значения (0x00000000 - строковое, 0x00000001 - бинарное, 0x00010001 - DWORD)
off:10-11 - длина
off:12 - xx далее идет имя параметра, заканчивающееся кодом '\0', после чего идет значение
потом все по новой

Блок ярлыков.
off:00-01 - номер
off:02-03 - код "пути", если он отличается от стандартного, иначе 0
off:04-05 - номер стандартного расположения, соответствует коду после %CE, т.е. %CE11% - Windows\Start Menu\Programs, будет записано 0x000B
off:06-07 - код файла
off:08-11 - ??
off:12-13 - код "каталога", содержащего имя ярлыка

уф, вроде все. Информация неполная, наковыренная вручную, так что дополнения приветствуются (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif)


Спасибо сказали:
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Medush
сообщение 20.4.2008, 1:10
Сообщение #4


Опытный реаниматор
****

Группа: Разработчики
Сообщений: 178
Регистрация: 27.11.2007
Из: Moscow
Пользователь №: 34
Спасибо сказали: 87 раз(а)

Девайс:O2 XDA FLAME


А чем плох WinCe Cab Manager?
Я пользуюсь им (CeCabMgr_2.1.035) - все наглядно и удобно. Не открывает некоторые кабы, но это больше исключение из правил...
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Old Kind MadMike
сообщение 20.4.2008, 18:13
Сообщение #5


PDA2U.RU Team
****

Группа: Admin
Сообщений: 1806
Регистрация: 20.10.2007
Из: Moscow
Пользователь №: 11
Спасибо сказали: 172 раз(а)

Девайс:Samsung Galaxy Ace


Цитата
А чем плох WinCe Cab Manager?

Под смарты у меня с ним были проблемы с созданием пакетов, где файлы копируются больше чем в одну папку.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Medush
сообщение 28.5.2008, 21:33
Сообщение #6


Опытный реаниматор
****

Группа: Разработчики
Сообщений: 178
Регистрация: 27.11.2007
Из: Moscow
Пользователь №: 34
Спасибо сказали: 87 раз(а)

Девайс:O2 XDA FLAME


Раз уж подняли тему, есть ряд вопросов по созданию/редактированию кабов.

1. беру 2 файла dll из другой машинки - делаю каб (заменяет оригиналы на мои файлы в \windows). Далее их надо подписать. Расковырял Cert.cab. Внутри setup.xml, вытащил. Как теперь мне заставить отработать его ПОСЛЕ того как файлы будут подменены? В WinCe Cab Manager есть поля pre-xml и post-xml. Если я все содержимое setup.xml (из Cert.cab) вставлю в поле post-xml - будет мне счастье?

2. В некоторых кабах есть файл setup.dll. Он ведет диалог с пользователем и выполняет всяческие функции. Как и на чем его писать? он автоматически запускается находясь внутри каба?

3. Как выполнить авто-перезагрузку девайса после установки?

4. Возможно ли разместить каб внутри каба и установить его в ходе установки моего, родителя так сказать? Ответ заранее да ( для примера PocketInfotmant), но как это сделать, да чтобы еще и установка прошла в какой-либо нужный мне момент времени?
Перейти в начало страницы
Вставить ник
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 29.3.2020, 19:08

Rambler's Top100 Яндекс.Метрика