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.
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.
Przy pierwszym uruchomieniu musimy zaakceptować licencję programu.
Przykładowy wygląd programu po utworzeniu pierwszego projektu, a w czasie trwania analizy pliku.
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:
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ęć.
Główną przestrzeń w programie zajmują zakładki zawierające wynik analizy.
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.
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.
Jest to zdecydowanie jedna z najpotrzebniejszych funkcji programu IDA Pro ułatwiająca analizę kodu maszynowego.
Mamy do wyboru 5 typów grafów:
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'.
Celem lepszego zrozumienia wykorzystania programu należy zapoznać się z publikacjami dotyczącymi zarówno samego programu jak i samych metod inżynierii wstecznej: