Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форумы PDA2U.RU _ Шаманства для посвященных _ Описание и Методика пересборки прошивок

Автор: Winterice 8.11.2007, 6:53

Выкладываем сюда програмы и методы для ковыряния прошивок, а также описание и назначение модулей и системных библиотек и способы их замены

Автор: BigMike 8.11.2007, 14:15

Кухня для атомов с http://forum.xda-developers.com/showthread.php?t=338082
Все утилиты "в одном флаконе" снабженные батниками для полной автоматизации процесса.
1. Кладем diskimage_ver.nb0 в папку ROM
2. Запускаем DumpFiles - получаем папки OEM, SYS и немного "левых" файлов/модулей в папке dump.
3. Вносим необходимые изменения
4. Запускаем BuildOS
5. Получаем готовые пересобранный ROM в папке FLASH

PS с родным образом Rover'a пока почему-то утилита PKG2DMP работает некорректно. На атоме не проверял.

 ATOM___ATOM_EXEC_KITCHEN.zip ( 481.92 килобайт ) : 492
 

Автор: BigMike 8.11.2007, 20:48

G'Reloc
Очень полезное дополнение к кухне.
При замене или добавлении модулей из другой прошивки можно получить ситуацию, когда прописанные для них адреса в памяти пересекаются с другими модулями из "родной" прошивки. Или, наоборот, какое-то место в памяти остается свободным.
G'Reloc позволяет пересчитать адрессацию модулей в памяти.
Ложим ее в папку кухни, рядом с BuildOS. После редактирования прошивки в кухне - вместо BuildOS запускаем G'Reloc.

 G__Reloc.zip ( 222.4 килобайт ) : 214
 

Автор: BigMike 8.11.2007, 21:04

Package tool
Утилита от bepe для переборки папки dump на пакеты OEM и SYS
Функции аналогичны DMP2PKG, только работает проще и нагляднее, плюс содержит дополнительные возможности.
Источник, как обычно: http://forum.xda-developers.com/showthread.php?t=296861

 package_tool_v1_1_.01.zip ( 75.08 килобайт ) : 294
 

Автор: BigMike 8.11.2007, 21:10

WinImage
Меганеобходимая утилита для редактирования ExtendedROM.img
1) запускаем WinImage
2) открываем ExtendedROM.img
3) импортируем/экспортируем нужные вам файлы
4) сохраняем

 WinImage_8.0b.zip ( 662.62 килобайт ) : 505
 

Автор: BigMike 9.11.2007, 13:08

Мегаинтересная вещь для ковыряния прошивок:
Принципиально новая коллекция утилит от tadzio:
http://forum.xda-developers.com/showthread.php?t=298327
Позволяет перепаковать ROM таким образом, чтобы масимально совободить storage девайса.

Цитата
How it works
============

On a high level, this is the chain of actions needed to unpack OS.nb:

OS.nb ---(NBSplit)---> OS.nb.payload --> (ImgfsFromNb)---> imgfs.bin ---(ImgfsToDump)---> 'dump' directory

At that stage, you will want to edit the 'dump' directory. I recommend using bepe's excellent *Package Tool for this.

The reverse process is:

'dump' directory ---(ImgfsFromDump)---> imgfs-new.bin ---(ImgfsToNb)---> OS-new.nb.payload ---(NBMerge)---> OS-new.nb


Имхо, рулёз полнейший - надо изучать!

PS чтобы суметь применить к нашим девайсам - надо определить sector size и extra data size
Например, для Hermes sector size 0x200, extra data size 0x08. Для Kaiser 0x800 и 0x08

 ImgfsTools_2_1_.1rc2.zip ( 265.62 килобайт ) : 226
 

Автор: BigMike 9.11.2007, 13:10

Собранная на основе Tadzio tools кухня для девайсов НТС (трафик! почти 19 мегов).
Надо разбираться, как адаптировать ее для наших гаджетов.
http://forum.xda-developers.com/showthread.php?t=309549

Автор: BigMike 10.11.2007, 0:58

Небольшой мануал по кукингу.
Пока выкладываю в том виде, в каком нашел - для девайсов НТС. Для атомообразных девайсов скорее всего будут отличия.

