dynamic-instrumentation
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
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
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.
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().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).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.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.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.