[Windows Mobile Software Development] mamaich:
I've made a set of tools that can assist in cooking your own WM5 ROMs. These tools were tested only on BlueAngel devices. They should also work on Himalaya. Universal and Wizard support is also present, but it is untested, so the tools may crash or turn your device into brick. But it is possible to extract files from universal/wizard ROMs and use them on other devices.

I've attached 2 archives - make_hv.rar, a tool from Platform Builder that can be used to recreate .HV files (they contain default and boot registry), and imgfs_tools.rar - these tools should be used to edit WM5 IMGFS partition.

With these tools and http://xdaforums.com/viewtopic.php?t=33321 (it can edit WM5 boot XIP partition) it is possible to replace/add/delete any file in WM5 ROM.

Usage:

prepare_imgfs.exe
Splits nk.nba into imgfs_raw_data.bin and imgfs_removed_data.bin.
imgfs_raw_data.bin - contains raw IMGFS data
imgfs_removed_data.bin - contains extra data (something like FAT table).
Usage:
prepare_imgfs.exe nk.nba [-nosplit] [-mpx200] [-acer]
Use "-nosplit" for HTC Wizard and Universal ROMs that don't contain extra
blocks of data. In this case imgfs_removed_data.bin would be empty.

make_imgfs.exe
Reverse of prepare_imgfs. Combines imgfs_raw_data.bin and imgfs_removed_data.bin
into nk.nba file. Use -nosplit if it was specified for prepare_imgfs.exe.
Usage:
make_imgfs.exe nk.nba [-nosplit]
The nk.nba file would be used as a template, its contents would be overwritten.

viewimgfs.exe
Dumps the contents of imgfs_raw_data.bin to "dump" subdirectory. Files are
dumped as is, modules as directories. File time and attributes are preserved.
If RecMod.exe is present in the current directory, all modules are
reconstructed as working DLLs/EXEs and placed in the corresponding subdirectory.
Tool creates dump_MemoryMap.txt with address ranges occupied by modules.
Usage:
viewimgfs.exe imgfs_raw_data.bin

RecMod.exe
Reconstructs a module dumped as directory to a working state. Rebuilds
relocations information, and tries to guess section names.
Usage:
RecMod.exe [path to module directory]

BuildImgfs.exe
Reverse of viewimgfs. Reconstructs imgfs_raw_data.bin and imgfs_removed_data.bin
from files in "dump" directory. Overwrites contents of imgfs_raw_data.bin/imgfs_removed_data.bin
files. Does not check for errors or end of free space. Approximate free space
left is displayed when program is finished. In case of error contents of bin
files is undefined.
Usage:
BuildImgfs.exe
It would overwrite imgfs_raw_data.bin/imgfs_removed_data.bin in current directory.

DelFile.exe
Deletes one file or module from imgfs_raw_data.bin. Wildcards are not supported.
Usage:
DelFile.exe filename.ext
Uses imgfs_raw_data.bin from current directory. Does not check for errors.

AddFile.exe
Adds one file to imgfs_raw_data.bin. Would reuse space freed by DelFile.
Usage:
AddFile.exe filename.ext
Uses imgfs_raw_data.bin from current directory. Does not check for errors.

The typical process should be:
prepare_imgfs.exe nk.nba
viewimgfs.exe imgfs_raw_data.bin
...modify "dump" directory as you need...
BuildImgfs.exe
make_imgfs.exe nk.nba

or
prepare_imgfs.exe nk.nba
DelFile.exe filename.ext
AddFile.exe filename.ext
...you may add/delete as many files as you need...
make_imgfs.exe nk.nba

Of cause you'll need a tool to convert NBF<->NBA files. SD-card images can be also used instead of NK.NBA file, but this was not tested!

Troubleshooting.

In case of invalid ROM the tools would crash without saying anything. In this case they may destroy the contents of input files.

Use these tools at your own risk! They may make your device completely unusable! Always make an SD-card backup of your ROM and Extrom!

The worst case I had during tests was complete destroying of DOC partition on my device. I had to flash WM2003 OS, repartition DOC from there and this fixed the device. Of cause this method cannot be used on Wizard or Universal.

I've published these tools so that someone could integrate BA patches into a ROM or play with cooking own ROMs.

edited 12.12.2005. AddFile/BuildImgfs should work on Universal/Wizard ROMS (i.e. roms with empty imgfs_removed_data.bin file).

edited 15.01.2005. Fixed a major bug found by TofClock. Short name of files with filename length 24 chars or longer (like "instmsgrresources.96.dll") was incorrectly generated and in some cases they were inaccessible by OS.

edited 05.02.2005. Added several checks so that viewimgfs.exe does not crash on incorrectly patched ROMs (MPX200). Don't use buildimgfs.exe on such ROMs.

edited 30.03.2006. Added RecMod tool that reconstructs modules dumped as directories to a working DLL. So reusing modules from other ROMs is now much easier. Added updated prepare_imgfs.exe with support of ACER N300 ROM (thanks to Tuatara).

edited 12.07.2006. Added source code of prepare_imgfs/make_imgfs tools, so anyone can add the support of new devices.

edited 25.10.2006. Published the source code on my site. The code is ugly and is not commented at all. Don't ask me how to compile or use it!

I've stopped working on this project. There would be no updates.

Complete source code is available on my site.