REA a Ghidra: jaki sposób pracy przy inżynierii odwrotnej wybrać?
Porównaj REA i Ghidra pod względem zadań, danych wejściowych, wyników, ręcznej kontroli, wymagań konfiguracji i możliwości używania Ghidra przez REA.
Co nowego na tej stronie
- — Opublikowano przykłady społeczności poparte źródłami, praktyczne poradniki i jasno opisane ograniczenia dowodów.
Użyj Ghidra, gdy chcesz bezpośrednio przeglądać i edytować projekt analizy natywnego pliku binarnego; użyj REA, gdy chcesz, aby agent programistyczny lub CLI zbadał oprogramowanie i zwrócił ustalenia wraz z dowodami. REA może korzystać z Ghidra jako dostawcy analizy natywnej, więc oba narzędzia mogą być częścią tego samego procesu pracy.
To niezależne porównanie przygotowane dla społeczności. Repozytorium REA i repozytorium Ghidra to podstawowe źródła informacji o aktualnych możliwościach i wymaganiach.
Czym różnią się REA i Ghidra?
Ghidra to platforma do inżynierii odwrotnej oprogramowania, oferująca dezasemblację, dekompilację, grafy, skrypty oraz analizę interaktywną lub automatyczną. Własne środowisko analityczne Ghidra daje analitykowi bezpośrednią kontrolę nad badaniem. Oficjalne README Ghidra opisuje obsługę procesorów, formatów plików wykonywalnych i rozszerzeń.
REA to serwer MCP i narzędzie CLI obejmujące kilka grup obiektów analizy, w tym natywne pliki binarne, aplikacje JavaScript/Electron, strony w przeglądarce i zestawy zarządzane. Agent programistyczny wywołuje narzędzia REA, otrzymuje ustalenia i informacje o ograniczeniach oraz decyduje, co zbadać dalej. Przy dogłębnej analizie natywnej REA łączy się z obsługiwaną instalacją Ghidra, Hopper lub IDA. Poradnik analizy natywnej REA wyjaśnia tę relację z dostawcą silnika.
| Czego potrzebujesz? | Lepszy punkt wyjścia | Dane wejściowe | Wynik lub zaleta |
|---|---|---|---|
| Ręcznie śledzić funkcje i grafy pliku binarnego | Bezpośrednio Ghidra | Obsługiwany plik binarny | Pełne interaktywne środowisko analityczne i bezpośrednia kontrola nad projektem |
| Zapytać agenta, dlaczego funkcja natywna zachowuje się w określony sposób | REA z obsługiwanym dostawcą silnika natywnego | Plik binarny i konkretne pytanie | Ustalenia, dowody i wyjaśnienie uzyskane w analizie prowadzonej przez agenta |
| Zachować projekt analizy i rozwijać go z czasem | Bezpośrednio Ghidra | Zaimportowany program i zmiany analityka | Praca z trwałym projektem pod Twoją kontrolą |
| Zbadać moduł Electron lub ścieżkę IPC | Analiza JavaScript w REA | Folder aplikacji lub ASAR | Moduły, zależności i lokalizacje w kodzie źródłowym bez silnika natywnego |
| Oskryptować powtarzalną analizę natywną | Dowolne z nich, zależnie od potrzebnej kontroli | Plik binarny i skrypt analizy lub żądanie CLI | Skrypty Ghidra lub ustrukturyzowane wyniki CLI REA |
Kiedy Ghidra jest lepszym wyborem?
Wybierz bezpośrednio Ghidra, gdy praca wymaga ciągłej eksploracji wizualnej, szczegółowych zmian wprowadzanych przez analityka, własnych skryptów lub trwałej bazy danych programu. Własny interfejs Ghidra udostępnia sam projekt analizy. Doświadczony analityk może badać instrukcje i grafy bez przekładania każdej czynności na żądanie do agenta.
Używanie REA z Ghidra nie udostępnia wszystkich funkcji Ghidra przez MCP. Dokumentacja dostawcy silnika REA opisuje zweryfikowane operacje i ograniczenia środowiska hosta. Udokumentowany bezinterfejsowy tryb pracy REA wykorzystuje projekt tymczasowy; nie otwiera istniejącego projektu użytkownika. Wybierz bezpośredni interfejs Ghidra, jeśli wymagane jest utrzymanie tego istniejącego projektu.
Ghidra ma również własne procesy automatyzacji i pracy ze skryptami. Twierdzenie, że Ghidra działa wyłącznie ręcznie, byłoby nieprawidłowe. Przydatną cechą wyróżniającą REA jest wspólny interfejs agenta i CLI dla różnych typów obiektów analizy, a nie wyłączny dostęp do automatyzacji.
Kiedy REA jest lepszym punktem wyjścia?
REA przydaje się przy konkretnym pytaniu, które prowadzi od badania do implementacji. Agent może na przykład zbadać obliczenie, wskazać odpowiednie instrukcje i odwołania, wyjaśnić regułę, a następnie napisać niewielką implementację do przetestowania. Wniosek agenta nadal wymaga sprawdzenia względem oryginalnego zachowania.
Oficjalne studium przypadku DX-Ball śledzi wywołanie dźwięku do funkcji pomocniczej przeliczającej pozycję na panoramę i odtwarza to obliczenie w C. Projekt podaje 3,205 przypadków testowych względem oryginalnego kodu x86 oraz zgodność wszystkich 63 bajtów skompilowanej funkcji. Wyniki te dotyczą tego konkretnego opisanego przykładu; nie określają ogólnej skuteczności REA ani przewagi wydajności nad Ghidra.
REA oferuje też sposoby pracy wykraczające poza dekompilację kodu natywnego. W przypadku aplikacji Electron statyczna analiza JavaScript może identyfikować moduły i powiązania IPC bez uruchamiania Ghidra. Dzięki temu REA jest wygodnym punktem wyjścia, gdy analiza obejmuje pakowanie aplikacji, JavaScript i wybrane komponenty natywne. Tabela obiektów analizy REA wymienia odrębne wymagania wstępne.
Jak korzystać z Ghidra przez REA?
Zainstaluj wydanie Ghidra i JDK obsługiwane według dokumentacji dostawcy silnika REA, a następnie skonfiguruj REA do korzystania z tej instalacji. Konfiguracja REA może zapisać zweryfikowane istniejące ścieżki; nie pobiera ani nie instaluje za Ciebie Ghidra lub Java. Oficjalny poradnik konfiguracji zawiera aktualne instrukcje konfiguracji.
Nie zakładaj, że najnowsze wydanie Ghidra jest automatycznie zgodne z zainstalowanym pakietem REA. Wymagania bieżącego wydania samego Ghidra i przetestowany zakres dostawcy silnika REA służą różnym celom. W dniu publikacji tego artykułu poradnik instalacji REA w gałęzi main opisuje sprawdzenie dostawcy silnika Ghidra 12.1.x; przed wyborem wersji zapoznaj się z tym poradnikiem i możliwościami zainstalowanego serwera.
Po skonfigurowaniu dostawcy silnika diagnostykę w jego zakresie można uruchomić tak:
npx -y rea-agents@latest doctor --provider ghidra --json
Operacje oparte na Ghidra mogą przy pierwszym zapytaniu potrzebować czasu na import i automatyczną analizę. Duże pliki binarne mogą wymagać dłuższego limitu czasu uruchomienia dostawcy silnika, podczas gdy klient MCP może mieć własny, krótszy limit czasu żądania. Diagnozując taką sytuację, skorzystaj z udokumentowanych wskazówek dotyczących limitów czasu i przywracania działania.
Jakie ograniczenia powinny wpłynąć na decyzję?
Obsługa dostawców silników w REA zależy od hosta i obiektu analizy. Zakres Windows Ghidra P0 jest wyraźnie oznaczony jako eksperymentalny i węższy niż ogólna obsługa platform i formatów przez Ghidra. Przeczytaj poradnik dostawcy silnika dla Windows, zamiast wnioskować o zgodności na podstawie możliwości ręcznego zaimportowania pliku w Ghidra.
Gałąź main REA może również opisywać funkcje nowsze niż pakiet npm instalowany przez @latest. Sam fakt, że dana wersja pakietu działa, nie potwierdza dostępności każdej operacji z gałęzi main. Sprawdź różnice między wydaniem a gałęzią main i schematy podłączonych narzędzi.
Oba sposoby pracy wymagają krytycznej oceny. Zdekompilowany pseudokod nie jest oryginalnym kodem źródłowym, zachowanie pośrednie może pozostać niewyjaśnione, a agent programistyczny może błędnie zinterpretować poprawne dowody. Potwierdzaj ważne wnioski na podstawie odpowiednich instrukcji, odwołań i kontrolowanego sprawdzenia zachowania.
Jakie pytania pojawiają się o REA i Ghidra?
Czy REA zastępuje Ghidra?
REA może używać Ghidra jako silnika i nie zastępuje pełnego interaktywnego środowiska Ghidra. Wybierz interfejs pasujący do zadania lub połącz oba.
Czy któreś z narzędzi jest bezpłatne?
Kod autorstwa REA jest udostępniany na licencji MIT. Ghidra to projekt o otwartym kodzie źródłowym z opublikowaną licencją i informacjami o komponentach innych podmiotów. Dostęp do modelu agenta programistycznego i opcjonalni dostawcy komercyjni, tacy jak Hopper lub IDA, podlegają odrębnym warunkom. Zobacz licencję REA i licencję Ghidra.
Czy mogę badać JavaScript bez Ghidra?
Tak. Statyczna analiza JavaScript/Electron w REA korzysta z Node.js i npm, a nie z natywnego dekompilatora. Natywny dodatek w takiej aplikacji jest odrębnym obiektem analizy z własnymi wymaganiami.
Którego narzędzia początkujący powinien spróbować najpierw?
Aby uczyć się asemblera i ręcznej analizy plików binarnych, zacznij od materiałów samego Ghidra. Aby uczyć się analizy prowadzonej przez agenta wokół konkretnego pytania, zacznij od przykładu Notes w REA lub naszego poradnika konfiguracji REA. Mniejszy obiekt analizy i pytanie, którego odpowiedź można sprawdzić, ułatwiają ocenę obu podejść.