IPB

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

Форум перемещен на новый домен: forum.pda2u.ru - исправьте, пожалуйста, свои ссылки
> Разбираем XIP
BigMike
сообщение 15.11.2007, 0:02
Сообщение #1


PDA2U.RU Team
****

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

Девайс:Samsung Galaxy Ace


В приложении роверовский XIP (любезно выковырянный k0ster'ом) и утилиты для ковыряния.
При распаковке этого XIP сталкиваюсь с проблемой: не могу построить карту (write map). Обращался к k0ster'у - у того карта строится.
Попробуйте, строится ли карта у вас?

Сообщение отредактировал BigMike - 18.11.2007, 23:48
Прикрепленные файлы
Прикрепленный файл  rover_xip.zip ( 1.1 мегабайт ) Кол-во скачиваний: 119
 
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
 
Начать новую тему
Ответов
AGC
сообщение 3.1.2008, 5:35
Сообщение #2


PDA2U.RU Team
****

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

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


Портирование ядра ОС из XIP WM6 ATOM/ATOM EXEC на аппаратное ядро из XIP WM5 RW6815 и других собратьев
По сути вся технология описана в предыдущих сообщениях, ниже просто постарался изложить как то более системно и детально конкретные действия, да добавил небольшие общие комментарии (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif)

1. Берем diskimage_Ver.nb0 от оригинальной WM5 WWE целевого устройства (если берется локализованная прошивка, то в дальнейшем нужно, видимо, будет править boot.rgu перед сборкой XIP на предмет замены локалей для русской 0419 на 0409, если донор WM6 WWE).

2. Вырезаем из нее XIP в виде блока 180000-53FFFF и сохраняем как xip.bin в папку для разборки.

3. Разбираем XIP с помощью XIPPort ("dump xip.bin" и затем "write maps").

4. Аналогичным образом берем diskimage_Ver.nb0 от прошивки-донора ОС WM6 ATOM/ATOM EXEC, вырезаем из нее XIP и разбираем в другую папку.

5. Из подпапки Out/Modules разобранного XIP WM5 сразу удаляем отладочные hd.dll и osaxst0.dll (удаляем папки и соответствующие текстовые файлы). Они не нужны.

6. В XIPPort WM6 генерируем пакеты ("make pkgs").

7. Из XIP WM6 из подпапок MSXIPKernel и MSXIPKernelLTK папки Out/Files переносим с заменой все файлы ОС WM6 в подпапку Out/Files WM5 (все файлы и папки).

8. Из XIP WM6 из подпапок MSXIPKernel и MSXIPKernelLTK папки Out/Modules переносим с заменой все файлы ОС WM6 в подпапку Out/Modules WM5 (все файлы и папки). Для RW6815 MSXIPKernelLTK была пустая.

9. Открываем сгенерированные ранее map.txt от WM5 и WM6. Смотрим секцию "Start: first DLL address - End: last DLL address" и следующую сразу за ней до "Start: start of RAM". Они должны быть просто полностью идентичны приведенным ниже.
CODE
RW6815 WM5 WWE
~~~~~~~~~~~~~~
00000000 - 01f901fd L01f901fd NUL

01f901fd - 01f901fd L00000000 Start: first DLL address
01f901fd - 01fd3000 L00042e03 NUL
01fd3000 - 01fd4000 L00001000 initialized data of region_1 ceddk.dll
01fd4000 - 01fe3000 L0000f000 initialized data of region_1 TrueFFS.dll
01fe3000 - 01fe4000 L00001000 initialized data of region_2 cecompr.dll
01fe4000 - 01ff1000 L0000d000 initialized data of region_1 stratad_intel_l.dll
01ff1000 - 01ff2000 L00001000 initialized data of region_1 devmgr.dll
01ff2000 - 01ff3000 L00001000 initialized data of region_1 busenum.dll
01ff3000 - 01ff4000 L00001000 initialized data of region_1 mspart.dll
01ff4000 - 01ff5000 L00001000 initialized data of region_1 regenum.dll
01ff5000 - 01ff6000 L00001000 initialized data of region_1 imgfs.dll
01ff6000 - 01ff7000 L00001000 initialized data of region_1 fatfsd.dll
01ff7000 - 01ff9000 L00002000 initialized data of region_1 crypt32.dll
01ff9000 - 01ffa000 L00001000 initialized data of region_1 pm.dll
01ffa000 - 01ffb000 L00001000 initialized data of region_1 fatutil.dll
01ffb000 - 01ffc000 L00001000 initialized data of region_1 fsreplxfilt.dll
01ffc000 - 01ffd000 L00001000 initialized data of region_1 diskcache.dll
01ffd000 - 01ffe000 L00001000 initialized data of region_1 fsdmgr.dll
01ffe000 - 01fff000 L00001000 initialized data of region_1 certmod.dll
01fff000 - 02000000 L00001000 initialized data of region_1 coredll.dll
02000000 - 02000000 L00000000 End: last DLL address

02000000 - 03d70000 L01d70000 NUL
03d70000 - 03d76000 L00006000 Virtual base address of ceddk.dll
03d76000 - 03d80000 L0000a000 NUL
03d80000 - 03dcc000 L0004c000 Virtual base address of TrueFFS.dll
03dcc000 - 03dd0000 L00004000 NUL
03dd0000 - 03dd7000 L00007000 Virtual base address of cecompr.dll
03dd7000 - 03de0000 L00009000 NUL
03de0000 - 03df6000 L00016000 Virtual base address of stratad_intel_l.dll
03df6000 - 03e00000 L0000a000 NUL
03e00000 - 03e0c000 L0000c000 Virtual base address of devmgr.dll
03e0c000 - 03e10000 L00004000 NUL
03e10000 - 03e16000 L00006000 Virtual base address of busenum.dll
03e16000 - 03e20000 L0000a000 NUL
03e20000 - 03e28000 L00008000 Virtual base address of mspart.dll
03e28000 - 03e30000 L00008000 NUL
03e30000 - 03e34000 L00004000 Virtual base address of regenum.dll
03e34000 - 03e40000 L0000c000 NUL
03e40000 - 03e4a000 L0000a000 Virtual base address of imgfs.dll
03e4a000 - 03e50000 L00006000 NUL
03e50000 - 03e63000 L00013000 Virtual base address of fatfsd.dll
03e63000 - 03e70000 L0000d000 NUL
03e70000 - 03ee2000 L00072000 Virtual base address of crypt32.dll
03ee2000 - 03ef0000 L0000e000 NUL
03ef0000 - 03efd000 L0000d000 Virtual base address of pm.dll
03efd000 - 03f00000 L00003000 NUL
03f00000 - 03f09000 L00009000 Virtual base address of fatutil.dll
03f09000 - 03f10000 L00007000 NUL
03f10000 - 03f19000 L00009000 Virtual base address of fsreplxfilt.dll
03f19000 - 03f20000 L00007000 NUL
03f20000 - 03f25000 L00005000 Virtual base address of diskcache.dll
03f25000 - 03f30000 L0000b000 NUL
03f30000 - 03f45000 L00015000 Virtual base address of fsdmgr.dll
03f45000 - 03f50000 L0000b000 NUL
03f50000 - 03f5b000 L0000b000 Virtual base address of certmod.dll
03f5b000 - 03f60000 L00005000 NUL
03f60000 - 03ff5000 L00095000 Virtual base address of coredll.dll
03ff5000 - 80580000 L7c58b000 NUL
...


CODE
ATOM EXEC TRED RC3
~~~~~~~~~~~~~~~~~~
00000000 - 01f901fd L01f901fd NUL

01f901fd - 01f901fd L00000000 Start: first DLL address
01f901fd - 01fd1000 L00040e03 NUL
01fd1000 - 01fd2000 L00001000 initialized data of region_1 ceddk.dll
01fd2000 - 01fe1000 L0000f000 initialized data of region_1 TrueFFS.dll
01fe1000 - 01fe2000 L00001000 initialized data of region_2 cecompr.dll
01fe2000 - 01fef000 L0000d000 initialized data of region_1 stratad_intel_l.dll
01fef000 - 01ff0000 L00001000 initialized data of region_1 regenum.dll
01ff0000 - 01ff1000 L00001000 initialized data of region_1 pm.dll
01ff1000 - 01ff2000 L00001000 initialized data of region_1 mspart.dll
01ff2000 - 01ff3000 L00001000 initialized data of region_1 imgfs.dll
01ff3000 - 01ff4000 L00001000 initialized data of region_1 fsreplxfilt.dll
01ff4000 - 01ff5000 L00001000 initialized data of region_1 fsdmgr.dll
01ff5000 - 01ff6000 L00001000 initialized data of region_1 fatutil.dll
01ff6000 - 01ff7000 L00001000 initialized data of region_1 fatfsd.dll
01ff7000 - 01ff8000 L00001000 initialized data of region_1 encfilt.dll
01ff8000 - 01ff9000 L00001000 initialized data of region_1 diskcache.dll
01ff9000 - 01ffa000 L00001000 initialized data of region_1 devmgr.dll
01ffa000 - 01ffc000 L00002000 initialized data of region_1 crypt32.dll
01ffc000 - 01ffd000 L00001000 initialized data of region_1 coredll.dll
01ffd000 - 01ffe000 L00001000 initialized data of region_1 certmod.dll
01ffe000 - 01fff000 L00001000 initialized data of region_1 cachefilt.dll
01fff000 - 02000000 L00001000 initialized data of region_1 busenum.dll
02000000 - 02000000 L00000000 End: last DLL address

02000000 - 03def000 L01def000 NUL
03def000 - 03df5000 L00006000 Virtual base address of ceddk.dll
03df5000 - 03e41000 L0004c000 Virtual base address of TrueFFS.dll
03e41000 - 03e48000 L00007000 Virtual base address of cecompr.dll
03e48000 - 03e5e000 L00016000 Virtual base address of stratad_intel_l.dll
03e5e000 - 03e62000 L00004000 Virtual base address of regenum.dll
03e62000 - 03e71000 L0000f000 Virtual base address of pm.dll
03e71000 - 03e79000 L00008000 Virtual base address of mspart.dll
03e79000 - 03e83000 L0000a000 Virtual base address of imgfs.dll
03e83000 - 03e8d000 L0000a000 Virtual base address of fsreplxfilt.dll
03e8d000 - 03ea2000 L00015000 Virtual base address of fsdmgr.dll
03ea2000 - 03eab000 L00009000 Virtual base address of fatutil.dll
03eab000 - 03ebe000 L00013000 Virtual base address of fatfsd.dll
03ebe000 - 03eca000 L0000c000 Virtual base address of encfilt.dll
03eca000 - 03ed0000 L00006000 Virtual base address of diskcache.dll
03ed0000 - 03edc000 L0000c000 Virtual base address of devmgr.dll
03edc000 - 03f4e000 L00072000 Virtual base address of crypt32.dll
03f4e000 - 03fe4000 L00096000 Virtual base address of coredll.dll
03fe4000 - 03ff0000 L0000c000 Virtual base address of certmod.dll
03ff0000 - 03ffa000 L0000a000 Virtual base address of cachefilt.dll
03ffa000 - 04000000 L00006000 Virtual base address of busenum.dll
04000000 - 80180000 L7c180000 NUL
...

10. Далее берем из XIP WM5 библиотеки аппаратного ядра ceddk.dll, cecompr.dll, stratad_intel_l.dll и trueffs.dll и перемещаем их по vbase и realaddress XIP WM6 с помощью M'Reloc_nk. Они конфликтуют с pm.dll и regenum.dll от XIP WM6. Для этого запускаем M'Reloc_nk и последовательно открываем в нем папки этих библиотек из XIP WM5.Единственная хитрость, нужно добиться от M'Reloc_nk, чтобы после DoIT realaddress был правильный, для этого из нужного адреса вычитаем длину блока. В общем, для указанных выше таблиц просто привожу значения для M'Reloc_nk:

ceddk.dll
e32_vbase: 03DEF000
e32_realaddr: 01FD0000 (после DoIT будет 01FD0000+1000=01FD1000)

trueffs.dll
e32_vbase: 03DF5000
e32_realaddr: 1FC3000 (после DoIT будет 1FC3000+F000=01FD2000)

cecompr.dll
e32_vbase: 03E41000
e32_realaddr: 01FE0000 (после DoIT будет 01FE0000+1000=01FE1000)

stratad_intel_l.dll
e32_vbase: 03E48000
e32_realaddr: 1FD5000 (после DoIT будет 1FD5000+D000=01FE2000)

11. У этих четырех библиотек редактируем imageinfo.txt, заменяя значения e32_vbase и o32[x].o32_realaddr на правильные (e32_vbase берем указанные выше для M'Reloc_nk, o32[x].o32_realaddr берем оттуда же, но скалькулированный в скобочках или их map.txt WM6, x- номер региона в map.txt [там не ошибиться, будут старые значения из map.txt WM5 типа D=01FE3000])

12. Увеличиваем в WM5 в ROMHDR.TXT physlast (ставим значение как в XIP WM6 = 9AFE2990). Впрочем, можно и точнее подогнать (я по аналогии с ATOM просто прибавил 100000...).

13. Ищем в map.txt WM5 строку старого смещения рома (можно по "rom_00")
CODE
9ad20b2c - 9ad20b80 L00000054 rom_00 header: dlls=01f901fd-02000000 phys=9ac00000-9aea931c, 24 modules, 7 files, 4 copyentries ext=9ac0278c ram=80580000-84000000 cputype=000001c2

Запоминаем из нее старый адрес смещения. Пример из указанной строки: 9ad20b2c (скорее всего, будет другой, берете свой)

14. Запускаем XIPPort WM5, делаем Realoc_P и write_maps.

15. Смотрим на всякий случай новый map.txt на предмет отсутствия восклицательных знаков (конфликты).

16. Ищем в новом map.txt строку (можно по rom_00)
CODE
9adb19d4 - 9adb1a28 L00000054 rom_00 header: dlls=01f901fd-02000000 phys=9ac00000-9afe2990, 24 modules, 8 files, 2 copyentries ext=9ac0271c ram=80180000-84000000 cputype=000001c2

Берем из нее новый адрес смещения. Пример из указанной строки: 9adb19d4 (скорее всего, будет другой, берете свой)

17. Ищем в S000 nk.exe старый адрес смещения рома (байты идут инвертно), меняем на новый.

18. Пробуем искать в S000 nk.exe: 05 00 52 E3 0E 00 00 8A
Если нашли, далее по смещению +0x10 должно быть: 01 00 53 E3
Там и правим 01 на 02...

Если не нашли, то плохо (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) Будем думать...

19. Собираем новый XIP ("build xip_out.bin").

20. Закидываем в папку WM5 diskimage_Ver.nb0 от целевой WM6.

21. Шьем XIP назад (в полях вводим значения: 00180000 и diskimage_Ver.nb0, жмем "write xip_out.bin to")

Вроде ничего не забыл (IMG:http://forum.pda2u.ru/style_emoticons/default/biggrin.gif)

P.S. По boot.rgu. Если берется WM5 русская, я бы попробовал поменять 419 на 409. К сожалению, на этой фазе у меня еще прошивка не заводилась, когда я пытался портировать с русской WM5, поэтому сказать, что будет без замены не могу.

P.P.S. В WM5 RW6815 в Files был mxip_initdb.vol, причем относился как бы к OEM. В WM6 ATOM это же лежало в IMGFS. Я дополнительно менял этот файл в XIP с коррекцией размера в текстовом файле описания. Но реально пробовал, это не оказывает какого-то влияния (по крайней мере, не заметил).

P.P.P.S. Извиняюсь за столь подробное изложение, наверняка ряд вещей очевиден. Но со временем все забывается, чтобы самому потом мучительно не вспоминать. Да и писал сразу и для новичков с других устройств, чтобы не осталось неясностей и можно было при необходимости действовать по аналогии (IMG:http://forum.pda2u.ru/style_emoticons/default/smile.gif) Потом, если будут силы, попробую дописать уточненную общую инструкцию, которая приведена соседней ветке форума на английском, т.к. вещи по релоку модулей и правке nk.exe при портировании с WM6 на WM5 там как то не затронуты (да и вообще в явном и собранном виде этого нигде не нашел).


Спасибо сказали:
Перейти в начало страницы
Вставить ник
+Цитировать сообщение

Сообщений в этой теме
- BigMike   Разбираем XIP   15.11.2007, 0:02
- - Winterice   нет не строится вылетает ошибка, полное описание и...   15.11.2007, 9:41
- - BigMike   Цитатавылетает ошибка, полное описание из дебугера...   15.11.2007, 13:06
- - BigMike   Дело сдвинулось с мертвой точки. Возможно, потому ...   17.11.2007, 10:50
|- - alex_beda   Цитата(BigMike @ 17.11.2007, 12:50) Дело ...   17.11.2007, 11:43
- - BigMike   Новости с полей ковыряния XIP. Как выясняется, ста...   17.11.2007, 17:38
|- - alex_beda   Цитата(BigMike @ 17.11.2007, 19:38) Новос...   18.11.2007, 9:30
- - BigMike   Дык то, что он меньше - это как раз нормально Кон...   18.11.2007, 23:42
- - Winterice   Короче данный хиппорт нормально извлекает и строит...   19.11.2007, 11:47
- - BigMike   Цитатазапускаю хиппорт извлекается только nk.exe н...   19.11.2007, 23:30
- - AGC   Что то здесь давно не было сообщений Никто не под...   24.12.2007, 8:53
- - AGC   Удалось достигнуть некоторых результатов с RW6815 ...   26.12.2007, 13:32
- - AGC   2. В результате изучения XIP удалось поднять проши...   26.12.2007, 13:51
- - AGC   3. Удалось пересобрать XIP чистого ATOM так, что т...   26.12.2007, 14:16
- - AGC   Как заключение. Портировать ядро оси с ATOM (и ATO...   26.12.2007, 14:23
|- - ArHon   Цитата(AGC @ 26.12.2007, 14:23) Как заклю...   26.12.2007, 18:55
|- - AGC   Цитата(ArHon @ 26.12.2007, 18:55) Молодец...   26.12.2007, 19:23
- - BigMike   Респект!   26.12.2007, 15:44
- - alex_beda   Ну что могу сказать лично от себя, я хип'ом за...   26.12.2007, 15:53
|- - AGC   Цитата(alex_beda @ 26.12.2007, 15:53) Ест...   26.12.2007, 16:57
- - AGC   2 alex_beda: Или речь идет совсем не о ddi.dll, а ...   26.12.2007, 17:08
- - AGC   Да, забыл еще написать. Я бы не стал слепо доверят...   26.12.2007, 21:01
- - AGC   Нашел, может не очень полезную с практической точк...   28.12.2007, 3:43
- - AGC   В общем, с портированием WM6 на аппаратное ядро RW...   30.12.2007, 21:28
- - AGC   Всех с наступившим Новым Годом! Успехов и счас...   1.1.2008, 16:24
- - AGC   Вот и все! Я нашел самое ключевое изменение...   1.1.2008, 18:31
- - AGC   Уу...у! Ну ладно, раз никто не пишет, пойду т...   1.1.2008, 22:08
- - ArHon   AGC, молодец! Как просохнешь, собирай всю инфу...   2.1.2008, 0:57
|- - AGC   Цитата(ArHon @ 2.1.2008, 0:57) AGC, молод...   2.1.2008, 7:17
- - ArHon   AGC, есть положительный результат! По твоей те...   2.1.2008, 20:41
|- - AGC   Цитата(ArHon @ 2.1.2008, 20:41) AGC, есть...   3.1.2008, 2:07
- - AGC   Портирование ядра ОС из XIP WM6 ATOM/ATOM EXEC на ...   3.1.2008, 5:35
- - ArHon   Огромное спасибо AGC за его труд, но я все-таки ду...   3.1.2008, 13:28
|- - alex_beda   Цитата(ArHon @ 3.1.2008, 15:28) P.S. Ману...   3.1.2008, 19:24
|- - AGC   Цитата(alex_beda @ 3.1.2008, 19:24) Прило...   4.1.2008, 17:09
- - AGC   Зашился с ядром Ровера на базе ОС 5.2.1948. Все Ок...   4.1.2008, 18:25
- - ArHon   AGC, а хард ресет на роверовской прошивке попробов...   4.1.2008, 18:39
|- - AGC   Цитата(ArHon @ 4.1.2008, 18:39) AGC, а ха...   4.1.2008, 18:49
- - AGC   2 Arhon: Кстати, с Роверовским ядром уже реально п...   4.1.2008, 19:35
- - ArHon   AGC, я так подозреваю, что все дело в nk.exe, а во...   5.1.2008, 1:54
|- - AGC   Цитата(ArHon @ 5.1.2008, 1:54) AGC, я так...   5.1.2008, 2:36
- - ArHon   ВСЕ! Решение с хард ресетом найдено! P.S...   5.1.2008, 12:42
|- - AGC   Цитата(ArHon @ 5.1.2008, 12:42) ВСЕ! ...   5.1.2008, 16:43
- - BigMike   Господа, утилитку M'reloc_nk выложите, плиз? ...   5.1.2008, 17:00
|- - AGC   Цитата(BigMike @ 5.1.2008, 17:00) Господа...   5.1.2008, 17:15
- - ArHon   AGC, я описал технологию в скрытом разделе   5.1.2008, 17:26
|- - AGC   Цитата(ArHon @ 5.1.2008, 17:26) AGC, я оп...   5.1.2008, 17:54
- - BigMike   И по повду дизассемблирования тоже не мешало бы ...   7.1.2008, 21:38
- - ArHon   BigMike, сам файл nk.exe я вытащил sDuper'ом и...   8.1.2008, 1:09
- - BigMike   Цитата(AGC @ 9.1.2008, 7:57) Вот, по пово...   9.1.2008, 9:41
|- - AGC   Цитата(BigMike @ 9.1.2008, 9:41) Может, д...   9.1.2008, 22:25
- - AGC   Вот. На xda-developers появилась инструкция по пор...   12.1.2008, 23:56
- - BigMike   Цитатаинструкция по портированию новой версии ОС Э...   6.2.2008, 15:03
|- - AGC   Цитата(BigMike @ 6.2.2008, 15:03) Этот ре...   9.2.2008, 8:22
- - BigMike   ЦитатаА так... Ну другой язык - это отдельный разг...   9.2.2008, 11:11
|- - AGC   Цитата(BigMike @ 9.2.2008, 11:11) Ой ли? ...   10.2.2008, 15:59
- - BigMike   Мы с ним говорили не про перевод через MUI, а про ...   11.2.2008, 9:56
|- - AGC   Цитата(BigMike @ 11.2.2008, 9:56) Мы с ни...   11.2.2008, 14:45
- - BigMike   ЦитатаЕсли будешь тащить с пропета SYS в IMGFS, та...   11.2.2008, 14:47
- - k0ster   BigMike ЦитатаМы с ним говорили не про перевод чер...   26.2.2008, 11:59
- - BigMike   Т.е. кроме реестра, сами системные модули "ун...   26.2.2008, 12:04
- - k0ster   Абсолютно верно. Переводить нужно только файлы с р...   26.2.2008, 15:06
- - BigMike   Я правильно понимаю, что процедура настолько прост...   26.2.2008, 15:14
|- - ArHon   Цитата(BigMike @ 26.2.2008, 15:14) Я прав...   26.2.2008, 15:34
|- - AGC   Цитата(BigMike @ 26.2.2008, 15:14) Я прав...   26.2.2008, 19:07
- - salman DZ   Помогите разобраться как ХИП обратно в ром вставит...   2.3.2008, 12:27
|- - AGC   Цитата(salman DZ @ 2.3.2008, 12:27) Помог...   2.3.2008, 14:37
- - BigMike   XIPPort отлично вставляет все, куда надо. Кидаешь ...   2.3.2008, 21:06
- - AGC   Для релока модулей XIPа можно использовать M'R...   1.10.2008, 8:36


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

 



RSS Текстовая версия Сейчас: 29.3.2024, 9:47
return_links(); ?>