• Introduktion till GNU Binutils: En nybörjarguide

    Introduktion till GNU Binutils: En Nybörjarguide

    GNU Binutils för Nybörjare: Kompilera, Länka och Felsöka Programvara

    Vad är GNU Binutils?

    GNU Binutils (förkortning av ”Binary Utilities”) är en uppsättning kommandoradsverktyg för att hantera objektfiler, körbara filer och binära data. Dessa verktyg används för uppgifter som att assemblra kod, länka bibliotek, disassemblra körbara filer och analysera kompilerade program.

    Paketet Binutils innehåller några av de viktigaste verktygen i en utvecklares verktygslåda, såsom:

    • as (assemblatorn)
    • ld (länkaren)
    • objdump (för att inspektera binärfiler)
    • nm (för att lista symboler i objektfiler)
    • readelf (för att läsa information om ELF-filer)
    • strings (för att extrahera läsbar text från binärfiler)
    • strip (för att ta bort onödig data från binärfiler)
    • size (för att visa sektionernas storlekar)
    • objcopy (för att kopiera och modifiera objektfiler)
    • addr2line (för att koppla adresser till källkod)
    • ar (för att skapa och hantera arkiv)

    Fördelar

    Om du sysslar med programmering (särskilt i språk som C eller C++) och systemadministration kommer du förr eller senare att stöta på GNU Binutils.

    • För utvecklare: Binutils är ett måste för att kompilera och felsöka programvara.
    • För systemadministratörer: Dessa verktyg hjälper till att analysera körbara filer för säkerhet och kompatibilitet.
    • För de som sysslar med reverse engineering: Binutils gör det möjligt att inspektera och modifiera binärfiler.
    • För hobbyister: Binutils hjälper dig att förstå hur körbara filer fungerar under ytan.
    • Många populära utvecklingsmiljöer och operativsystem förlitar sig på Binutils i bakgrunden.
    • Binutils är öppen källkod: Du kan använda, modifiera och distribuera dessa verktyg utan att oroa dig för licensavgifter.

    Kort sagt kan förståelse för Binutils göra dig till en mer effektiv och skicklig programmerare eller systemadministratör.


    Hur Man Använder GNU Binutils Verktyg

    Låt oss gå igenom några av de viktigaste verktygen i GNU Binutils och hur de kan hjälpa dig.

    1. as: GNU Assemblator

    as konverterar assemblerkod till maskinkod.

    Exempel:

    as hello.s -o hello.o
    

    Detta kompilerar en assembler-källfil (hello.s) till en objektfil (hello.o).

    2. ld: GNU Länkare

    ld länkar objektfiler för att skapa en körbar fil.

    Exempel:

    ld -o hello hello.o
    

    Detta länkar hello.o till en körbar fil kallad hello.

    3. objdump: Inspektera Körbara Filer

    objdump visar detaljerad information om objektfiler och körbara filer.

    Exempel:

    objdump -d /bin/ls | less
    

    Detta disassemblrar kommandot ls, vilket visar dess assemblerinstruktioner.

    4. nm: Lista Symboler i en Binär

    nm listar symboler (funktioner och variabler) i en objektfil eller körbar fil.

    Exempel:

    nm hello.o | head
    

    Detta visar de första symbolerna i objektfilen hello.o.

    5. readelf: Läs ELF-huvuden

    readelf ger detaljerad information om ELF-filer (Executable and Linkable Format).

    Exempel:

    readelf -h /bin/ls
    

    Detta visar ELF-huvudet för kommandot ls.

    6. strings: Extrahera Läsbar Text från Binärfiler

    Verktyget strings hittar och extraherar läsbar text från binärfiler.

    Exempel:

    strings /bin/ls | grep "Usage"
    

    Detta söker efter användningsmeddelanden inuti binärfilen ls.

    7. strip: Minska Binärfilens Storlek genom att Ta Bort Symboler

    Kommandot strip tar bort onödiga symboler från körbara filer, vilket minskar deras storlek.

    Exempel:

    strip myprogram
    

    Detta minimerar storleken på myprogram genom att ta bort felsökningssymboler.

    8. size: Visa Sektioners Storlek

    Verktyget size visar minnesanvändningen för olika sektioner i en objektfil.

    Exempel:

    size /bin/ls
    

    Detta visar storleken på text-, data- och bss-segmenten (oinitierad data) för ls.

    9. objcopy: Kopiera och Modifiera Objektfiler

    Verktyget objcopy låter dig manipulera objektfiler.

    Exempel:

    objcopy --only-keep-debug myprogram myprogram.debug
    

    Detta extraherar felsökningssymboler till en separat fil.

    10. addr2line: Kartlägga Adresser till Källkod

    Kommandot addr2line hjälper till att koppla en minnesadress till motsvarande rad i källkoden.

    Exempel:

    addr2line -e /bin/ls 0x4005a0
    

    Detta visar vilken rad i ls-källkoden som motsvarar minnesadressen 0x4005a0.

    11. ar: Arkivverktyget

    Verktyget ar används för att skapa och hantera arkiv med objektfiler. Dessa arkiv, ofta kallade statiska bibliotek, kan länkas in i dina program för att återanvända kod.

    Exempel:
    Du kan skapa ett bibliotek med:

    ar rcs libmylib.a file1.o file2.o
    

    och sedan länka det till ditt program.


    Praktiskt Exempel: Felsökning av ett Enkelt C-program

    Som tidigare nämnts är GNU Binutils en samling binärverktyg som är avgörande för att arbeta med körbara filer, objektfiler och bibliotek i Linux. Dessa verktyg är användbara för felsökning, disassemblering och analys av binärfiler.

    I följande exempel kommer vi att använda objdump, nm och readelf för att felsöka.

    Översikt över Verktygen

    • objdump: Disassemblerar binärfiler, visar objektfilsektioner och extraherar information från körbara filer.
    • nm: Visar symboler (funktioner, variabler, etc.) från objektfiler.
    • readelf: Visar detaljerad information om ELF-filer (Executable and Linkable Format).

    Skapa ett Exempelprogram i C

    Låt oss börja med att skriva ett enkelt C-program, kompilera det och sedan analysera det med Binutils.