COOKING TUTORIAL :
Take a ROM that you like most. See the good aspects, the bad and the ones that you really like and write them down. You can't go to war without a plan, so before cooking, make a plan on what you are trying to do. If you start cooking without a plan, you'll end up asking too many questions, because even you don't know what you are trying to do. Then, dump the rom and make those changes one by one.

When you think that you worked a considerable amount of time, stop and build it, flash it and see what works and what doesn't. That way you will find small bits and pieces that you did wrong or didn't even knew that you want changed. If problems, fix them if not, continue working on the rom. I assure you that you won't get it done all in one shot.
Take your time, rom cooking is not a thing you do in haste, because errors will come. It's all about trial and error, but without a perfect lucid plan, you will have more errors and too many question marks.

Let's say that you want a rom without a program and with another one instead. So , you don't like the program A in the rom and want to replace it with program B. Dump the rom, search for the location of the program A, if it's in a folder named like it or similar, then it means that the whole folder is that actual program, with all registry entries directions to files, files and shortcuts. Delete that folder (be extra careful with folders in SYS) and get your program B that you like so much. So you have it either in a already made package (easy way, just copy it into your OEM folder) or in a CAB. Well, things should work like this.

Take the cab, and search for the initflashfiles generator in the Extra folder. Run it and follow instructions. Some folders should pop up with directions on where to place the cab, and what to do next. Let's say that the program was successful (it should, i will rebuild all my kitchens into one and i will take a closer look why some say that it doesn't), then you will be promted with a folder containing the initflashfiles.txt. This file tells the device where to move every file in the B package. When you build the rom, all files are placed in the Windows directory on the device. Then this little thing tells the system where to put every file so that the program that needs it in one location to find it there. It also tells where to put shortcuts that you see in Programs or Office or any other place and it creates folders also. Well, open the initflashfiles with notepad and read every line carefully. Delete the squares and tap an [ENTER] after each square so every instruction is on a new line. Some cabs don't have a predefinite location for it's files so you may notice that some initflashfiles.txt don't point to the right direction. If your B program doesn't have a predefinite installation folder, think of one and modify all directions to "InstallFolder" to the address you made up your mind. Remember to do that with the .rgu's also.

