Autor Wątek: Edycja zasobów w modułach XIP  (Przeczytany 31473 razy)

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Podziękowań: 140
  • Samsung Note 4
Edycja zasobów w modułach XIP
« dnia: Środa, 21 Listopad 2007, 10:58 »
Update

W dzisiejszych czasach mamy już znacznie łatwiejszą drogę... :8)
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!  :8)
« Ostatnia zmiana: Sobota, 12 Wrzesień 2009, 16:51 wysłana przez utak3r »

nothin

  • Gość
Odp: Edycja zasobów w modułach XIP
« Odpowiedź #1 dnia: Sobota, 24 Listopad 2007, 12:54 »
...i jeśli to zadziała, jak trzeba, chyba niektórzy zrozumieją, że lekko jestem wstrząsnięty...
osobiście jakos nie wierzę, że to takie proste, utak3r, myślę, że będzie potrzebna twoja pomoc, popatrz na nazwy plików i wyobraź sobie sens...
flashuję testowy r5...



docelowo wątek możnaby połaczyć z
http://forum.mobione.pl/index.php/topic,1776.0.html
,,,

a wszystko się wzięło z update'u tego wątku...
http://forum.xda-developers.com/showthread.php?t=331094
« Ostatnia zmiana: Sobota, 24 Listopad 2007, 13:02 wysłana przez nothin »


Offline wieszti

  • Świeżak ;)
  • *
  • Podziękowań: 0
Odp: Edycja zasobów w modułach XIP
« Odpowiedź #2 dnia: Sobota, 24 Listopad 2007, 13:52 »
wow ,gdyby to działało to naprawde było by extra ,  exe przerobić na xip  :o, by niezajmowały pamięci
czekam z niecierpliwością co z tego wyniknie...
Wizard G3 (i-mate K-JAM)      IPL/SPL 3.08   GSM 2.61
ROM: Paradox5.2


nothin

  • Gość
Odp: Edycja zasobów w modułach XIP
« Odpowiedź #3 dnia: Sobota, 24 Listopad 2007, 14:22 »
exeki, dlle...

..będę rozkosznie zabawny...ale lemme shout:
UTAK3R , POMOOCYYYY! :)
moja metoda z pójsciem na skróty nie dała rezultatu - sys wisi na 1-2 splashu, więc trzeba będzie kroczkami kombinować....

gdy sobie wyobrażę, że commgr i inne składniki(WTYCZKI TODAY) odpalane zawsze przy starcie będą XIP...to mózg mi staje w poprzek.
aktualnie rom używa 16 mb ramu.
« Ostatnia zmiana: Sobota, 24 Listopad 2007, 14:27 wysłana przez nothin »

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Podziękowań: 140
  • Samsung Note 4
Odp: Edycja zasobów w modułach XIP
« Odpowiedź #4 dnia: Sobota, 24 Listopad 2007, 14:37 »
Widziałem, właśnie testowałem ten nowy programik - i działa :) Zapewne tylko relokacja będzie potrzebna. Dzisiaj po obiedzie siądę do tego :)



dodano: Sobota, 24 Listopad 2007, 14:35
gdy sobie wyobrażę, że commgr i inne składniki(WTYCZKI TODAY) odpalane zawsze przy starcie będą XIP...to mózg mi staje w poprzek.
aktualnie rom używa 16 mb ramu.

;)
i fika koziołki.

Niestety, aż TAK dobrze to nie będzie - dana biblioteka musi umieć działać z ROMu. Ale, tak bez testów jeszcze, taki CommMgr na przykład powinien sobie poradzić... ech, zobaczymy dzisiaj :) Rozgotuję Paradoksa.


Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Podziękowań: 140
  • Samsung Note 4
Odp: Edycja zasobów w modułach XIP
« Odpowiedź #5 dnia: Sobota, 24 Listopad 2007, 15:14 »
 :peace:

Misar z forum xda-developers opublikował kolejny programik.... właśnie rozkładanie gotowego pliku PE (portable executable - czyli exeków, dlli i pochodnych) - reversmode.
[attachment=1]

Ten sprytny programik rozkłada plik PE na obraz modułu, i w zasadzie pozostaje nam już tylko edycja pliku imageinfo.txt, co z kolei możemy zrobić przy pomocy G'Reloc...

Więcej później.



dodano: Sobota, 24 Listopad 2007, 14:42
Jeszcze nie poszedłem ;)
Co widzę na razie, to to, że w imageinfo.txt trzeba ustawić o32_dataptr, czyli offset modułu - to powinien załatwić bez problemu M'Reloc... pozostałe wartości reversmode ustawia prawidłowo  :jupi:

stay tuned ;)

nothin

  • Gość
Odp: Edycja zasobów w modułach XIP
« Odpowiedź #6 dnia: Poniedziałek, 26 Listopad 2007, 09:25 »
dobra.. nie klika mi to jakos, czy ktokolwiek mógłby mi pomóc z kwestią?

z paczce ORYGINALNY rozbity shellres w katalogu, + OSOBNO dllka z przerobionym kursorem...
http://www.mm.pl/~xoen/shellres.rar

muszę sprawdzić, czy mój problem wynika z tego, ze niektóre resy po prostu wywaliłem(kilka klatek waitcursora).

efekt mojej zabawy jest taki, że wszystkie, OPRÓCZ waitcursora resource'y są pozamieniane, jak już mówiłem... ikony są pozamieniane, a piktogramy znikają.
za to waitcursor działa bosko(jest mały, kolorowy i ma kilka klatek).
dopełnianie bajtów nic mi nie daje...
« Ostatnia zmiana: Poniedziałek, 26 Listopad 2007, 09:29 wysłana przez nothin »

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Podziękowań: 140
  • Samsung Note 4
