Toolverse
Wszystkie skille

dynamic-instrumentation

autor: gmh5225

Instrumentacja binarna w czasie rzeczywistym – monitoruj i analizuj kod bez dostępu do źródła

Instalacja

Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.

Instalacja

Szybkie info

Autor
gmh5225
Kategoria
Testowanie
Wyświetlenia
9

O skillu

Skill do dynamicznej instrumentacji binarnej oparty na infrastrukturze LLVM. Pozwala modyfikować zachowanie programów w trakcie wykonania, wstawiać kod analityczny w dowolne punkty i monitorować przebieg działania aplikacji. Idealne do budowy narzędzi do analizy runtime'owej, systemów pomiaru pokrycia kodu, profilerów i monitorów bezpieczeństwa. Obejmuje praktyczną wiedzę na temat QBDI (QuarkslaB Dynamic Binary Instrumentation), Instrew i binopt – narzędzi opartych na LLVM do szybkiej instrumentacji i optymalizacji kodu binarnego.

Jak używać

  1. Zainstaluj QBDI (QuarkslaB Dynamic Binary Instrumentation) – główne narzędzie do instrumentacji binarnej opisane w skill'u. Pobierz je z oficjalnego repozytorium QuarkslaB i skompiluj lub zainstaluj prebudowaną wersję dla twojego systemu operacyjnego.

  2. Przygotuj funkcję callback'u do obsługi instrukcji. Utwórz funkcję w stylu onInstruction, która będzie wywoływana dla każdej instrukcji maszynowej. Funkcja powinna przyjmować referencję do VM, stan rejestrów (GPR i FPR) oraz wskaźnik na dane użytkownika. Wewnątrz callback'u możesz odczytać informacje o bieżącej instrukcji (adres, mnemonik, operandy) za pomocą vm.getInstAnalysis().

  3. Zainicjalizuj maszynę wirtualną QBDI i przydziel pamięć dla stosu. Utwórz instancję QBDI::VM, a następnie zaalokuj wirtualny stos za pomocą QBDI::allocateVirtualStack() z wymaganym rozmiarem (np. 0x100000 bajtów).

  4. Zarejestruj callback instrukcji w maszynie wirtualnej. Użyj metody vm.addCodeCB() z flagą QBDI::PREINST (aby callback wykonał się przed instrukcją) i przekaż funkcję callback'u oraz wskaźnik na dane użytkownika.

  5. Wykonaj funkcję docelową wewnątrz VM. Wywołaj vm.call() z adresem funkcji, którą chcesz monitorować, oraz listą argumentów. VM będzie śledzić każdą instrukcję i wywoływać twój callback dla każdej z nich.

  6. Przetwórz wyniki z callback'u. Dane zebrane w callback'u (adresy instrukcji, dostępy do pamięci, zmienne stanu) możesz logować, analizować lub przekazać do systemu monitorowania w celu budowy profilu wykonania, mapy pokrycia kodu lub wykrywania anomalii bezpieczeństwa.

Podobne skille