When you do the initflashfiles.txt , you still need some registry entries and the actual files. See the folders and files located in the same folder with initflashfiles.txt. Copy all files to a folder you create on desktop for instance, with a friendly name, for instance B. Remember to copy all files there disregarding folders, so you will have al of them into the B folder and no subfolder to that. Add there the edited initflashfiles.txt. Then run the CAB analiser and open the B cab. Select the XML Setup tab and then the "Registry Keys" tab. Copy all you find there into a new txt document created in the B folder on desktop, save it as UNICODE, leave last line blank. Check to see if regs are correct (remember the path you used if the program didn't had any). Rename it into UUID.rgu. You get an UUID HERE. Create a new text document, don't open it but rename it to the same UUID but with the extension .dsm. Make sure that you added the .rgu and .dsm in the B folder on desktop and then move it to the OEM folder, build and flash.

This was just a way to build packages and add them to the rom, but you can add a package with only registry keys , like tweaks you use or stuff like that. The package must contain a .dsm and a .rgu as well as an initflashfiles.txt , but this is not necessary for all. For example a registry tweak package can only contain a .dsm and a .rgu with nothing else. Or an .dsm and files but that means that there are no reg entries and all files are in Windows dir.

When you think you have mastered this, then you cans stick your nose deeper and check other packages, even edit standard registries, with the help of "Convert .hv to .rgu" (reg setings are kept in user.hv and default.hv), this will make them editable by notepad and then convert them back to hv with opposite program. Or even change your shortcuts appear in the start menu or which shortcuts you want in the Programs. That with the help of the "Edit InitFlashFiles".

There are unlimited possibilities on what you can do. For instance some programs are trickyer than others and can't be turned into packages that easy. Let's say that you want to make a program that uses some tweaking so that it works the way you like it. Then, you take a backup of the registry with "RegistryDump(PPC)" in Extra folder, install the program, make the tweaking that you want, then make another backup and use the "WinDiff.Exe" to see what's been changed. Well, it's a little more to dig, but if you skip the time differences and few other things that you will see that don't matter or don't interfere with the program, you'll see all setings. Copy them, create a .rgu, and then look closely and take all files that are onto the PPC related to that program, and add them all into a package, create the initflashfiles.txt using a model

Цитата
Directory("\Windows"):-Directory("BatteryStatus") -this means Create folder "BatteryStatus" in Windows dir
Directory("\Windows\Start Menu\Programs"):-File("RandomFile.lnk","\Windows\RandomFileRAW.lnk" ) -this copies the RandomFileRAW.lnk located at first in Windows dir into the Programs dir and renames it to RandomFile.lnk 


Note: Files will still exist in the Windows folder, because they cannot be moved, so they are just copied somewhere else. The less files you have in the Windows dir, the faster your PPC goes

Other cool thing to do is optimize the exe's in the ROM. This makes the files much much smaller, and the smaller, the more files you can fit and it might have a positive effect on performance too. For this use the Optimize folder in the Extra. It's too easy to use, so no explanation necessary. Notice that dlls can be optimized too, but this might make the device unusable or cause instability.

Автор: BigMike 19.11.2007, 0:23

Кое-какую инфу нарыл, но пока времени нет этим всем серьезно заниматься.
Значится, чтобы портировать WM6 или новые AKU на наши прошивки порядок работы должен быть примерно такой:
1 - достать разбирабельную прошивку с нужной нам версией OS;
2 - разобрать свою прошивку и прошивку-донор;
3 - разобрать XIP обеих прошивок;
4 - портировать ядро оси из XIP донора в XIP целевой прошивки;
5 - портировать SYS из OS донора в целевую прошивку;
6 - пересобрать XIP и OS целевой прошивки, использую Relloc для XIP и G'Relloc для OS;
7 - вставить новый XIP в прошивку, прошиться и отлавливать глюки smile.gif

Портирование содержимого XIP, мануал на инглише:
1. Build dump.
2. Build maps
Copy this maps (at least you will need MAP.txt) to safe location for exploring later.
3. Make pkgs
Go to OUT/Modules and look for MSXIPKernel package - this thing you can replace with MSXIPKernel package from another device (also you MUST use XIPPort on another device's XIP - and MUST make it's maps and save that other device's MAPS.txt somewhere). And remember what files MSXIPKernel contains.
4. Undo (must 'unmake' pkgs so modules all will be just in out/modules folder)
OK - now just replace all modules related with MSXIPKernel as your remembered and their appropriate ....txt files ... e.g. replace folder coredll.dll and file coredll.dll.txt and so on. Just do not replace files like nk.exe, cecompr, ceddk, fsdspy, msflash because they can contain OEM's data and be tied to your device.
5. 'Relocate
Some people says that here XIPPort has some errors when trying to relocate modules to fit them in place, well, but we will try to fix them by hands smile.gif
Now look in MAP.txt ... you will need such section (in beginning):
01fa01fe - 01fa01fe L00000000 Start: first DLL address
01fa01fe - 01fe1000 L00040e02 NUL
01fe1000 - 01fe2000 L00001000 actual of region_1 Fsdspy.dll
01fe2000 - 01fef000 L0000d000 actual of region_1 msflash.dll
01fef000 - 01ff0000 L00001000 actual of region_2 cecompr.dll
...
01fff000 - 02000000 L00001000 actual of region_1 coredll.dll 
02000000 - 02000000 L00000000 End: last DLL address I
Now you must compare an old MAP.txt for your device, MAP.txt for a device from where you take aku's files and this MAP.txt - all three of them.
Idea is to fix what XIPPort done with that .dll sections which are in 'First DLL... Last DLL' region.
You must edit imageinfo.txt files by hands to get such thing: Files that you are NOT replaced from second device - must have their 'actual of region_1' addresses like in your OLD MAP.txt, files that you copied from new device - must have their 'actual of region_1' like in THEIR MAP.txt.
Main idea is to put that module's regions that WAS in 'first DLL ...... last DLL' section on their RIGHT positions. Hope you understand...
To relocate region's address - edit it's imageinfo.txt file:
e.g. - you replaced coredll.dll and after 'realloc P' it has it's 'actual of region_1' somewhere like 02300000 - but in that MAP.txt file from where your took coredll.dll - you can see that it must be 01FFF000 - go to imageinfo.txt in coredll.dll folder and look for "o32[1].o32_realaddr" line - [1] stands for 'region_1', [2] - for 'region_2' - you will understand... There can be direct address like 02300000 or relative address like D+0005EE02 - D means value that you can find in your ROMHDR.txt file - look for line "dllfirst: D=01FA01FE" - it's a D value - I used D+... to alter region_1's positions.
Tune all files and you need to get 'first DLL .... last DLL' section be right.
Then again build maps. (while you working on that section - 'build maps' can make an error - so - first edit all imageinfo.txt files only then press 'make maps').
now your new MAP.txt must look right - all .dlls must have their RIGHT addresses in section 'first DLL ... last DLL
6. Ok - then you need to patch S000 file in nk.exe module to put there your new ROMHDR offset. First - look in your old MAP.txt file for OLD ROMHDR offset, there must be a line:
8027dba4 - 8027dbf8 L00000054 rom_00 header: dlls=01fa01fe-02000000 phys=80180000-804e14f0, 21 modules, 11 files, 1 copyentries ext=80182e64 ram=900f8000-94000000 cputype=000001c2
you see - 8027DBA4 - it's your OLD offset - search for this hex value in S000 part of nk.exe - there must be only one (or else you will have to guess where you can patch, hehe)... btw - don't forget that in hex editor this value will be A4 DB 27 80 (reversed)... well - patch it to your NEW romhdr offset that you can find in your NEW MAP.txt file ...
ok ... that must be ALL ...
just don't forget that after 'realloc P' you must alter imageinfo.txt files to get region_1(2) back in their RIGHT places and to patch S000 of nk.exe to put there your new ROMHDR offset...
Then - guess - build xip_out.bin, put xip_out.bin in your xip2 and flash all that things back to your PDA...

Еще несколько очень полезных ссылок (хотел сам разобраться, но, похоже, до отпуска уже руки не дойдут):
http://www.pda4x.com/read.php?tid=40125&fpage=1&toread=&page=1 (здесь речь идет про старый xipport - новый, по идее, не должен делать этих ошибок, но это еще нужно проверить).
http://forum.xda-developers.com/showthread.php?t=296360&page=2
http://buzzdev.net/read.php?26,27196
http://wiki.xda-developers.com/index.php?pagename=Atom_Cooking_Notes

Автор: Mr.Nik 19.11.2007, 15:32

http://forum.xda-developers.com/showthread.php?t=310076

http://forum.xda-developers.com/showthread.php?t=345735

Автор: ArHon 7.12.2007, 11:09

Руководство по созданию OEM-пакетов

(С) Garmin, оригинальный текст http://forum.xda-developers.com/showthread.php?t=345964
_______________________________________________________________
Перевод с английского ArHon, оригинальное форматирование сохранено

Как создать OEM-пакет

Вот руководство по созданию OEM-пакетов, может быть использована для любого девайса.

Ограниечение ответственности – Используйте на свой страх и риск, я не отвечаю за ущерб, нанесенный Вашему устройству.

Папка OEM является местом расположения приложений, которые будут работать в системе по умолчанию.


Вот как это делается по шагам:
1. Скачайте и установите http://rapidshare.com/files/50880220/HyperCore_V1.01.exe
2. Откройте Hypercore запустите panel/extra/CAB Analiser
3. Откройте или петеращите .cab файлы, из которых собираетесь создать OEM-пакет
4. Выберите экран "XML", затем распакуйте все cab файлы в новую папку
5. Переключитесь на вкладку "Registry Keys", затем скопируйте все значения оттуда в новый текстовый документ





6. Для использования ключей реестра их необходимо исправить следующим образом:

(До исправления)
REGEDIT4
[HKEY_LOCAL_MACHINEDriversUSBFunctionDriversWM5 torage_Class]
"ActivateFlags" = dword : 00000000
"DeviceName" = ""
"NLEDWrite" = dword : 0000FFFF
"NLEDRead" = dword : 0000FFFF
"idVendor" = dword : 0000045E ---------------------------------------> Здесь знак "=" окружен пробелами, это неправильно
"ReadOnly" = dword : 00000000
"Dll" = %CE1%WM5torageWM5torage.dll --------------------------> Здесь только один обратный слэш – тоже неправильно
"Product" = "Windows Mobile Device"


(После исправления)
REGEDIT4 -------------------------------------------------------------------> В начале файла обязательно должно быть REGEDIT4
[HKEY_LOCAL_MACHINEDriversUSBFunctionDriversWM5 torage_Class]
"ActivateFlags"=dword:00000000
"DeviceName"=""
"NLEDWrite"=dword:0000FFFF
"NLEDRead"=dword:0000FFFF
"idVendor"=dword:0000045E ------------------------------------------> Убрали пробелы
"ReadOnly"=dword:00000000
"Dll"=%CE1%WM5torageWM5torage.dll -------------------------> Все одинарные обратные слэши заменили на двойные
"Product"="Windows Mobile Device"
--------------------------------------------------------------------------------> В конце оставляем одну пустую строку

7. Сгенерируйте GUID, (Генератор можно скачать здесь http://www.microsoft.com/downloads/details.aspx?familyid=94551F58-484F-4A8C-BB39-ADB270833AFC&displaylang=en)
8. Все, сохраните в UNICODE с именем (Сгенерированный GUID).rgu


9. Создайте еще один пустой текстовый документ и назовите его (Сгенерированный GUID).dsm
(Имена файлов .rgu и .dsm, за исключением расширения, должны совпадать)


10. Создайте "initflashfiles.txt". -------> (Далее я расскажу как его создать)






Как создать initflashfiles.txt


initflashfiles.txt используется для копирования файлов из одного места в другое.


Вот по шагам как это сделать:
1. Создайте новый текстовый документ
2. Сохраните его как initflashfiles.txt


Что же вы должны написать в initflashfiles.txt?? Вы должны написать следующее:


Формат таков:
Directory("ЦЕЛЕВАЯ ПАПКА"):-File("ЦЕЛЕВОЕ ИМЯ ФАЙЛА","ИСХОДНЫЙ ПОЛНЫЙ ПУТЬ ФАЙЛА")


Например, вот так:



-------> Это означает, что вы хотите скопировать файл WM5torage.lnk из папки Windows, в папку WindowsStart MenuProgramsSystem


Вот, теперь у вас есть рабочий файл initflashfiles.txt


--- Наконец, соберите все файлы в одну папку и дайте ей имя, например: OEM_WM5torage ---


Внимание!:
Вот что вы должны помнить при создании OEM-пакета:
a. В НАЧАЛЕ файла должно быть REGEDIT4
b. В КОНЦЕ файла оставьте одну пустую строку
c. Не используйте режим переноса строк
d. Сохраните (GUID).rgu в кодировке UNICODE



Все, пробуйте свое творение!.

Удачи!

Garmin

Автор: ArHon 8.12.2007, 3:07

Вот в кучу цитата другого моего поста, более подробная информация по структуре initflashfiles.dat.

Для этого открываем этот файл в блокноте (не забыв предварительно поменять ему атрибуты) и добавляем необходимые папки и файлы. Внимание! Напоминаю, что файл в Unicode! Поэтому рекомендую использовать именно стандартный блокнот. Добавлять нужно в конец файла, попытка добавить данные в середине увенчалась провалом - при прошивке зверь вообще не может создать структуру, из-за чего система не работает.

Формат следующий:

а) создание папки в корне:
root:-Directory("название_папки")

папка второго уровня:
Directory("название_папки_родителя"):-Directory("название_папки")

c) папка третьего и более уровня (обратите внимание на наличие слешей!):
Directory("\папка_первого_уровня\<.....>\папка_n-го_уровня"):-Directory("название_папки")

d) для добавления файлов необходимо скопировать их в корень прошивки, при этом они попадут в итоге в папку "Windows". Названия файлов соответственно должны быть уникальны. Впоследствии при постановке их на место вы сможете переименовать их в оригиналы. Итак для файла в корне:
root:-File("целевое_название_файла","\Windows\название_файла_в_прошивке")

