Sobota, 19 Maj 2012, 04:10

Autor Wątek: [TUT] Ładowanie modułów do IDA Pro  (Przeczytany 1850 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8260
  • Podziękowań: 137
  • Płeć: Mężczyzna
  • Samsung Ace, Raphael, Hermes, Universal i inne
    • Wirtualne Zacisze utak3ra
[TUT] Ładowanie modułów do IDA Pro
« dnia: Niedziela, 30 Sierpień 2009, 15:18 »
Zostałem poproszony o krótki tutorial, jak załadować moduł (w szczególności chodzi o nk.exe) do IDA Pro.

1. Przygotowujemy sobie plac boju. Rozbieramy XIPa przy pomocy XIPPort i spisujemy sobie wartości: ulRAMStart, ulRAMEnd, physfirst oraz physlast z pliku ROMHDR.txt oraz o32[0].o32_realaddr i o32[0].o32_psize z pliku MODULES\nk.exe\imageinfo.txt.

2. Otwieramy IDA Pro, klikamy File->Open i nawigujemy do pliku MODULES\nk.exe\S000:


3. Zmieniamy rodzinę procesora na ARM:


4. Następny krok jest najważniejszy i decydujący o powodzeniu i pomyślnej deasemblacji: ustawiamy wartości relokacji:

RAM start: ulRAMStart
RAM size: ulRAMEnd - ulRAMStart
ROM start: physfirst
ROM size: physlast - physfirst
loading address: physfirst + o32[0].o32_realaddr
file offset: 0
loading size: o32[0].o32_psize


5. Po pierwszym przebiegu na razie otrzymujemy bełkot... otwieramy opcje Options->General, klikamy Kernel options 1 i zaznaczamy opcję "Make final analysis pass":




6. W oknie opcji klikamy Reanalyze program:


7. Po odczekaniu, otrzymujemy piękny kod, o który nam chodziło:




Zastosowania? Wszelakie, w zasadzie...  :8)
Jako przykład podam, jak odnaleźć miejsce, o którym cmonex pisała w kontekście zmiany ulRAMEnd.
Wciskamy Alt+T i wpisujemy ciąg #0x uzupełniony o nasz aktualny adres ulRAMEnd:


Po dłuższej chwili odnajdujemy definicję tej wartości w kodzie oraz miejsce w kodzie, które się do tej wartości odwołuje. Dwuklik na referencji przenosi nasz w miejsce, gdzie wartość ta jest użyta:

ROM:8001A790                 LDR     LR, =dword_802C7734 ; Load from Memory
ROM:8001A794                 LDR     R5, =dword_802B3D10 ; Load from Memory
ROM:8001A798                 LDR     R6, =dword_802B6044 ; Load from Memory
ROM:8001A79C                 LDR     R1, =loc_8002826C ; Load from Memory
ROM:8001A7A0                 LDR     R0, =dword_802B38AC ; Load from Memory
ROM:8001A7A4                 LDR     R4, =dword_802B6058 ; Load from Memory
ROM:8001A7A8                 MOV     R3, #0xA10      ; Rd = Op2
ROM:8001A7AC                 MOV     R2, #dword_83000000 ; załadowanie ulRAMEnd
ROM:8001A7B0                 ORR     R3, R3, #1      ; Rd = Op2 | Op1
ROM:8001A7B4                 ORR     R2, R2, #0xA00000 ; Rd = Op2 | Op1
ROM:8001A7B8                 MOV     R7, #0x40       ; Rd = Op2
ROM:8001A7BC                 MOV     R8, #1          ; Rd = Op2
ROM:8001A7C0                 STR     R7, [LR]        ; Store to Memory
ROM:8001A7C4                 STR     R3, [R5]        ; Store to Memory
ROM:8001A7C8                 STR     R1, [R6]        ; Store to Memory
ROM:8001A7CC                 STR     R2, [R0]        ; Store to Memory
ROM:8001A7D0                 STR     R8, [R4]        ; Store to Memory
ROM:8001A7D4                 BL      sub_800230EC    ; Branch with Link


