Binär kod återanvändning är processen för att automatiskt identifiera gränssnittet och extrahera instruktioner och data beroenden av en kod fragment från ett körbart program, så att det är fristående och kan återanvändas av extern kod. Binär kod återanvändning är användbart för ett antal säkerhetsprogram, inklusive återanvändning av de egenutvecklade kryptografiska eller uppackande funktioner från ett malware prov och för att skriva om en nätverksdialogruta. I detta dokument genomför vi den första systematiska studien av automatiserad binär kod återanvändning och dess säkerhetsapplikationer. Den största utmaningen i binär kod återanvändning är att förstå kodfragmentets gränssnitt. Vi föreslår en ny teknik för att identifiera prototypen av en odokumenterad kodfragment direkt från programmets binära, utan tillgång till källkod eller symbolinformation. Vidare måste vi också extrahera koden själv från binären så att den är fristående och lätt kan återanvändas i ett annat program. Vi designar och implementerar ett verktyg som använder en kombination av dynamisk och statisk analys för att automatiskt identifiera prototypen och extrahera instruktionerna för en monteringsfunktion till en form som kan återanvändas av annan C-kod. Den extraherade funktionen kan köras oberoende av resten av programmets funktionalitet och delas med andra användare. Vi tillämpar vår strategi för scenarier som inkluderar extrahera kryptering och dekryptering rutiner från malware prover, och visar att dessa rutiner kan återanvändas av en nätverksproxy för att dekryptera krypterad trafik på nätverket. Detta gör det möjligt för nätverksproxyn att skriva om malwares krypterade trafik genom att kombinera extraherade krypterings- och dekrypteringsfunktioner med sessionsnycklarna och protokoll grammatiken. Vi visar också att vi kan återanvända ett kodfragment från en uppackningsfunktion för uppackningsrutinen för ett annat prov av samma familj, även om kodfragmentet inte är en komplett funktion.
Baserat på instruktionsprofilering extraherar BCR REF ytterligare gränssnittet för identifierade krypterings-/dekrypteringsfunktioner från binära körbara program.
Binary Code Extraction and Interface Identification for Security Applications
{'venue': 'NDSS', 'journal': None, 'mag_field_of_study': ['Computer Science']}