Introduktion till GNU Binutils: En nybörjarguide

Introduktion till GNU Binutils: En Nybörjarguide

GNU Binutils för Nybörjare: Kompilera, Länka och Felsöka Programvara

Vad är GNU Binutils?

GNU Binutils (förkortning av ”Binary Utilities”) är en uppsättning kommandoradsverktyg för att hantera objektfiler, körbara filer och binära data. Dessa verktyg används för uppgifter som att assemblra kod, länka bibliotek, disassemblra körbara filer och analysera kompilerade program.

Paketet Binutils innehåller några av de viktigaste verktygen i en utvecklares verktygslåda, såsom:

  • as (assemblatorn)
  • ld (länkaren)
  • objdump (för att inspektera binärfiler)
  • nm (för att lista symboler i objektfiler)
  • readelf (för att läsa information om ELF-filer)
  • strings (för att extrahera läsbar text från binärfiler)
  • strip (för att ta bort onödig data från binärfiler)
  • size (för att visa sektionernas storlekar)
  • objcopy (för att kopiera och modifiera objektfiler)
  • addr2line (för att koppla adresser till källkod)
  • ar (för att skapa och hantera arkiv)

Fördelar

Om du sysslar med programmering (särskilt i språk som C eller C++) och systemadministration kommer du förr eller senare att stöta på GNU Binutils.

  • För utvecklare: Binutils är ett måste för att kompilera och felsöka programvara.
  • För systemadministratörer: Dessa verktyg hjälper till att analysera körbara filer för säkerhet och kompatibilitet.
  • För de som sysslar med reverse engineering: Binutils gör det möjligt att inspektera och modifiera binärfiler.
  • För hobbyister: Binutils hjälper dig att förstå hur körbara filer fungerar under ytan.
  • Många populära utvecklingsmiljöer och operativsystem förlitar sig på Binutils i bakgrunden.
  • Binutils är öppen källkod: Du kan använda, modifiera och distribuera dessa verktyg utan att oroa dig för licensavgifter.

