UpdateW dzisiejszych czasach mamy już znacznie łatwiejszą drogę... :

Dzisiaj, aby wyedytować bibliotekę, która w ROMie istnieje jako moduł XIP, wystarczą takie proste kroki:
- zakładam, że mamy katalogi TOOLS i SYS, w katalogu TOOLS m.in. program RecMod.exe - ten powinni mieć już wszyscy, natomiast gorąco zachęcam do pobrania nowej jego wersji nueRecMod.
- zakładam, że będziemy edytować bilbiotekę shellres.96.dll.
- wykonujemy komendę:
\> nueRecMod ..\SYS\Base_DPI_96\shellres.96.dll
- otrzymany plik DLL edytujemy wg uznania
- do katalogu, w którym znajduje się program reversmode.exe, kopiujemy nasz DLL (MUI, EXE czy cokolwiek....)
- wykonujemy komendę:
\> reversmode shellres.96.dll
- zawartość otrzymanego katalogu kopiujemy w odpowiednie miejsce
i... to tyle

Edycja zasobów w modułach ROMu Windows CE 4.2 lub PocketPC 2003
Chcąc zmienić zasoby w bibliotekach, które działają w formie XIP (eXecute In Place), mamy dwa wyjścia: albo modyfikujemy docelową bibliotekę DLL i nadpisujemy ją zwyczajnie - przy czym dana biblioteka przestaje już działać na zasadzie XIP i zajmuje nam swoim działaniem cenną pamięć RAM, albo modyfikujemy sam źródłowy moduł XIP, nie tracąc nic. Co wybieramy?
Opisany tutaj sposób zadziała tylko w przypadku, gdy niepotrzebna będzie ponowna relokacja modułu wynikowego - czyli gdy nasz wyedytowany plik jest nie większy, niż źródłowy!
Na początek, zrzucamy interesujący nas moduł z obrazu ROMu. Do tego celu posłużymy się narzędziem dumpromx:
dumpromx -f shellres.dll -d .\modules os_117u.nb
gdzie
shellres.dll jest modułem, nad którym będziemy pracować,
os-117u.nb jest obrazem edytowanego ROMu, natomiast katalog
modules jest nowo utworzonym katalogiem, w którym będziemy pracować.
Po tej operacji w katalogu modules otrzymujemy 3 pliki:
344 860 shellres.dll
344 348 shellres.dll.0
132 shellres.dll.eo
Co to za pliki?
shellres.dll.X to pliki stanowiące kolejne sekcje modułu (w tym wypadku akurat tylko jedna sekcja była),
shellres.dll.eo to informacja o relokacji modułu. Dodatkowo, otrzymujemy plik złożony w całość. Ten plik właśnie weźmiemy do obróbki.
Edytujemy sobie wg uznania nasz plik dll (np.
Restoratorem lub
ResHackiem).
Gdy jesteśmy już gotowi, otwieramy dobry edytor hex (polecam niezmiennie
HxD) i porónujemy sobie plik dll z plikiem dll.0. Widać jasno, że w tym drugim brakuje nagłówka PE, czyli pierwszych 512 bajtów:
W przypadku, gdy biblioteka składa się z większej ilości sekcji (np. webview.dll składa się z aż czterech), niestety nie możemy się posłużyć narzędziem reversmode, dlatego też łatwiej będzie porównać binarnie shellres.dll z shellres.dll.0 i zmiany nanieść do tego drugiego, ewentualnie dość łatwym również sposobem jest sprawdzenie, do którego adresu sięga ta pierwsza sekcja i ją wyciąć ręcznie (i oczywiście pierwsze 512 bajtów). W razie wątpliwości, pytajcie, trudno tak na sucho to opisać....

Powodzenia! :