Powodzenia przy zabawie z jądrem!
(pun intended...  :p )
Windows Mobile: a story of love and hate.


Offline globalbus

  • GZU
  • Core
  • ****
  • Wiadomości: 1969
  • Podziękowań: 77
  • Płeć: Mężczyzna
  • N900 + Zest
Odp: [TUT] Ładowanie modułów do IDA Pro
« Odpowiedź #1 dnia: Niedziela, 30 Sierpień 2009, 16:00 »
Cytuj
Jako przykład podam, jak odnaleźć miejsce, o którym cmonex pisała w kontekście zmiany ulRAMEnd.
Wciskamy Alt+T i wpisujemy ciąg #0x uzupełniony o nasz aktualny adres ulRAMEnd:
bardzo mocno zależy od samej architektury pamięci na urządzeniu, w zest można sobie majdrować w jakimś zakresie tą wartością zmieniając .vm i romhdr, a nk.exe sam widzi dodatkowy przydzielony mu RAM.
Zupełnie inaczej wygląda to na G900, bo tam ram end jest na 84000000, a faktycznie kończy się na 88000000

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8260
  • Podziękowań: 137
  • Płeć: Mężczyzna
  • Samsung Ace, Raphael, Hermes, Universal i inne
    • Wirtualne Zacisze utak3ra
Odp: [TUT] Ładowanie modułów do IDA Pro
« Odpowiedź #2 dnia: Niedziela, 30 Sierpień 2009, 16:36 »
Zupełnie inaczej wygląda to na G900, bo tam ram end jest na 84000000, a faktycznie kończy się na 88000000

 ?-?  64MB zabrane?.....
Windows Mobile: a story of love and hate.


Offline globalbus

  • GZU
  • Core
  • ****
  • Wiadomości: 1969
  • Podziękowań: 77
  • Płeć: Mężczyzna
  • N900 + Zest
Odp: [TUT] Ładowanie modułów do IDA Pro
« Odpowiedź #3 dnia: Niedziela, 30 Sierpień 2009, 16:40 »
Zupełnie inaczej wygląda to na G900, bo tam ram end jest na 84000000, a faktycznie kończy się na 88000000

 ?-?  64MB zabrane?.....
tylko dla romhdr, nk.exe widzi normalnie 128MB
ujmijmy to tak. 128MB na 2 kościach, pmemmap pokazuje przestrzenie adresowe 80000000-84000000 i 84000000-88000000

Offline Mietas

  • ROMMaker
  • Core
  • ***
  • Wiadomości: 1302
  • Podziękowań: 53
  • Płeć: Mężczyzna
  • HTC HD2, WP7.5 Tango
    • Blog Mietasa
Odp: [TUT] Ładowanie modułów do IDA Pro
« Odpowiedź #4 dnia: Niedziela, 30 Sierpień 2009, 16:58 »
dzięki utak3r, tutek się przyda, z pewnością.
HTC HD2, WP7.5 Tango 7.10.8773 by Ansar

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8260
  • Podziękowań: 137
  • Płeć: Mężczyzna
  • Samsung Ace, Raphael, Hermes, Universal i inne
    • Wirtualne Zacisze utak3ra
Odp: [TUT] Ładowanie modułów do IDA Pro
« Odpowiedź #5 dnia: Niedziela, 30 Sierpień 2009, 17:03 »
dzięki utak3r, tutek się przyda, z pewnością.

Acha, tak na przyszłość: w oknie Hex ustawiamy "synchronize with..." i dajemy okno, w którym pracujemy. Wtedy łatwo namierzyć hex, który potem należy odnaleźć w jakimś HxD czy innym hexedytorze :)
Windows Mobile: a story of love and hate.


nokser

  • Gość
Odp: [TUT] Ładowanie modułów do IDA Pro
« Odpowiedź #6 dnia: Niedziela, 30 Sierpień 2009, 18:05 »
Jak dla mnie ten edytor jest funkcjonalny, ale toporny.
Używam go dosyć często....
Tutek, to dobry pomysł, choć dużo by pisać o rozwiniętych funkcjach tego progsa...

