Capstone – ett ramverk för disassemblering

Sprang i dag på ett mycket intressant ramverk för att bygga disassembleringsprogram, dvs program som på olika sätt plockar i sär och analyserar binärfiler fär olika arkitekturer.

Ramverket heter Captstone och släpptes precis i 1.0-version. Capstone kan analysera och disassemblera binärfiler för ARM, ARM64 Mips och x86. Här finns en mer detaljerad lista över varianter på arkitekturer som stödjs. Capstone är alltså inte en debugger eller interaktiv disassemblator som IDA eller OllyDbg.

Däremot kan man använda Capstone för att bygga program som analyserar binärer. Program som kan vara interaktiva. Capstone används bland annat i verktyg för att analysera skadlig kod (eng: malware) exempelvis pyew och radare. Andra användningsområden är att bygga verktyg för att underlätta optimering av kod genom att ta fram användning av olika instruktioner, register m.m. Capstone är skrivet i C men kommer med wrappers för Python (Python2), Ruby, OCaml, C#, Java och Go.

Capstone är BSD-licensierat och är enkelt att installera och komma igång med. Jag testade att klona Capstone-repot samt bygga och installera bibliotek och Pythonwrappers. Följande exempel (från Capstone) visar ett enkelt program som tar in en binär och disassemblerar:

Testprogram med Capstone
Testprogram med Capstone
Testkörning Capstone
Testkörning Capstone

Capstone är inte det enda bilioteket av den här sorten. När jag kollade runt hittade jag bland annat udis86. Men Capstones förmåga att analysera binärer för många arkitekturer och dess (i mitt tycke) rena API och wrappers till högnivåspråk gör Capstone för mig högintressant. Riktigt kul och som det verkar riktigt bra.

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *