Narzędzia użytkownika

Narzędzia witryny


ide_ida-pro

To jest stara wersja strony!


IDA Pro

Wstęp

IDA Pro (skrót IDA oznacza 'Interactive Disassembler' co w tłumaczeniu na język polski oznacza 'Interaktywną Deasemblację') to program umożliwiający deasemblację oraz debugowanie programów wykonywalnych systemów Linux, Windows oraz Mac OS X. Wachlarz możliwości programu oraz jego zastosowań jest na tyle szeroki, że trudno opisać go kilkoma zdaniami.
Wydawcą programu jest firma Hex-Rays (http://www.hex-rays.com), która udostępnia za darmo, do celów niekomercyjnych wersję o jeden mniejszą niż aktualna wersja płatna. Obecnie jest to wersja 5.0.
Należy wspomnieć o głównym zastosowaniu jakim jest wykorzystanie programu IDA Pro do wspomagania techniki inżynierii wstecznej. Sama inżyniera wsteczna (zwana również odwrotną) to szerokie pojęcie funkcjonujące nie tylko w informatyce, ale również w wielu innych dziedzinach życia – trzeba zaznaczyć, że w niektórych krajach technika ta uznawana jest za nielegalną. W samej informatyce umożliwia ona pisanie poprawek do istniejących już programów, wstrzykiwanie własnego kodu i jego wykonywanie oraz wiele więcej. Jak nie trudno się domyśleć pociąga to za sobą między innymi możliwość crackingu oprogramowania oraz tworzenia generatorów kluczy dla programów w wersji trial, które umożliwiają odblokowanie funkcjonalności z poziomu programu.
Drugim zastosowaniem wartym uwagi jest możliwość debugowania wykonywalnych programów systemu Windows w zdalnym środowisku uruchomionym na systemie Linux, co daje możliwość debugowania wirusów bez obawy o bezpieczeństwo systemów: zarówno zdalnego jak i lokalnego. Więcej informacji na ten temat dostępne pod adresem http://www.hex-rays.com/idapro/linux/index.htm. Poniżej cytat z opisu producenta.

A typical use of the remote linux debugger would be the safe analysis of an hostile Windows binary: the Linux debugger, for example, brings unprecedented flexibility and security to the virus analyst. A typical use of the remote Windows debugger would be Linux debugging in a comfortable, well known GUI.

Pobieranie i instalacja

Naszą przygodę z programem IDA Pro rozpoczynamy oczywiście od pobrania programu ze strony wydawcy i jego instalacji. Cały ten proces jest na tyle typowy, że nie zostanie on tu szczegółowo opisany.
Dla celów niekomercyjnych, a więc tym bardziej edukacyjnych pobieramy oczywiście wersję freeware.
Poniższy opis został przygotowany w oparciu o wersję 5.0 dla systemu Windows.

Pierwszy projekt

Przy pierwszym uruchomieniu musimy zaakceptować licencję programu.

  1. Uruchamiamy program IDA Pro
  2. Z okna 'Welcome to IDA!' wybieramy opcję 'New'.
  3. Dalej program umożliwia nam wybranie typu pliku, którego analizą będziemy się zajmować. Ponieważ nas interesuje analiza pliku wykonywalnego systemu Windows wybieramy pozycję 'PE Executables' i klikamy 'Ok'.
  4. Następnie wybieramy plik, który chcemy poddać deasemblacji.
  5. W kolejnym oknie program pozwala na wybór dwóch opcji:
    1. 'Imported DLL options' – możliwość wyboru dodatkowych opcji dla importowanych plików dll.
    2. 'Analysis options' - możliwość wyboru dodatkowych opcji analizy wybranego pliku.
  6. Ponieważ to nasz pierwszy projekt to nie zaznaczamy żadnej z tej opcji, aby przejść dalej klikamy 'Dalej'.
  7. W kolejnym oknie, program znów umożliwia nam do wyboru dwie opcje:
    1. 'Create imports segment' - możliwość utworzenia bloków plików importowanych.
    2. 'Create resources segment' - możliwość utworzenia bloku używanych zasobów.
  8. Domyślnie zaznaczona jest pierwsza opcja i ona w zupełności wystarczy nam do pierwszego projektu, klikamy przycisk 'Dalej'
  9. Następnie ukazuje nam się ostatnie już okno, w którym domyślnie zaznaczoną opcją jest 'Start analysis now', odznaczenie tej opcji spowoduje załadowanie pliku z wybranymi opcjami analizy do programu, ale sama analiza nie zostanie dokonana natychmiast. Odznaczenie tej opcji jest szczególnie przydatne kiedy analiza ma zostać wykonana później lub na innej maszynie, a przy zaznaczonych opcjach 'Imported DLL options' oraz 'Analysis options' ilość później dobranych parametrów projektu jest dość pracochłonna - stąd możliwość przenoszenia projektu zdaje się być niezwykle przydatna.
  10. Pozostawiamy zaznaczoną domyślnie opcję i klikamy 'Zakończ'.
  11. W przypadku niektórych plików wykonywalnych IDA Pro może zgłosić komunikat, że wykryto informacje o debugowaniu zawarte w programie oraz zapyta czy chcemy wyszukać korespondujące pliki PDB w pamięci lokalnej lub w Microsoft Symbol Server, zazwyczaj zaleca się wyrażenie zgody na wyszukanie wspomnianych plików, które ułatwiają debugowanie pliku.
  12. Po wybraniu którejś z opcji program rozpoczyna analizę pliku wykonywalnego.
  13. Na samym dole ekranu program wyświetla aktualny status działania, zakończenie analizy objawia się komunikatem 'The initial autoanalysis has been finished'. Warto zaznaczyć, że zmiany wynikające z postępu analizy możemy obserwować na żywo w oknie programu.
  14. W ten sposób utworzyliśmy nasz pierwszy projekt, teraz możemy przejść do analizy pliku wykonywalnego pod założonym przez siebie wcześniej kątem.

Przykładowy wygląd programu po utworzeniu pierwszego projektu.

Poruszanie się po programie

Jak już zostało wspomniane wcześniej, program ma bardzo dużo funkcji i opcji. Jednak dla rozpoczęcia nauki i tworzenia prostych projektów należy zapoznać się z podstawowymi przedstawionymi poniżej.

Okno główne programu składa się z tradycyjnego menu, które daje nam następujące możliwości:

  1. 'File' - wszelkie operacje dotyczące plików: tworzenie nowego projektu, zamykanie projektu, ładowanie plików do istniejącego, produkowanie plików wynikowych z analizy pliku, uruchamianie komendy programu IDA etc.
  2. 'Edit' - opcje związane z edytowaniem treści, program umożliwia zaawansowane edytowanie treści utworzonych podczas analizy. Należy tu zaznaczyć, że podczas całego procesu program sam generuje nazwy funkcji i zmiennych, które jednak mogą być zmieniane (tzw. refaktoryzacja).
  3. 'Jump' - umożliwia przechodzenie do określonego miejsca w projekcie. Możemy to uczynić na wiele różnych sposobów - między innymi podając adres lub nazwę zarówno funkcji jak i zmiennej.
  4. 'Search' - pozwala na przeszukiwanie projektu.
  5. 'View' - modyfikacja wyglądu.
  6. 'Debugger' - podglądanie stanu procesu (rejestry procesora itp.) oraz opcje związane z debugowaniem.
  7. 'Options' - zmiana opcji programu (kolorystyka kodu, opcje wyświetlania, opcje kodowania, opcje kompilatora itp.).
  8. 'Windows' - ustawienia wyświetlanych okien, włącznie z możliwością zapisywania widoków oraz ich wczytywania.
  9. 'Help' - pomoc i informacje o programie.

Pasek narzędzi

W programie znajduje się również znany z wielu programów pasek narzędzi zawierający ikony będące skrótem do najpotrzebniejszych opcji.
Opcje te nie różnią się niczym od tych dostępnych z poziomu tradycyjnego menu górnego, stąd zaleca się samodzielne zapoznanie z tym paskiem - jeśli któraś z ikon jest niejasna po najechaniu na nią możemy zobaczyć jej opis.
Warto zauważyć, że poniżej paska narzędzi znajduje się również graf wypełnienia rezerwowanej przez analizowany program pamięci. Poszczególne kolory oznaczają jaki typ danych wypełnia pamięć.

Zakładki główne

Główną przestrzeń w programie zajmują zakładki zawierające wynik analizy.

  1. 'IDA View-A' - okno zawierające kod programu w postaci instrukcji maszynowych.
  2. 'Hex View-A' - kod programu w postaci szesnastkowej.
  3. 'Exports' - zasoby zewnętrzne eksportowane z analizowanego programu.
  4. 'Imports' - zasoby importowane do analizowanego programu.
  5. 'Names' - nazwy zmiennych oraz stałych analizowanego programu oraz adresy, pod którymi się znajdują.
  6. 'Functions' - nazwy funkcji analizowanego programu oraz ich adresy.
  7. 'Strings' - adresy, długości oraz zawartość łańcuchów znaków z analizowanego programu.
  8. 'Structures' - struktury danych z analizowanego programu.
  9. 'Enums' - typy wyliczeniowe z analizowanego programu.

Podstawowe funkcje

IDA View-A

W tym oknie IDA Pro umożliwia realizowanie podstawowej funkcji jaką jest analiza kodu. Jak zostało już wspomniane okno to wyświetla kod analizowanego pliku w postaci instrukcji maszynowych, a więc pozwala nam na dokładną analizę jego działania. Co więcej możemy ten kod edytować oraz w miejscach gdzie program zarezerwował pamięć, ale jej nie wykorzystuje dopisać własny kod i próbować wykonać go podczas działania analizowanego pliku. Jest to dość trudna operacja i wymaga od użytkownika znajomości programowania, działania aplikacji oraz specyfiki danego systemu.

Strings

Jest to okno umożliwiające przejście do wybranego łańcuchu znaków oraz jego edycję. Jest to szczególnie przydatne gdy chcemy zmienić język jakiegoś programu - musimy jednak pamiętać, że zmiana długości powoduje późniejsze komplikacje, które winny być poprawione w innym miejscu kodu, dlatego najprościej nie zmieniać długości lub puste miejsca wypełniać niewidocznymi znakami. Jest to opcja, która dla początkującego użytkownika jest niezwykle ciekawa gdyż najprościej zobaczyć jej rezultaty.

Graphs

Jest to zdecydowanie jedna z najpotrzebniejszych funkcji programu IDA Pro ułatwiająca analizę kodu maszynowego.
Mamy do wyboru 5 typów grafów:

  • 'Flow chart' - graf przepływu w analizowanym programie (przechodzenie po funkcjach oraz ciała tych funkcji).
  • 'Functions calls' - graf wołania funkcji, a więc graf prezentujący wywołania poszczególnych funkcji.
  • 'Xrefs to' - graf zależności do podanej referencji.
  • 'Xrefs from' - graf zależności z podanej referencji.
  • 'User xrefs chart' - graf zdefiniowany przez użytkownika.

Na początku procesu analizy zdaje się być 'Flow chart' dzięki, któremu bez problemu możemy zorientować się jaka jest struktura funkcjonalna programu oraz jak dostać się do poszczególnych funkcji.
Poniżej przykładowy graf przepływu.

Poszczególne grafy można wygenerować korzystając z menu górnego: 'View' - 'Charts'.

Przydatne linki

Celem lepszego zrozumienia wykorzystania programu należy zapoznać się z publikacjami dotyczącymi zarówno samego programu jak i samych metod inżynierii wstecznej:

ide_ida-pro.1293582994.txt.gz · ostatnio zmienione: 2010/12/29 01:36 przez msulek