Zrozumienie koncepcji inżynierii odwrotnej
Inżynierowie czasami muszą myśleć wstecz, aby przeanalizować produkt. Na przykład inżynier mechanik może wyciągnąć wnioski na temat produkcji produktu na podstawie jego projektu i właściwości fizycznych. Mogą nawet być w stanie wyprodukować ten sam produkt, jeśli dokładnie go zrozumieją.
Inżynierię odwrotną można również porównać do dowodu równań matematycznych. Jak więc stosowana jest inżynieria odwrotna?
Co to jest inżynieria wsteczna?
Inżynieria wsteczna to proces analizy systemu w celu jego odtworzenia lub ulepszenia. Jeśli przyjrzysz się obszarom roboczym inżynierii odwrotnej, zobaczysz, że możesz ją wykorzystać do wielu różnych celów. Patrząc na to z perspektywy cyberbezpieczeństwa, metodami inżynierii odwrotnej można wykonać następujące operacje:
- Analiza źródłowa oprogramowania innego niż open source
- Analiza podatności
- Analiza złośliwego oprogramowania
- Pękanie i patchowanie
Inżynierię odwrotną można zobaczyć nawet w dzisiejszych grach komputerowych. Na przykład programiści często tworzą modyfikacje oprogramowania przy użyciu metod inżynierii wstecznej.
W dziedzinie inżynierii odwrotnej istnieją dwie różne metody analizy: statyczna i dynamiczna. Analizę statyczną przeprowadzasz, gdy analizujesz program bez faktycznego jego uruchamiania. Z drugiej strony metoda analizy dynamicznej wymaga uruchomienia programu w celu obserwacji jego zachowania i danych, z których korzysta.
Zanim jednak przeprowadzisz analizę pod kątem inżynierii wstecznej, musisz poznać kilka ważnych terminów dotyczących działania architektury komputera.
Główne części architektury komputera
Inżynieria wsteczna jest praktycznie niemożliwa, chyba że rozumiesz architekturę komputera. Musisz przestudiować cztery główne części:
- Wejście : Zestaw metod wprowadzania danych.
- CPU : Procesor przetwarza przychodzące dane i przesyła je do swoich właścicieli. Jest to jednostka centralna.
- Pamięć : Przestrzeń, która tymczasowo przechowuje dane podczas przetwarzania.
- Wyjście : wynik, który widzi użytkownik końcowy.
Możesz zapamiętać wszystkie te główne kwestie na przykładzie, na przykład gdy naciśniesz literę A na klawiaturze. Po jego naciśnięciu następuje zdarzenie wejściowe. Po tym etapie procesor przetwarza dane i wykorzystuje niewielką przestrzeń w pamięci do ich przechowywania. Na koniec zobaczysz literę A na ekranie, kończącą proces z wyjściem.
Zanurz się w głąb procesora
Jeśli naprawdę chcesz zostać ekspertem w inżynierii wstecznej i zagłębić się w ten temat, musisz mieć szczegółową wiedzę na temat sprzętu, języków niskiego poziomu, a zwłaszcza procesora. Kluczowe tematy, które musisz wiedzieć o procesorze, to:
- Jednostka sterująca : Odpowiada za przetwarzanie danych w CPU i ich przekazywanie do odpowiednich pól. Możesz myśleć o tym urządzeniu jako o mechanizmie kontroli routingu.
- ALU : To oznacza arytmetyczną jednostkę logiczną. W tym miejscu odbywają się niektóre operacje arytmetyczne i logiczne. Jeśli zagłębisz się w matematykę, zobaczysz, że cztery podstawowe operacje są zasadniczo wariacjami na temat dodawania. Tak więc ALU opiera się na agregacji. Na przykład odjęcie dwóch od trzech jest tym samym, co dodanie minus dwa do trzech.
- Rejestry : Są to obszary wewnątrz procesora, w których przechowywane są przetwarzane dane. Istnieją różne typy rejestrów, podobnie jak istnieją różne typy zmiennych w języku programowania. Rejestr odpowiada za zachowanie rodzaju i atrybutów przypisanych do niego danych.
- Sygnały : Jeśli chcesz, aby procesor wykonywał wiele różnych operacji w tym samym czasie, konieczna jest jakaś metoda ich zorganizowania. Elementy, które to robią, nazywane są sygnałami. Każda transakcja działa zgodnie z sygnałami, które zapewniają, że nie zakłóca innego procesu.
- Magistrala : Ścieżka używana przez dane do przemieszczania się z jednej jednostki do drugiej. Zwróć uwagę, jak nazwa sugeruje transport.
Pojęcia, które często usłyszysz w inżynierii odwrotnej
Zrozumienie, w jaki sposób procesor przetwarza dane i przechowuje je w pamięci, wraz z koncepcją rejestrów, może być bardzo przydatne podczas inżynierii wstecznej. W szczególności możesz skorzystać z poniższego diagramu, aby lepiej zrozumieć pojęcie pamięci:
Wreszcie, aby przeprowadzić analizę inżynierii odwrotnej, musisz znać kilka podstawowych pojęć dotyczących rejestrów. To jeden z tematów, na których skupisz się najbardziej. Oto kilka wyjaśnień dotyczących danych, wskaźników i rejestrów indeksów, które będą przydatne w najbardziej zwięzły sposób:
- 1. EAX : oznacza rejestr akumulatorów. Zwykle zapisuje dane, które należą tutaj do kategorii operacji arytmetycznych.
- 2. EBX : oznacza rejestr podstawowy. Odgrywa rolę w adresowaniu pośrednim.
- 3. EDX : oznacza rejestr danych. EDX pomaga innym rejestrom.
- 4. EIP : oznacza wskaźnik instrukcji. Przechowuje adres domeny do uruchomienia.
- 5. ESP : Przechowuje adres bazowy.
- 6. ESI : Przechowuje informacje o indeksie źródłowym.
- 7. EDI : Przechowuje informacje o indeksie miejsca docelowego.
Powinieneś zbadać je wszystkie osobno, aby zrozumieć ich niuanse. Ale jeśli spojrzysz na podstawy i spróbujesz zrozumieć logikę biznesową, bez względu na architekturę procesora, z którą pracujesz, analiza kodu dla inżynierii wstecznej będzie dość łatwa.
Inżynieria wsteczna często zaczyna się od kodu maszynowego. Możesz zrozumieć wiele z powyższych terminów, jeśli jesteś zaznajomiony z asemblerem lub znasz architekturę procesorów 32-bitowych lub 64-bitowych. Jeśli chcesz nauczyć się asemblera od podstaw, będzie to niezwykle przydatne w inżynierii odwrotnej.
Co zrobisz z tym wszystkim?
Jeśli masz dobrą wiedzę na temat inżynierii wstecznej, możesz przeprowadzić analizę kodu bez względu na system operacyjny lub architekturę procesora, z którym pracujesz. Na przykład można znaleźć crackowane wersje wielu programów lub gier komputerowych. Jest to całkowicie nielegalna metoda.
Jeśli jednak zamierzasz być etycznym profesjonalistą w dziedzinie cyberbezpieczeństwa, będziesz musiał użyć inżynierii wstecznej, aby zrozumieć, dlaczego te złamane programy są łamane. Jeśli chcesz rozwijać się w inżynierii odwrotnej lub dopiero zaczynasz, dobrym wyborem będzie próba poznania relacji między sprzętem a kodem maszynowym.
Dodaj komentarz