Toolverse
All skills

dynamic-instrumentation

by gmh5225

Expertise in LLVM-based dynamic binary instrumentation, runtime tracing, and program monitoring. Use this skill when implementing runtime analysis tools, code coverage systems, profilers, or dynamic security monitors.

Installation

Pick a client and clone the repository into its skills directory.

Installation

Quick info

Author
gmh5225
Category
Testing
Views
9

About this skill

Expertise in LLVM-based dynamic binary instrumentation, runtime tracing, and program monitoring. Use this skill when implementing runtime analysis tools, code coverage systems, profilers, or dynamic security monitors.

How to use

  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.

Related skills