e) файл в папке первого уровня:
Directory("папка_первого_уровня"):-File("целевое_название_файла","\Windows\название_файла_в_прошивке")

f) файл в папке второго и более уровня:
Directory("\папка_первого_уровня\<.....>\папка_n-го_уровня"):-File("целевое_название_файла","\Windows\название_файла_в_прошивке")

Обязательно! После редактирования файла блокнотом он добавит в начало файла коды 0xFF 0xFE (признак Unicode) - их надо удалить (я делал это WinHex'ом). Все, копируем файл в прошивку и собираем.

Автор: Winterice 28.1.2008, 17:31

Вопрос такой собрал прошивку для G5 на основе G6 путем замены частичной замены sys (как выеснилась sys секция на 98% идентична прошивке от Атома вплоать до guid) проблема такая после прошивки девайс как обычно уходит в ХР, хр проходит нормально переходить к загрузки самой оси и виснет на сплеше (в отлчий от обычных касячных когда весит на хр) есть предположения что проблема в реестре так как не смог изменить hv файлы (программы для редактирования не работают) (вариант прошивки выложен http://forum.pda2u.ru/developers/probag5izg6.rar) может кто знает че поправить

Автор: k0ster 28.2.2008, 18:56

WinterIce
Перед BuildOS, обязательно сделай Greloc если не делал.

А теперь вопрос: какой смысл в замене SYS-части? Просто хотелось сменить build?
Прошив свой девайс кучу раз понял, что большинство проблем кроется в ОЕМ-части.
А SYS часть - это разработка компании майкрософт и как правило производитель устройства туда не лезет, а все свои изменения делает в ОЕМ-части. Спросите меня почему? А просто потому что компания разработчик не будет вносить свои правки в SYS-часть из-за того, что это противоречит контракту с Майкрософтом на поставку ОС для мобильных устройств.

Автор: Winterice 28.2.2008, 19:18

Упс не подправил старое сообщение уже разобрался но все равно спаисбо, но когад разобрался катастрофически не стало времени(((

Автор: ArHon 7.3.2008, 11:24

Еще такой момент обнаружил - если файл exe, dll или mui из папки Windows должен копироваться в другое место с помощью файла initflashfiles.dat, то он НЕ должен быть модулем! Его надо ложить в прошивку как обычный файл, иначе скопируется файл размером 0 байт.

Автор: AGC 1.12.2008, 0:14

imgfs_tools со встроенным G'Reloc

Пересобрал тут себя батник утилит мамаича, может кому пригодится в комплекте с встроенным запуском G'Reloc при сборке dump...

 imgfs_tools_w_reloc.zip ( 488.97 килобайт ) : 124
 

Автор: Angel_Hranitel 13.3.2009, 22:56

малнькая прогрпмка для работы с *.dsm, взята из кухни асусов. Когда прошивка не разбирается доконца, раскидываем файлы и пакеты по своим папкам и обновляем *.dsm.
 DSMBuilder.zip ( 272.06 килобайт ) : 44

Автор: Angel_Hranitel 13.3.2009, 23:11

Переводит initflashfiles.dat с содержимым типа

Цитата
\x0413\x043B\x0430\x0432\x043D\x043E\x0435\x0020
в нормальный текст. Взята из кухни асусов.
 QuoteFilter.zip ( 8.51 килобайт ) : 59

Автор: AGC 13.3.2009, 23:59

Цитата(Angel_Hranitel @ 13.3.2009, 23:11) *
Переводит initflashfiles.dat с содержимым типа в нормальный текст. Взята из кухни асусов.
 QuoteFilter.zip ( 8.51 килобайт ) : 59

Я правда аналогичные действия просто через браузер проделывал, но так удобней smile.gif

Автор: mitei 6.2.2010, 11:31

Кто-нибудь может мне объяснить вот это что значит? :
Total Sectors: 385b
Used Sectors : 319e
Free Sectors : 06bd

И ещё вопрос:
файлы в кухне были в модулях,собрал прошивку-оперативки прим.20мб, потом часть перевёл в файлы(не помню какие) - оперативки прим.10мб, с чем это связано и как?

Русская версия Invision Power Board (http://nulled.cc)
© Invision Power Services (http://nulled.cc)