Odp: Edycja zasobów w modułach XIP
« Odpowiedź #7 dnia: Poniedziałek, 26 Listopad 2007, 10:36 »
A spróbuj wypalić to... ja teraz nie mogę flaszować się.




dodano: Poniedziałek, 26 Listopad 2007, 10:34
Tak sobie myślę...
Jeżeli pozamieniał ikony, to może jednak nie można usuwać nic  ?-?
Aczkolwiek teoretycznie wszystkie są ponumerowane i nie powinien mieć problemu ze znalezieniem tego, co trzeba.

A wiesz może, czemu ikony logo start są dwie?...  ::)

Offline mobi

  • Administrator
  • Core
  • ****
  • Podziękowań: 351
  • Wizard/HD2/Kaiser/SGS3/HTC E8/HTC 10/Xiaomi MiA1
Odp: Edycja zasobów w modułach XIP
« Odpowiedź #8 dnia: Poniedziałek, 26 Listopad 2007, 11:03 »
Cytuj
A wiesz może, czemu ikony logo start są dwie?...

to proste, kopia awaryjna

nothin

  • Gość
Odp: Edycja zasobów w modułach XIP
« Odpowiedź #9 dnia: Poniedziałek, 26 Listopad 2007, 12:38 »
usuwanie to osobny problem - jak nic nie usuwam, tylko zamieniam JEDNĄ bitmapę z waitcursora, jest to samo.
« Ostatnia zmiana: Poniedziałek, 26 Listopad 2007, 12:47 wysłana przez nothin »


Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Podziękowań: 140
  • Samsung Note 4
Odp: Edycja zasobów w modułach XIP
« Odpowiedź #10 dnia: Poniedziałek, 26 Listopad 2007, 13:26 »
Czyli, jak rozumiem, to, co podesłałem, też nie działa?



dodano: Poniedziałek, 26 Listopad 2007, 13:26
W sumie dziwne, bo Speederowi zadziałało...

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Podziękowań: 140
  • Samsung Note 4
Odp: Edycja zasobów w modułach XIP
« Odpowiedź #11 dnia: Wtorek, 27 Listopad 2007, 10:28 »
Przeflaszowałem. Działa jak najbardziej  :jupi:
Spróbuj nothin tą paczkę, co podesłałem. Po południu zrobię update pierwszego posta. Ten reversmode wprowadza też zmiany do imageinfo.bin, czyli do tablicy alokacji. Bez tego też działało, ale zżerało RAM, teraz już nie  ;D

Jeszcze tylko co do kursora.... widać, że są wycięte klatki - staje na ostatniej i ma pusty przebieg po klatkach, których nie ma. Po prostu przez ten czas wyświetla ostatnią dostępną klatkę.



dodano: Wtorek, 27 Listopad 2007, 10:28
A teraz idę szkolić babki...  ::)


Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Podziękowań: 140
  • Samsung Note 4
Odp: Edycja zasobów w modułach XIP
« Odpowiedź #12 dnia: Wtorek, 27 Listopad 2007, 19:53 »
Dodałem info o tym, jak poprawnie użyć reversmode.



dodano: Wtorek, 27 Listopad 2007, 18:44
W artykule na stronie głównej dodałem do tego artykułu mini-tutorial, jak bardzo szybko wyedytować dużą ilość ikon czy bitmap, z użyciem Microsoft Resource Compilera. Polecam lekturę :)

nothin

  • Gość
Odp: Edycja zasobów w modułach XIP
« Odpowiedź #13 dnia: Wtorek, 27 Listopad 2007, 20:24 »
..użyłem shellresa z twojego linku(który zresztą zobaczyłem dopiero teraz...). dodałem i nie robiłem greloca na kuchni.
r5.2 po starcie ma 37.3 mb bez kamery, z qm, metrixem, smartskeys...i przerobionym commgrem(totalnie czarne tła 1BIT, dialer też z czarnymi tłami 1 bit)
15.61 mb zajęte.

działa doskonale, jak zrozumiem, jak to zrobić, zajmę się w końcu logiem...
waitcursor działa bosko..

---------------
miałem już build, w którym przerobiłem kilka rzeczy z oemapps i oemmisc, system po flashu zdawał się zajmować coraz mniej ramu, ALE wynikowo przesadzilem i padła cała kuchnia..
wiem na bank, że kilka rzeczy stamtąd można zamienić, ALE:
- nie do końca mam metodę na namierzenie plików, które można bez kolejnych flashowań(a błąd to 2 flashe..) rozbijać - jak wywnioskować, które pliki można rozbić, a które nie - przez dumprom .nb z /ROM???
- po lekturze uzupełnionego wątku nie do końca wiem, czy gdy rozbijam dllkę na paczkę NALEZY dodać do paczki tego rozbijanego dlla, oraz nie wiem, czy zwykłe rozbicie, zamiana i greloc załatwiają sprawę - mam odczyt, że sys zabiera mniej ramu. ALE program mem jakoś się na to nie przekłada do końca, tylko used mem :S.

Cytuj
W artykule na stronie głównej dodałem do tego artykułu
co to znaczy...tzn. gdzie to jest...
« Ostatnia zmiana: Wtorek, 27 Listopad 2007, 21:01 wysłana przez nothin »

Offline mobi

  • Administrator
  • Core
  • ****
  • Podziękowań: 351
  • Wizard/HD2/Kaiser/SGS3/HTC E8/HTC 10/Xiaomi MiA1
Odp: Edycja zasobów w modułach XIP
« Odpowiedź #14 dnia: Wtorek, 27 Listopad 2007, 20:52 »
ciekawe rzeczy piszesz, czy w ten sposob mozna tez ominac problemy z podpisem?