Portowanie Sekcji XIP na Urządzeniach typu Himalaya
Kompatybilne:
O2 XDA II, T-Mobile MDA II, Qtek 2020, iMate Phone Edition, TSM500, and other PH10 variants
Z reguły przenoszenie sekcji XIP (kernel – jądra systemu), polega na jednej zasadzie,
którą opiszę poniżej .Zasada portowania ogółem tyczy się Użytkowników Himalay-i
Przygotowanie:Nie będę tu opisywał w jaki sposób uzyskać taką sekcję, zakładam że każdy z was ma już wydobyty xip.bin.
1) Tworzymy katalog o nazwie np. Old_XIP->
kopiujemy do niego:- xip.bin (wydłubany z nk.nba naszego urządzenia)
- XIPPort.exe
- pkgcommon.dll
- Mreloc.exe
Odpalamy XIPPort.exe i wciskamy:->dump xip.bin
->realloc P
->write maps
Powstał folder o nazwie OUT a w nim 2 foldery MODULES i FILES:-Usuwamy:
Z Katalogu FILES:• 778fa68c-6f86-7cfb-312d-6862e7b2f41c.dsm
• 778fa68c-6f86-7cfb-312d-6862e7b2f41c.dsm.imageinfo.txt
• 723fb954-d931-4348-b672-82a188e587b5.dsm
• 723fb954-d931-4348-b672-82a188e587b5.dsm.imageinfo.txt
• 723fb954-d931-4348-b672-82a188e587b5.rgu
• 723fb954-d931-4348-b672-82a188e587b5.rgu.imageinfo.txt
• d92a4f0a-378a-4482-8fd3-bd127a05e4de.dsm
• d92a4f0a-378a-4482-8fd3-bd127a05e4de.dsm.imageinfo.txt
• boot_ms.rgu
• boot_ms.rgu.imageinfo.txt
• mxip_lang.vol
• mxip_lang.vol.imageinfo.txt
• sysroots.p7b
• sysroots.p7b.imageinfo.txt
Z Katalogu MODULES:• busenum.dll + busenum.dll.txt
• cachefilt.dll + cachefilt.dll.txt
• certmod.dll + certmod.dll.txt
• coredll.dll + coredll.dll.txt
• crypt32.dll + crypt32.dll.txt
• device.exe + device.exe.txt
• devmgr.dll + devmgr.dll.txt
• diskcache.dll + diskcache.dll.txt
• fatfsd.dll + fatfsd.dll.txt
• fatutil.dll + fatutil.dll.txt
• filesys.exe + filesys.exe.txt
• fsdmgr.dll + fsdmgr.dll.txt
• fsreplxfilt.dll + fsreplxfilt.dll.txt
• mencfilt.dll + mencfilt.dll.txt
• mspart.dll + mspart.dll.txt
• pm.dll + pm.dll.txt
• regenum.dll + regenum.dll.txt
Wszystkie moduły i pliki wraz z odpowiadającymi im .txt, które usunęliśmy, musimy teraz zastąpić tymi z nowej sekcji XIP………….
2) Tworzymy katalog o nazwie np. New_ XIP->
kopiujemy do niego:- xip.bin (wydłubany z nk.nba innego urządzenia)
- XIPPort.exe
- pkgcommon.dll
Odpalamy XIPPort.exe i wciskamy:->dump xip.bin
->make pkgs
Kopiujemy wszystkie Moduły i pliki wraz z odpowiadającymi im .txt, do starej sekcji XIP, czyli powinno wyglądać to tak:W Katalogu FILES:
Pliki z Nowej Sekcji XIP:• 778fa68c-6f86-7cfb-312d-6862e7b2f41c.dsm
• 778fa68c-6f86-7cfb-312d-6862e7b2f41c.dsm.imageinfo.txt
• 723fb954-d931-4348-b672-82a188e587b5.dsm
• 723fb954-d931-4348-b672-82a188e587b5.dsm.imageinfo.txt
• 723fb954-d931-4348-b672-82a188e587b5.rgu
• 723fb954-d931-4348-b672-82a188e587b5.rgu.imageinfo.txt
• d92a4f0a-378a-4482-8fd3-bd127a05e4de.dsm
• d92a4f0a-378a-4482-8fd3-bd127a05e4de.dsm.imageinfo.txt
• boot_ms.rgu
• boot_ms.rgu.imageinfo.txt
• mxip_lang.vol
• mxip_lang.vol.imageinfo.txt
• sysroots.p7b
• sysroots.p7b.imageinfo.txt
Pliki ze Starej Sekcji XIP:
• 8677e734-fc16-3610-0db1-001405fb4b9a.dsm
• 8677e734-fc16-3610-0db1-001405fb4b9a.dsm.imageinfo.txt
• boot.hv
• boot.hv.imageinfo.txt
• boot.rgu
• boot.rgu.imageinfo.txt
• e27f9da5-f2bd-6586-1098-afeef97ab52a.dsm
• e27f9da5-f2bd-6586-1098-afeef97ab52a.dsm.imageinfo.txt
W Katalogu MODULES: Moduły z Nowej Sekcji XIP:• busenum.dll + busenum.dll.txt
• cachefilt.dll + cachefilt.dll.txt
• certmod.dll + certmod.dll.txt
• coredll.dll + coredll.dll.txt
• crypt32.dll + crypt32.dll.txt
• device.exe + device.exe.txt
• devmgr.dll + devmgr.dll.txt
• diskcache.dll + diskcache.dll.txt
• fatfsd.dll + fatfsd.dll.txt
• fatutil.dll + fatutil.dll.txt
• filesys.exe + filesys.exe.txt
• fsdmgr.dll + fsdmgr.dll.txt
• fsreplxfilt.dll + fsreplxfilt.dll.txt
• mencfilt.dll + mencfilt.dll.txt
• mspart.dll + mspart.dll.txt
• pm.dll + pm.dll.txt
• regenum.dll + regenum.dll.txt
Moduły ze Starej Sekcji XIP:• msflash.dll + msflash.dll.txt
• cecompr.dll + cecompr.dll.txt
• ceddk.dll + ceddk.dll.txt
• nk.exe + nk.exe.txt
• relfsd.dll + relfsd.dll.txt
• imgfs.dll + imgfs.dll.txt
• initvmmap.exe + initvmmap.exe.txt
W takiej strukturze powinien wyglądać nasz folder Out, musimy pamiętać o tym, że PLIKI i MODUŁY ze Starego i Nowego XIP-a zamieszczamy w Katalogu ze starego jądra systemu, ponieważ ponad folderami FILES i MODULES, mamy 4 pliki .txt ze starego Kernel-a. Musimy pamiętać, że grają one tu pierwsze skrzypce……..
Dla ułatwienia te pliki to:1. PARTHDR.txt
2. ROMHDR.txt
3. MAP.physical.txt
4. MAP.txt*
*Według pliku MAP.txt, będziemy układać cała sekcję opierając się na jego adresach pamięci wirtualnej.
Z reguły wygląda to tak:
01fa01fe - 01fa01fe L00000000 Start: first DLL address
01fa01fe - 01feb000 L0004ae02 NUL
01feb000 - 01fec000 L00001000 initialized data of region_1 ceddk.dll
01fec000 - 01fed000 L00001000 initialized data of region_1 msflash.dll
01fed000 - 01fee000 L00001000 initialized data of region_1 relfsd.dll
01fee000 - 01fef000 L00001000 initialized data of region_2 cecompr.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 - 03dc0000 L01dc0000 NUL
03dc0000 - 03dc6000 L00006000 Virtual base address of ceddk.dll
03dc6000 - 03dd0000 L0000a000 NUL
03dd0000 - 03dda000 L0000a000 Virtual base address of msflash.dll
03dda000 - 03de0000 L00006000 NUL
03de0000 - 03de7000 L00007000 Virtual base address of relfsd.dll
03de7000 - 03df0000 L00009000 NUL
03df0000 - 03df7000 L00007000 Virtual base address of cecompr.dll
03df7000 - 03e5e000 L00067000 NUL
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 - 801c0000 L7c1c0000 NUL
Ważne: musimy pamiętać, aby w mapie końcowej, po całej relokacji, nie znalazł się żaden wykrzyknik…….
W podmianie Adresów pomoże nam M’reloc, jednak do tego, trzeba w każdym Module w pliku imageinfo.txt , z mienić adres na taki jak zmieniamy w w/w aplikacji, inaczej nasz OS nie wstanie…………