Jump to content


Photo

Portowanie adresów w ASM


  • Please log in to reply
No replies to this topic

#1 OFFLINE   mc_kibel

mc_kibel

    Proud Member of Sony.yt Community

  • User
  • 26 posts
    • Time Online: 1h 1m

Posted 28 October 2011 - 21:18

Jest to kontynuacja tematu "Tworzenie skryptów ASM" - trzecia część poradnika dotyczącego zaawansowanego portowania patchy.

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
    
2. Klikamy SEARCH.

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 :P 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 :P ). 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 :)

  • 1
Sony Ericsson X8 || GingerDX v017 Android 2.3.7 || Sense Theme


2 user(s) are reading this topic