Najlepsza strona o Siemensie SL45i, SL45 oraz SL42
Szukaj(we wszystkich działach):
Menu główne

  Strona główna
  Forum
  Szukaj
  Redakcja
  Kontakt
  Logowanie/Rejestr.
  Linki
  Księga Gości

Patche

  Patche Zwykłe
  Patche Graficzne
  Pliki *.bin

Materiały

  Artykuły
 -  Hardware
 -  MMC
 -  Patchowanie
 -  Software
  Ściągalnia
 -  Softy
 -  Do kompa
 -  Karta pamięci
   -  Animacje
   -  Dzwonki
   -  Filmy
   -  Java
     -  Gry
     -  Programy
   -  Książki (e-booki)
   -  Standar. Foldery
   -  Loga
  Dane Techniczne

Wybierz skórę
Menu użytkownika

Nie masz jeszcze konta? Możesz sobie założyć!
ALLEGRO
ALLEGRO - WEJDŹ I POPATRZ
Reklamy google


Artykuły > PATCHOWANIE - ZOSTAŃ PATCHEREM > Przeadresowywanie patcha
JAK PRZEADRESOWAĆ PATCHA


Zapewne już nie raz wyskoczył wam błąd, w którymś z wgrywanych patchy o niezgodności danych. Co się dzieje? Otóż są dwie mozliwości, które najlepiej sprawdzić otwierając soft w jakimś edytorze hex np. Xvi32.
Jeśli jest to miejsce w środku jakichś danych i zmieniamy tylko 2 lub nawet 1 bajt to niestety trzeba zrezygnować z wgrywania patcha bo pewnie już inny patch zamienił tą część i mogą one nie współpracować ze sobą.
Jednak jeśli odkryjemy, że w miejscu w którym występuje błąd jest umieszczony kod innego patcha, ale miejsce to jest otoczone innymi wolymi obszarami to znaczy to, że mozemy sobie przeadresować danego patcha i nie będą już występować błędy.
Posłużmy się przykładem patcha DCC:

;;*** DCC. Don't Close On Accepting Call v3 ***

;UNDO previous version

;v3:
; - sets mp3 on pause on incoming call and unpause it on call ending
; - call screen shows normally when you have something opened

;additionally contains fix for 'Address book skipping for sms view' patch,
;when number of incoming has taken from sim sometimes. It's no matter if
;you don't use it


3AFF4A: DAA0AC15 DAC780D6

4532F4: 3D12 CC00
4532FE: 48413D0CDC49D4C83000E02DDAD62A05E006DC49C4683000EA007639 DC49D4C83000E02DDAD62A05E006DC49C4683000DAE57639FAC7F0D6

452B32: DAEEAC1C DAC7AED6
452B30: 0D02 CC00

0x27D680: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D7400C00F68F521AD7403200F2FCA82F
0x27D690: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 3D02FAA0AC15E6FCE835E6FD0E00E6FE
0x27D6A0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AC00E6FF2400DAC130AAFAA0AC1548C0
0x27D6B0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 3D0FE004D7400E00F3F8B539D7400E00
0x27D6C0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F484B63946F40C00EA20D0D6DAE64EF6
0x27D6D0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D7403200F2FCA82F3D01DB00E6FCE835
0x27D6E0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E6FD0E00E6FEAC00E6FF2600FAC130AA
0x27D6F0: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E6FECEC6E6FFDA0088F088E0E6FC0000
0x27D700: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E6FD3500E03EE00FDAC186CA0804DB00

;If you have something opened and accepted call:
; - after changing volume during call, press ok in volume dialog, otherwise it
; close all previously opened dialogs;
; - after going to menu by rightsoft during call, you must close all opened, if
; you want to go back to callscreen
***************


Zwróćmy uwagę na budowę patcha. Jest w nim kilka miejsc zmieniających już istniejące dane na skoki np.
3AFF4A: DAA0AC15 DAC780D6
ale także część nowa występująca po części pierwszej wpisująca zupełnie nową partię kodu zaczynając od adresu 27D680.
Jeśli błąd wystąpiłby w danych z pierwszej części patcha nie dałoby się przeadresować. Jednak załóżmy, że błąd występuje w danych z drugiej części w linii:

0x27D690: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 3D02FAA0AC15E6FCE835E6FD0E00E6FE

Ponieważ, w sofcie nie powinno być w tym miejscu innych danych znaczy, to że jakis innyc patch juz to miejsce wykorzystał. Trzeba w takim razie znaleźć wolne miejsce aby przesunąć nasze dane. W tym celu należy skorzystać z opisu szukania wolnego miejsca. Kiedy już wiemy gdzie jest miejsce na patcha otwieramy soft w edytorze hex i powiększamy lub zmniejszamy okno programu aby w linii było 16 kratek. Następnie wciskamy Adress->Go to i wpisujemy adres, który wybierzemy na nowe miejsce patcha i patrzymy czy jest tam wystarczająca liczba linijek - w naszym wypadku 9. Jeśli tak mozemy zacząć przepisywać adresy w patchu. Trzeba bardzo uważnie wpisać wszystkie adresy aby patch nie powodował wyłączania telefonu.
Załóżmy ze zaczniemy od adresu 27D700:

0x27D700: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D7400C00F68F521AD7403200F2FCA82F
0x27D710: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 3D02FAA0AC15E6FCE835E6FD0E00E6FE
0x27D720: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AC00E6FF2400DAC130AAFAA0AC1548C0
0x27D730: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 3D0FE004D7400E00F3F8B539D7400E00
0x27D740: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F484B63946F40C00EA20D0D6DAE64EF6
0x27D750: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D7403200F2FCA82F3D01DB00E6FCE835
0x27D760: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E6FD0E00E6FEAC00E6FF2600FAC130AA
0x27D770: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E6FECEC6E6FFDA0088F088E0E6FC0000
0x27D780: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E6FD3500E03EE00FDAC186CA0804DB00


Następnym krokiem jest sprawdzenie ile skoków w kodzie patcha odnosi sie do nowych danych i ich zmiana na nowe.
W omawianym patchu są 3 skoki, które trzeba zmienić:

3AFF4A: DAA0AC15 DAC700D7

4532FE: 48413D0CDC49D4C83000E02DDAD62A05E006DC49C4683000EA007639 DC49D4C83000E02DDAD62A05E006DC49C4683000DAE57639FAC770D7

452B32: DAEEAC1C DAC72ED7


Trzeba bardzo uwąznie sprawdzić do jakich części patcha odnoszą się skoki. Pierwszy odnosi się do początku, jednak dwa następne już do danych w środku nowego bloku.

Po poprawnie wykonanych obliczeniach i zmianach WSZYSTKICH skoków odnoszących się do przeadresowywanego patcha powinniśmy uzyskać efekt podobny do poniższego:

*** DCC. Don't Close On Accepting Call v3 ***

;UNDO previous version

;v3:
; - sets mp3 on pause on incoming call and unpause it on call ending
; - call screen shows normally when you have something opened

;additionally contains fix for 'Address book skipping for sms view' patch,
;when number of incoming has taken from sim sometimes. It's no matter if
;you don't use it


3AFF4A: DAA0AC15 DAC700D7

4532F4: 3D12 CC00
4532FE: 48413D0CDC49D4C83000E02DDAD62A05E006DC49C4683000EA007639 DC49D4C83000E02DDAD62A05E006DC49C4683000DAE57639FAC770D7

452B32: DAEEAC1C DAC72ED7
452B30: 0D02 CC00

0x27D700: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D7400C00F68F521AD7403200F2FCA82F
0x27D710: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 3D02FAA0AC15E6FCE835E6FD0E00E6FE
0x27D720: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AC00E6FF2400DAC130AAFAA0AC1548C0
0x27D730: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 3D0FE004D7400E00F3F8B539D7400E00
0x27D740: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F484B63946F40C00EA20D0D6DAE64EF6
0x27D750: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF D7403200F2FCA82F3D01DB00E6FCE835
0x27D760: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E6FD0E00E6FEAC00E6FF2600FAC130AA
0x27D770: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E6FECEC6E6FFDA0088F088E0E6FC0000
0x27D780: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF E6FD3500E03EE00FDAC186CA0804DB00

;If you have something opened and accepted call:
; - after changing volume during call, press ok in volume dialog, otherwise it
; close all previously opened dialogs;
; - after going to menu by rightsoft during call, you must close all opened, if
; you want to go back to callscreen
***************

komentarz[0] |

© 2004-2007 Retaliato & Froster & GoLLaB & MuadDib .
Wszelkie prawa zastrzeżone.

powered by jPORTAL 2