Offline Mietas

  • ROMMaker
  • Core
  • ***
  • Wiadomości: 1302
  • Podziękowań: 53
  • Płeć: Mężczyzna
  • HTC HD2, WP7.5 Tango
    • Blog Mietasa
Odp: [TUT] Ładowanie modułów do IDA Pro
« Odpowiedź #7 dnia: Niedziela, 30 Sierpień 2009, 18:33 »
.. z tego co rozumiem/wiem, tym programem nie da rady przerobić jądra na AKU5 ? Ale większość rzeczy mogę dowolnie zmieniać? ;)
HTC HD2, WP7.5 Tango 7.10.8773 by Ansar

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8260
  • Podziękowań: 137
  • Płeć: Mężczyzna
  • Samsung Ace, Raphael, Hermes, Universal i inne
    • Wirtualne Zacisze utak3ra
Odp: [TUT] Ładowanie modułów do IDA Pro
« Odpowiedź #8 dnia: Niedziela, 30 Sierpień 2009, 18:49 »
choć dużo by pisać o rozwiniętych funkcjach tego progsa...

..dlatego nawet nie miałem zamiaru się za taki opis zabierać: będą go używać ci, co wiedzą, jak się disasemblerami posługiwać... moim celem było opisanie, jak załadować coś innego, niż gotową dllkę czy exeka.



dodano: Niedziela, 30 Sierpień 2009, 18:47
.. z tego co rozumiem/wiem, tym programem nie da rady przerobić jądra na AKU5 ?

to nie jest przeróbka, tylko rekompilacja, dochodzą nowe funkcje.... przeróbka to była przy przesiadce na wm6.
Windows Mobile: a story of love and hate.


nokser

  • Gość
Odp: [TUT] Ładowanie modułów do IDA Pro
« Odpowiedź #9 dnia: Niedziela, 30 Sierpień 2009, 19:38 »
A tu można pobrać Ide Pro

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8260
  • Podziękowań: 137
  • Płeć: Mężczyzna
  • Samsung Ace, Raphael, Hermes, Universal i inne
    • Wirtualne Zacisze utak3ra
Odp: [TUT] Ładowanie modułów do IDA Pro
« Odpowiedź #10 dnia: Niedziela, 30 Sierpień 2009, 20:01 »
można pobrać

...która w wersji ewaluacyjnej nie obsługuje ARMów ;)
Windows Mobile: a story of love and hate.


Offline Mietas

  • ROMMaker
  • Core
  • ***
  • Wiadomości: 1302
  • Podziękowań: 53
  • Płeć: Mężczyzna
  • HTC HD2, WP7.5 Tango
    • Blog Mietasa
Odp: [TUT] Ładowanie modułów do IDA Pro
« Odpowiedź #11 dnia: Niedziela, 30 Sierpień 2009, 23:43 »
Hmm, jak w tym programie cokolwiek zmienić? Mam wersję demo IDA Pro.
HTC HD2, WP7.5 Tango 7.10.8773 by Ansar

Offline utak3r

  • Global Moderator
  • Core
  • *****
  • Wiadomości: 8260
  • Podziękowań: 137
  • Płeć: Mężczyzna
  • Samsung Ace, Raphael, Hermes, Universal i inne
    • Wirtualne Zacisze utak3ra
Odp: [TUT] Ładowanie modułów do IDA Pro
« Odpowiedź #12 dnia: Poniedziałek, 31 Sierpień 2009, 00:02 »
A to już zależy, co chcesz zrobić... w kodzie jeśli cokolwiek zmienisz, musiałbyś zrekompilować źródła: a tego nie zrobisz... więc jedyne, co pozostaje, to odnaleźć korespondujący z danym fragmentem hex i wyedytować go w hexedytorze. Sama IDA tutaj nam służy jako analizator kodu - nie narzędzie do zmian.
Windows Mobile: a story of love and hate.