1. Pozostało nam przeportowanie adresów zdefiniowanych na początku, czyli:
branch1 equ 0x4506E588 branch2 equ 0x45490F5C branch3 equ 0x45BFD14C branch4 equ 0x4507F0F8 hook1 equ 0x4506E578 hook2 equ 0x4507F0EE icon1 equ 0xED14 patchbody equ 0x45D19464
- Bierzemy na początek pierwszy adres spod branch1, czyli wartość po 0x, jest to 4506E588. Kopiujemy go.
- W IDA klikamy G, wklejamy i klikamy OK.
- Konwertujemy rom do kodu, wciskając "C".
- Kod wygląda tak:
ROM:4506E588 18 20 MOVS R0, #0x18 ROM:4506E58A 29 5E LDRSH R1, [R5,R0] ROM:4506E58C 14 20 MOVS R0, #0x14 ROM:4506E58E 28 5E LDRSH R0, [R5,R0] ROM:4506E590 17 1C ADDS R7, R2, #0 ROM:4506E592 3E 4A LDR R2, dword_4506E68C ROM:4506E594 E8 F0 9C F8 BL sub_451566D0 ROM:4506E598 00 20 MOVS R0, #0 ROM:4506E59A 38 5E LDRSH R0, [R7,R0] ROM:4506E59C 24 21 MOVS R1, #0x24 ROM:4506E59E 69 5E LDRSH R1, [R5,R1] ROM:4506E5A0 26 22 MOVS R2, #0x26 ROM:4506E5A2 AA 5E LDRSH R2, [R5,R2] ROM:4506E5A4 46 18 ADDS R6, R0, R1 ROM:4506E5A6 04 21 MOVS R1, #4 ROM:4506E5A8 79 5E LDRSH R1, [R7,R1]
- Uruchamiamy PatSearchNT. Klikamy load FF i wybieramy MAIN, dla którego chcemy przeportować funkcję, oczywiście w formacie RAW. Ja wybieram K770 r8bc004.
- W PatSearch, w miejscu gdzie widzimy
0xA0000000 Sie (SGOLD, NEWSGOLD, ELKA)
wpisujemy bazę naszego telefonu, poprzedzając ją "0x". Ja wybrałem 0x44140000 SE z rozwijanej listy, gdyż taką bazę ma K770 i inne fony z platformy db2020. - W duże pole tekstowe wklejamy skopiowaną część kodu z IDA i klikamy Convert.
W polu, w które wklejaliśmy tekst, widzimy teraz:
??,20 ??,5E ??,20 ??,5E ??,1C ??,4A ??,??,??,F8 ??,20 ??,5E ??,21 ??,5E ??,22 ??,5E ??,18 ??,21 ??,5E
- Teraz wszystkie miejsca, w których mamy ??,??,??,Fx (gdzie zamiast x jest dowolny znak), zamieniamy na ??,??,??,F?
- We wszystkich innych przypadkach, kiedy nie ma tego Fx na końcu, całe ??,??,??,yz (gdzie y to znak inny od F, a z to dowolny inny znak) zamieniamy na ??,??,??,??.
- W efekcie mamy:
??,20 ??,5E ??,20 ??,5E ??,1C ??,4A ??,??,??,F? ??,20 ??,5E ??,21 ??,5E ??,22 ??,5E ??,18 ??,21 ??,5E
3. Otrzymujemy w prawym okienku prześliczny adresik "4506F268". Więc zamiast 'branch1 equ 0x4506E588' wpisujemy 'branch1 equ 0x4506F268'.
4. To samo robimy z resztą adresów nazwanych jako branch, to samo robimy z adresami hook. Poprawnie przeportowane adresy branch i hook:
branch1 equ 0x4506F268 branch2 equ 0x45492B00 branch3 equ 0x45BFFECC branch4 equ 0x4507FDD4 hook1 equ 0x4506F258 hook2 equ 0x4507FDCA
5. Weźmy pod uwagę adres 'patchbody'. Zaczniemy od niego, gdyż jest najprościej Cała filozofia polega na znalezieniu w mainie wolnego miejsca - rozpiski miejsc używanych przez inne patche można znaleźć w tematach z patchami na np. mobilefree.ru, wolne miejsca są często pomiędzy nimi. Wolne miejsca w DB2020 są na samym końcu pliku raw, wystarczy więc taki otworzyć w winhexie i przewinąć na sam dół - później dodać bazę telefonu (czyli w tym przypadku 44140000) i mamy wolny adres. Ja sobie upatrzyłem w mainie K770 R8BC004 taki adres do patchbody: 45DFFC20. Więc teraz linijka ta wygląda: patchbody equ 0x45DFFC20.
6. Teraz adres do ikony. Też prosty Otwieramy w DB2020 IMG tool-u main, dla którego jest patch zrobiony. Szukamy ikonki, w tym przypadku ED14. Zapamiętujemy jak ona wygląda xD Otwieramy teraz main telefonu, dla którego chcemy przeportować patcha (czyli k770 r8bc004) w IMG toolu. Szukamy takiej samej ikonki (będzie znajdowała się w pobliżu tego adresu ). W K770 R8BC004 jest to ED16 - więc 0xED14 w pliku zamieniamy na 0xED16.
7. Ok, adresy branch, hook, icon i patchbody zrobione. Wszystkie adresy poprawnie przeportowane:
branch1 equ 0x4506F268 branch2 equ 0x45492B00 branch3 equ 0x45BFFECC branch4 equ 0x4507FDD4 hook1 equ 0x4506F258 hook2 equ 0x4507FDCA icon1 equ 0xED16 patchbody equ 0x45DFFC20
8. Przeportowany plik .asm w załączniku.
4. Kompilacja ASM do VKP
Attached Files
Edited by not found, 11 April 2012 - 19:27.
Poprawiłem emotikonki, bo ich nie wyświetlało i dodałem link do kolejnej części :)