Kort sagt kan förståelse för Binutils göra dig till en mer effektiv och skicklig programmerare eller systemadministratör.


Hur Man Använder GNU Binutils Verktyg

Låt oss gå igenom några av de viktigaste verktygen i GNU Binutils och hur de kan hjälpa dig.

1. as: GNU Assemblator

as konverterar assemblerkod till maskinkod.

Exempel:

as hello.s -o hello.o

Detta kompilerar en assembler-källfil (hello.s) till en objektfil (hello.o).

2. ld: GNU Länkare

ld länkar objektfiler för att skapa en körbar fil.

Exempel:

ld -o hello hello.o

Detta länkar hello.o till en körbar fil kallad hello.

3. objdump: Inspektera Körbara Filer

objdump visar detaljerad information om objektfiler och körbara filer.

Exempel:

objdump -d /bin/ls | less

Detta disassemblrar kommandot ls, vilket visar dess assemblerinstruktioner.

4. nm: Lista Symboler i en Binär

nm listar symboler (funktioner och variabler) i en objektfil eller körbar fil.

Exempel:

nm hello.o | head

Detta visar de första symbolerna i objektfilen hello.o.

5. readelf: Läs ELF-huvuden

readelf ger detaljerad information om ELF-filer (Executable and Linkable Format).

Exempel:

readelf -h /bin/ls

Detta visar ELF-huvudet för kommandot ls.

6. strings: Extrahera Läsbar Text från Binärfiler

Verktyget strings hittar och extraherar läsbar text från binärfiler.

Exempel:

strings /bin/ls | grep "Usage"

Detta söker efter användningsmeddelanden inuti binärfilen ls.

7. strip: Minska Binärfilens Storlek genom att Ta Bort Symboler

Kommandot strip tar bort onödiga symboler från körbara filer, vilket minskar deras storlek.

Exempel:

strip myprogram

Detta minimerar storleken på myprogram genom att ta bort felsökningssymboler.

8. size: Visa Sektioners Storlek

Verktyget size visar minnesanvändningen för olika sektioner i en objektfil.

Exempel:

size /bin/ls

Detta visar storleken på text-, data- och bss-segmenten (oinitierad data) för ls.

9. objcopy: Kopiera och Modifiera Objektfiler

Verktyget objcopy låter dig manipulera objektfiler.

Exempel:

objcopy --only-keep-debug myprogram myprogram.debug

Detta extraherar felsökningssymboler till en separat fil.

10. addr2line: Kartlägga Adresser till Källkod

Kommandot addr2line hjälper till att koppla en minnesadress till motsvarande rad i källkoden.

Exempel:

addr2line -e /bin/ls 0x4005a0

Detta visar vilken rad i ls-källkoden som motsvarar minnesadressen 0x4005a0.

11. ar: Arkivverktyget

Verktyget ar används för att skapa och hantera arkiv med objektfiler. Dessa arkiv, ofta kallade statiska bibliotek, kan länkas in i dina program för att återanvända kod.

Exempel:
Du kan skapa ett bibliotek med:

ar rcs libmylib.a file1.o file2.o

och sedan länka det till ditt program.


Praktiskt Exempel: Felsökning av ett Enkelt C-program

Som tidigare nämnts är GNU Binutils en samling binärverktyg som är avgörande för att arbeta med körbara filer, objektfiler och bibliotek i Linux. Dessa verktyg är användbara för felsökning, disassemblering och analys av binärfiler.

I följande exempel kommer vi att använda objdump, nm och readelf för att felsöka.

Översikt över Verktygen

  • objdump: Disassemblerar binärfiler, visar objektfilsektioner och extraherar information från körbara filer.
  • nm: Visar symboler (funktioner, variabler, etc.) från objektfiler.
  • readelf: Visar detaljerad information om ELF-filer (Executable and Linkable Format).

Skapa ett Exempelprogram i C

Låt oss börja med att skriva ett enkelt C-program, kompilera det och sedan analysera det med Binutils.