Narzędzia użytkownika

Narzędzia witryny


ide_ida-pro

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
Next revision
Previous revision
ide_ida-pro [2010/12/28 21:53]
msulek Dodanie wstępu do artykułu.
ide_ida-pro [2010/12/29 01:39] (aktualna)
msulek
Linia 3: Linia 3:
 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.\\ ​ 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.\\ 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 [[http://​pl.wikipedia.org/​wiki/​In%C5%BCynieria_odwrotna|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 – należy ​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ść [[http://​pl.wikipedia.org/​wiki/​Cracking#​Cracking_oprogramowania | crackingu oprogramowania]] oraz tworzenia generatorów kluczy dla programów w wersji trial, które umożliwiają odblokowanie funkcjonalności z poziomu programu.\\+Należy wspomnieć o głównym zastosowaniu jakim jest wykorzystanie programu IDA Pro  do wspomagania techniki inżynierii wstecznej. Sama [[http://​pl.wikipedia.org/​wiki/​In%C5%BCynieria_odwrotna|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ść [[http://​pl.wikipedia.org/​wiki/​Cracking#​Cracking_oprogramowania | 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. 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.+>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 [[http://​www.hex-rays.com/​idapro/​idadown.htm|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.//​ 
 +  - Uruchamiamy program IDA Pro 
 +  - Z okna '​Welcome to IDA!' wybieramy opcję '​New'​. 
 +  - 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'​. 
 +  - Następnie wybieramy plik, który chcemy poddać deasemblacji. 
 +  - W kolejnym oknie program pozwala na wybór dwóch opcji: 
 +    - '​Imported DLL options'​ – możliwość wyboru dodatkowych opcji dla importowanych plików dll. 
 +    - '​Analysis options'​ - możliwość wyboru dodatkowych opcji analizy wybranego pliku. 
 +  - Ponieważ to nasz pierwszy projekt to nie zaznaczamy żadnej z tej opcji, aby przejść dalej klikamy '​Dalej'​. 
 +  - W kolejnym oknie, program znów umożliwia nam do wyboru dwie opcje: 
 +    - '​Create imports segment'​ - możliwość utworzenia bloków plików importowanych. 
 +    - '​Create resources segment'​ - możliwość utworzenia bloku używanych zasobów. 
 +  - Domyślnie zaznaczona jest pierwsza opcja i ona w zupełności wystarczy nam do pierwszego projektu, klikamy przycisk '​Dalej'​ 
 +  - 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. 
 +  - Pozostawiamy zaznaczoną domyślnie opcję i klikamy '​Zakończ'​. 
 +  - 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. 
 +  - Po wybraniu którejś z opcji program rozpoczyna analizę pliku wykonywalnego. 
 +  - 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. 
 +  - 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, a w czasie trwania analizy pliku.\\ 
 +{{:​mainwindowida.png?​400x213|}} 
 + 
 +===== 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.\\ 
 + 
 +==== Menu górne ==== 
 +Okno główne programu składa się z tradycyjnego menu, które daje nam następujące możliwości:​\\ 
 +  - '​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. 
 +  - '​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). 
 +  - '​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. 
 +  - '​Search'​ - pozwala na przeszukiwanie projektu. 
 +  - '​View'​ - modyfikacja wyglądu. 
 +  - '​Debugger'​ - podglądanie stanu procesu (rejestry procesora itp.) oraz opcje związane z debugowaniem. 
 +  - '​Options'​ - zmiana opcji programu (kolorystyka kodu, opcje wyświetlania,​ opcje kodowania, opcje kompilatora itp.). 
 +  - '​Windows'​ - ustawienia wyświetlanych okien, włącznie z możliwością zapisywania widoków oraz ich wczytywania. 
 +  - '​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. 
 +  - 'IDA View-A'​ - okno zawierające kod programu w postaci instrukcji maszynowych. 
 +  - 'Hex View-A'​ - kod programu w postaci szesnastkowej. 
 +  - '​Exports'​ - zasoby zewnętrzne eksportowane z analizowanego programu. 
 +  - '​Imports'​ - zasoby importowane do analizowanego programu. 
 +  - '​Names'​ - nazwy zmiennych oraz stałych analizowanego programu oraz adresy, pod którymi się znajdują. 
 +  - '​Functions'​ - nazwy funkcji analizowanego programu oraz ich adresy. 
 +  - '​Strings'​ - adresy, długości oraz zawartość łańcuchów znaków z analizowanego programu. 
 +  - '​Structures'​ - struktury danych z analizowanego programu. 
 +  - '​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.\\ 
 + 
 +{{:​flowchart.jpg?​400x203|}} 
 + 
 +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:​\\ 
 +  - [[http://​www.hexblog.com/​|Oficjalny program producenta programu.]] 
  
  
  
ide_ida-pro.1293569595.txt.gz · ostatnio zmienione: 2010/12/28 21:53 przez msulek